diff --git a/drivers/acpi/event.c b/drivers/acpi/event.c
index 43c49f6..ce8d3ee 100644
--- a/drivers/acpi/event.c
+++ b/drivers/acpi/event.c
@@ -24,27 +24,23 @@
 static int
 acpi_system_open_event(struct inode *inode, struct file *file)
 {
-	spin_lock_irq (&acpi_system_event_lock);
+	spin_lock_irq(&acpi_system_event_lock);
 
-	if(event_is_open)
+	if (event_is_open)
 		goto out_busy;
 
 	event_is_open = 1;
 
-	spin_unlock_irq (&acpi_system_event_lock);
+	spin_unlock_irq(&acpi_system_event_lock);
 	return 0;
 
 out_busy:
-	spin_unlock_irq (&acpi_system_event_lock);
+	spin_unlock_irq(&acpi_system_event_lock);
 	return -EBUSY;
 }
 
 static ssize_t
-acpi_system_read_event (
-	struct file		*file,
-	char			__user *buffer,
-	size_t			count,
-	loff_t			*ppos)
+acpi_system_read_event(struct file *file, char __user *buffer, size_t count, loff_t *ppos)
 {
 	int			result = 0;
 	struct acpi_bus_event	event;
@@ -98,9 +94,7 @@
 }
 
 static unsigned int
-acpi_system_poll_event(
-	struct file		*file,
-	poll_table		*wait)
+acpi_system_poll_event(struct file *file, poll_table *wait)
 {
 	poll_wait(file, &acpi_bus_event_queue, wait);
 	if (!list_empty(&acpi_bus_event_list))
diff --git a/drivers/acpi/fan.c b/drivers/acpi/fan.c
index 14192ee..2ee1d06 100644
--- a/drivers/acpi/fan.c
+++ b/drivers/acpi/fan.c
@@ -37,11 +37,8 @@
 
 #define ACPI_FAN_COMPONENT		0x00200000
 #define ACPI_FAN_CLASS			"fan"
-#define ACPI_FAN_HID			"PNP0C0B"
 #define ACPI_FAN_DRIVER_NAME		"ACPI Fan Driver"
-#define ACPI_FAN_DEVICE_NAME		"Fan"
 #define ACPI_FAN_FILE_STATE		"state"
-#define ACPI_FAN_NOTIFY_STATUS		0x80
 
 #define _COMPONENT		ACPI_FAN_COMPONENT
 ACPI_MODULE_NAME		("acpi_fan")
@@ -56,7 +53,7 @@
 static struct acpi_driver acpi_fan_driver = {
 	.name =		ACPI_FAN_DRIVER_NAME,
 	.class =	ACPI_FAN_CLASS,
-	.ids =		ACPI_FAN_HID,
+	.ids =		"PNP0C0B",
 	.ops =		{
 				.add =		acpi_fan_add,
 				.remove =	acpi_fan_remove,
@@ -76,7 +73,7 @@
 
 
 static int
-acpi_fan_read_state (struct seq_file *seq, void *offset)
+acpi_fan_read_state(struct seq_file *seq, void *offset)
 {
 	struct acpi_fan		*fan = seq->private;
 	int			state = 0;
@@ -99,11 +96,8 @@
 }
 
 static ssize_t
-acpi_fan_write_state (
-	struct file		*file,
-	const char		__user *buffer,
-	size_t			count,
-	loff_t			*ppos)
+acpi_fan_write_state(struct file *file, const char __user *buffer, 
+		     size_t count, loff_t *ppos)
 {
 	int			result = 0;
 	struct seq_file		*m = (struct seq_file *)file->private_data;
@@ -138,8 +132,7 @@
 };
 
 static int
-acpi_fan_add_fs (
-	struct acpi_device	*device)
+acpi_fan_add_fs(struct acpi_device *device)
 {
 	struct proc_dir_entry	*entry = NULL;
 
@@ -174,8 +167,7 @@
 
 
 static int
-acpi_fan_remove_fs (
-	struct acpi_device	*device)
+acpi_fan_remove_fs(struct acpi_device *device)
 {
 	ACPI_FUNCTION_TRACE("acpi_fan_remove_fs");
 
@@ -195,8 +187,7 @@
    -------------------------------------------------------------------------- */
 
 static int
-acpi_fan_add (
-	struct acpi_device	*device)
+acpi_fan_add(struct acpi_device *device)
 {
 	int			result = 0;
 	struct acpi_fan		*fan = NULL;
@@ -213,7 +204,7 @@
 	memset(fan, 0, sizeof(struct acpi_fan));
 
 	fan->handle = device->handle;
-	strcpy(acpi_device_name(device), ACPI_FAN_DEVICE_NAME);
+	strcpy(acpi_device_name(device), "Fan");
 	strcpy(acpi_device_class(device), ACPI_FAN_CLASS);
 	acpi_driver_data(device) = fan;
 
@@ -241,11 +232,9 @@
 
 
 static int
-acpi_fan_remove (
-	struct acpi_device	*device,
-	int			type)
+acpi_fan_remove(struct acpi_device *device, int type)
 {
-	struct acpi_fan		*fan = NULL;
+	struct acpi_fan *fan = NULL;
 
 	ACPI_FUNCTION_TRACE("acpi_fan_remove");
 
@@ -263,9 +252,9 @@
 
 
 static int __init
-acpi_fan_init (void)
+acpi_fan_init(void)
 {
-	int			result = 0;
+	int result = 0;
 
 	ACPI_FUNCTION_TRACE("acpi_fan_init");
 
@@ -285,7 +274,7 @@
 
 
 static void __exit
-acpi_fan_exit (void)
+acpi_fan_exit(void)
 {
 	ACPI_FUNCTION_TRACE("acpi_fan_exit");
 
diff --git a/drivers/acpi/pci_link.c b/drivers/acpi/pci_link.c
index 26aa382..e8334ce 100644
--- a/drivers/acpi/pci_link.c
+++ b/drivers/acpi/pci_link.c
@@ -529,8 +529,7 @@
 
 static int acpi_irq_balance;	/* 0: static, 1: balance */
 
-static int acpi_pci_link_allocate(
-	struct acpi_pci_link	*link)
+static int acpi_pci_link_allocate(struct acpi_pci_link	*link)
 {
 	int			irq;
 	int			i;
@@ -718,8 +717,7 @@
    -------------------------------------------------------------------------- */
 
 static int
-acpi_pci_link_add (
-	struct acpi_device *device)
+acpi_pci_link_add(struct acpi_device *device)
 {
 	int			result = 0;
 	struct acpi_pci_link	*link = NULL;
@@ -827,9 +825,7 @@
 
 
 static int
-acpi_pci_link_remove (
-	struct acpi_device	*device,
-	int			type)
+acpi_pci_link_remove(struct acpi_device *device, int type)
 {
 	struct acpi_pci_link *link = NULL;
 
diff --git a/drivers/acpi/sleep/proc.c b/drivers/acpi/sleep/proc.c
index 1be99f0..a962fc2 100644
--- a/drivers/acpi/sleep/proc.c
+++ b/drivers/acpi/sleep/proc.c
@@ -13,13 +13,6 @@
 
 #include "sleep.h"
 
-#ifdef	CONFIG_ACPI_SLEEP_PROC_SLEEP
-#define ACPI_SYSTEM_FILE_SLEEP		"sleep"
-#endif
-
-#define ACPI_SYSTEM_FILE_ALARM		"alarm"
-#define ACPI_SYSTEM_FILE_WAKEUP_DEVICE   "wakeup"
-
 #define _COMPONENT		ACPI_SYSTEM_COMPONENT
 ACPI_MODULE_NAME		("sleep")
 
@@ -378,14 +371,10 @@
 		if (!dev->wakeup.flags.valid)
 			continue;
 		spin_unlock(&acpi_device_lock);
-		if (dev->wakeup.flags.run_wake)
-			seq_printf(seq, "%4s	%4d		%8s\n",
-				dev->pnp.bus_id, (u32) dev->wakeup.sleep_state,
-				dev->wakeup.state.enabled ? "*enabled" : "*disabled");
-		else
-			seq_printf(seq, "%4s	%4d		%8s\n",
-				dev->pnp.bus_id, (u32) dev->wakeup.sleep_state,
-				dev->wakeup.state.enabled ? "enabled" : "disabled");
+		seq_printf(seq, "%4s	%4d		%s%8s\n",
+			   dev->pnp.bus_id, (u32) dev->wakeup.sleep_state,
+			   dev->wakeup.flags.run_wake ? "*" : "",
+			   dev->wakeup.state.enabled ? "enabled" : "disabled");
 		spin_lock(&acpi_device_lock);
 	}
 	spin_unlock(&acpi_device_lock);
@@ -486,28 +475,25 @@
 
 static int acpi_sleep_proc_init(void)
 {
-	struct proc_dir_entry	*entry = NULL;
+	struct proc_dir_entry *entry = NULL;
 
 	if (acpi_disabled)
 		return 0;
  
 #ifdef	CONFIG_ACPI_SLEEP_PROC_SLEEP
-	/* 'sleep' [R/W]*/
-	entry = create_proc_entry(ACPI_SYSTEM_FILE_SLEEP,
-				  S_IFREG|S_IRUGO|S_IWUSR, acpi_root_dir);
+	/* 'sleep' [R/W] */
+	entry = create_proc_entry("sleep", S_IFREG|S_IRUGO|S_IWUSR, acpi_root_dir);
 	if (entry)
 		entry->proc_fops = &acpi_system_sleep_fops;
 #endif
 
 	/* 'alarm' [R/W] */
-	entry = create_proc_entry(ACPI_SYSTEM_FILE_ALARM,
-		S_IFREG|S_IRUGO|S_IWUSR, acpi_root_dir);
+	entry = create_proc_entry("alarm", S_IFREG|S_IRUGO|S_IWUSR, acpi_root_dir);
 	if (entry)
 		entry->proc_fops = &acpi_system_alarm_fops;
 
-	/* 'wakeup device' [R/W]*/
-	entry = create_proc_entry(ACPI_SYSTEM_FILE_WAKEUP_DEVICE,
-				  S_IFREG|S_IRUGO|S_IWUSR, acpi_root_dir);
+	/* 'wakeup device' [R/W] */
+	entry = create_proc_entry("wakeup", S_IFREG|S_IRUGO|S_IWUSR, acpi_root_dir);
 	if (entry)
 		entry->proc_fops = &acpi_system_wakeup_device_fops;
 
