X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Facpi%2Ffan.c;h=e8165c4f162a238bb9627539e32de41e767846e0;hb=9464c7cf61b9433057924c36e6e02f303a00e768;hp=045c89477e59b2929f125ac536226928e949a73a;hpb=41689045f6a3cbe0550e1d34e9cc20d2e8c432ba;p=linux-2.6.git diff --git a/drivers/acpi/fan.c b/drivers/acpi/fan.c index 045c89477..e8165c4f1 100644 --- a/drivers/acpi/fan.c +++ b/drivers/acpi/fan.c @@ -48,8 +48,6 @@ MODULE_LICENSE("GPL"); static int acpi_fan_add(struct acpi_device *device); static int acpi_fan_remove(struct acpi_device *device, int type); -static int acpi_fan_suspend(struct acpi_device *device, int state); -static int acpi_fan_resume(struct acpi_device *device, int state); static struct acpi_driver acpi_fan_driver = { .name = ACPI_FAN_DRIVER_NAME, @@ -58,13 +56,11 @@ static struct acpi_driver acpi_fan_driver = { .ops = { .add = acpi_fan_add, .remove = acpi_fan_remove, - .suspend = acpi_fan_suspend, - .resume = acpi_fan_resume, }, }; struct acpi_fan { - struct acpi_device * device; + acpi_handle handle; }; /* -------------------------------------------------------------------------- @@ -78,15 +74,16 @@ static int acpi_fan_read_state(struct seq_file *seq, void *offset) struct acpi_fan *fan = seq->private; int state = 0; + ACPI_FUNCTION_TRACE("acpi_fan_read_state"); if (fan) { - if (acpi_bus_get_power(fan->device->handle, &state)) + if (acpi_bus_get_power(fan->handle, &state)) seq_printf(seq, "status: ERROR\n"); else seq_printf(seq, "status: %s\n", !state ? "on" : "off"); } - return 0; + return_VALUE(0); } static int acpi_fan_state_open_fs(struct inode *inode, struct file *file) @@ -103,24 +100,25 @@ acpi_fan_write_state(struct file *file, const char __user * buffer, struct acpi_fan *fan = (struct acpi_fan *)m->private; char state_string[12] = { '\0' }; + ACPI_FUNCTION_TRACE("acpi_fan_write_state"); if (!fan || (count > sizeof(state_string) - 1)) - return -EINVAL; + return_VALUE(-EINVAL); if (copy_from_user(state_string, buffer, count)) - return -EFAULT; + return_VALUE(-EFAULT); state_string[count] = '\0'; - result = acpi_bus_set_power(fan->device->handle, + result = acpi_bus_set_power(fan->handle, simple_strtoul(state_string, NULL, 0)); if (result) - return result; + return_VALUE(result); - return count; + return_VALUE(count); } -static const struct file_operations acpi_fan_state_ops = { +static struct file_operations acpi_fan_state_ops = { .open = acpi_fan_state_open_fs, .read = seq_read, .write = acpi_fan_write_state, @@ -133,15 +131,16 @@ static int acpi_fan_add_fs(struct acpi_device *device) { struct proc_dir_entry *entry = NULL; + ACPI_FUNCTION_TRACE("acpi_fan_add_fs"); if (!device) - return -EINVAL; + return_VALUE(-EINVAL); if (!acpi_device_dir(device)) { acpi_device_dir(device) = proc_mkdir(acpi_device_bid(device), acpi_fan_dir); if (!acpi_device_dir(device)) - return -ENODEV; + return_VALUE(-ENODEV); acpi_device_dir(device)->owner = THIS_MODULE; } @@ -150,18 +149,21 @@ static int acpi_fan_add_fs(struct acpi_device *device) S_IFREG | S_IRUGO | S_IWUSR, acpi_device_dir(device)); if (!entry) - return -ENODEV; + ACPI_DEBUG_PRINT((ACPI_DB_ERROR, + "Unable to create '%s' fs entry\n", + ACPI_FAN_FILE_STATE)); else { entry->proc_fops = &acpi_fan_state_ops; entry->data = acpi_driver_data(device); entry->owner = THIS_MODULE; } - return 0; + return_VALUE(0); } static int acpi_fan_remove_fs(struct acpi_device *device) { + ACPI_FUNCTION_TRACE("acpi_fan_remove_fs"); if (acpi_device_dir(device)) { remove_proc_entry(ACPI_FAN_FILE_STATE, acpi_device_dir(device)); @@ -169,7 +171,7 @@ static int acpi_fan_remove_fs(struct acpi_device *device) acpi_device_dir(device) = NULL; } - return 0; + return_VALUE(0); } /* -------------------------------------------------------------------------- @@ -182,30 +184,28 @@ static int acpi_fan_add(struct acpi_device *device) struct acpi_fan *fan = NULL; int state = 0; + ACPI_FUNCTION_TRACE("acpi_fan_add"); if (!device) - return -EINVAL; + return_VALUE(-EINVAL); fan = kmalloc(sizeof(struct acpi_fan), GFP_KERNEL); if (!fan) - return -ENOMEM; + return_VALUE(-ENOMEM); memset(fan, 0, sizeof(struct acpi_fan)); - fan->device = device; + fan->handle = device->handle; strcpy(acpi_device_name(device), "Fan"); strcpy(acpi_device_class(device), ACPI_FAN_CLASS); acpi_driver_data(device) = fan; - result = acpi_bus_get_power(device->handle, &state); + result = acpi_bus_get_power(fan->handle, &state); if (result) { - printk(KERN_ERR PREFIX "Reading power state\n"); + ACPI_DEBUG_PRINT((ACPI_DB_ERROR, + "Error reading power state\n")); goto end; } - device->flags.force_power_state = 1; - acpi_bus_set_power(device->handle, state); - device->flags.force_power_state = 0; - result = acpi_fan_add_fs(device); if (result) goto end; @@ -218,16 +218,17 @@ static int acpi_fan_add(struct acpi_device *device) if (result) kfree(fan); - return result; + return_VALUE(result); } static int acpi_fan_remove(struct acpi_device *device, int type) { struct acpi_fan *fan = NULL; + ACPI_FUNCTION_TRACE("acpi_fan_remove"); if (!device || !acpi_driver_data(device)) - return -EINVAL; + return_VALUE(-EINVAL); fan = (struct acpi_fan *)acpi_driver_data(device); @@ -235,68 +236,38 @@ static int acpi_fan_remove(struct acpi_device *device, int type) kfree(fan); - return 0; -} - -static int acpi_fan_suspend(struct acpi_device *device, int state) -{ - if (!device) - return -EINVAL; - - acpi_bus_set_power(device->handle, ACPI_STATE_D0); - - return AE_OK; -} - -static int acpi_fan_resume(struct acpi_device *device, int state) -{ - int result = 0; - int power_state = 0; - - if (!device) - return -EINVAL; - - result = acpi_bus_get_power(device->handle, &power_state); - if (result) { - ACPI_DEBUG_PRINT((ACPI_DB_ERROR, - "Error reading fan power state\n")); - return result; - } - - device->flags.force_power_state = 1; - acpi_bus_set_power(device->handle, power_state); - device->flags.force_power_state = 0; - - return result; + return_VALUE(0); } static int __init acpi_fan_init(void) { int result = 0; + ACPI_FUNCTION_TRACE("acpi_fan_init"); acpi_fan_dir = proc_mkdir(ACPI_FAN_CLASS, acpi_root_dir); if (!acpi_fan_dir) - return -ENODEV; + return_VALUE(-ENODEV); acpi_fan_dir->owner = THIS_MODULE; result = acpi_bus_register_driver(&acpi_fan_driver); if (result < 0) { remove_proc_entry(ACPI_FAN_CLASS, acpi_root_dir); - return -ENODEV; + return_VALUE(-ENODEV); } - return 0; + return_VALUE(0); } static void __exit acpi_fan_exit(void) { + ACPI_FUNCTION_TRACE("acpi_fan_exit"); acpi_bus_unregister_driver(&acpi_fan_driver); remove_proc_entry(ACPI_FAN_CLASS, acpi_root_dir); - return; + return_VOID; } module_init(acpi_fan_init);