diff options
Diffstat (limited to 'drivers/misc')
-rw-r--r-- | drivers/misc/sony-laptop.c | 151 |
1 files changed, 78 insertions, 73 deletions
diff --git a/drivers/misc/sony-laptop.c b/drivers/misc/sony-laptop.c index 4a69ce7cc6b..d7b5330a7bc 100644 --- a/drivers/misc/sony-laptop.c +++ b/drivers/misc/sony-laptop.c @@ -52,21 +52,23 @@ MODULE_LICENSE("GPL"); static int debug; module_param(debug, int, 0); MODULE_PARM_DESC(debug, "set this to 1 (and RTFM) if you want to help " - "the development of this driver"); + "the development of this driver"); -static ssize_t sony_acpi_show(struct device *, struct device_attribute *, char *); -static ssize_t sony_acpi_store(struct device *, struct device_attribute *, const char *, size_t); +static ssize_t sony_acpi_show(struct device *, struct device_attribute *, + char *); +static ssize_t sony_acpi_store(struct device *, struct device_attribute *, + const char *, size_t); struct sony_acpi_value { - char *name; /* name of the entry */ - char **acpiget; /* names of the ACPI get function */ - char **acpiset; /* names of the ACPI set function */ - int min; /* minimum allowed value or -1 */ - int max; /* maximum allowed value or -1 */ - int value; /* current setting */ - int valid; /* Has ever been set */ - int debug; /* active only in debug mode ? */ - struct device_attribute devattr; /* sysfs atribute */ + char *name; /* name of the entry */ + char **acpiget; /* names of the ACPI get function */ + char **acpiset; /* names of the ACPI set function */ + int min; /* minimum allowed value or -1 */ + int max; /* maximum allowed value or -1 */ + int value; /* current setting */ + int valid; /* Has ever been set */ + int debug; /* active only in debug mode ? */ + struct device_attribute devattr; /* sysfs atribute */ }; #define HANDLE_NAMES(_name, _values...) \ @@ -111,16 +113,18 @@ HANDLE_NAMES(CMI_get, "GCMI"); HANDLE_NAMES(CMI_set, "SCMI"); static struct sony_acpi_value sony_acpi_values[] = { - SONY_ACPI_VALUE(brightness_default, snc_brightness_def_get, snc_brightness_def_set, 1, SONY_MAX_BRIGHTNESS, 0), - SONY_ACPI_VALUE(fnkey, snc_fnkey_get, NULL, -1, -1, 0), - SONY_ACPI_VALUE(cdpower, snc_cdpower_get, snc_cdpower_set, 0, 1, 0), - SONY_ACPI_VALUE(audiopower, snc_audiopower_get, snc_audiopower_set, 0, 1, 0), - SONY_ACPI_VALUE(lanpower, snc_lanpower_get, snc_lanpower_set, 0, 1, 1), + SONY_ACPI_VALUE(brightness_default, snc_brightness_def_get, + snc_brightness_def_set, 1, SONY_MAX_BRIGHTNESS, 0), + SONY_ACPI_VALUE(fnkey, snc_fnkey_get, NULL, -1, -1, 0), + SONY_ACPI_VALUE(cdpower, snc_cdpower_get, snc_cdpower_set, 0, 1, 0), + SONY_ACPI_VALUE(audiopower, snc_audiopower_get, snc_audiopower_set, 0, + 1, 0), + SONY_ACPI_VALUE(lanpower, snc_lanpower_get, snc_lanpower_set, 0, 1, 1), /* unknown methods */ - SONY_ACPI_VALUE(PID, snc_PID_get, NULL, -1, -1, 1), - SONY_ACPI_VALUE(CTR, snc_CTR_get, snc_CTR_set, -1, -1, 1), - SONY_ACPI_VALUE(PCR, snc_PCR_get, snc_PCR_set, -1, -1, 1), - SONY_ACPI_VALUE(CMI, snc_CMI_get, snc_CMI_set, -1, -1, 1), + SONY_ACPI_VALUE(PID, snc_PID_get, NULL, -1, -1, 1), + SONY_ACPI_VALUE(CTR, snc_CTR_get, snc_CTR_set, -1, -1, 1), + SONY_ACPI_VALUE(PCR, snc_PCR_get, snc_PCR_set, -1, -1, 1), + SONY_ACPI_VALUE(CMI, snc_CMI_get, snc_CMI_set, -1, -1, 1), SONY_ACPI_VALUE_NULL }; @@ -189,10 +193,11 @@ static int acpi_callsetfunc(acpi_handle handle, char *name, int value, * Sysfs show/store common to all sony_acpi_values */ static ssize_t sony_acpi_show(struct device *dev, struct device_attribute *attr, - char *buffer) + char *buffer) { int value; - struct sony_acpi_value *item = container_of(attr, struct sony_acpi_value, devattr); + struct sony_acpi_value *item = + container_of(attr, struct sony_acpi_value, devattr); if (!*item->acpiget) return -EIO; @@ -203,11 +208,13 @@ static ssize_t sony_acpi_show(struct device *dev, struct device_attribute *attr, return snprintf(buffer, PAGE_SIZE, "%d\n", value); } -static ssize_t sony_acpi_store(struct device *dev, struct device_attribute *attr, - const char *buffer, size_t count) +static ssize_t sony_acpi_store(struct device *dev, + struct device_attribute *attr, + const char *buffer, size_t count) { int value; - struct sony_acpi_value *item = container_of(attr, struct sony_acpi_value, devattr); + struct sony_acpi_value *item = + container_of(attr, struct sony_acpi_value, devattr); if (!item->acpiset) return -EIO; @@ -234,9 +241,9 @@ static ssize_t sony_acpi_store(struct device *dev, struct device_attribute *attr */ static struct platform_driver sncpf_driver = { .driver = { - .name = "sony-laptop", - .owner = THIS_MODULE, - } + .name = "sony-laptop", + .owner = THIS_MODULE, + } }; static struct platform_device *sncpf_device; @@ -268,12 +275,11 @@ static int sony_snc_pf_add(void) /* find the available acpiget as described in the DSDT */ for (; item->acpiget && *item->acpiget; ++item->acpiget) { if (ACPI_SUCCESS(acpi_get_handle(sony_acpi_handle, - *item->acpiget, - &handle))) { + *item->acpiget, + &handle))) { if (debug) printk(LOG_PFX "Found %s getter: %s\n", - item->name, - *item->acpiget); + item->name, *item->acpiget); item->devattr.attr.mode |= S_IRUGO; break; } @@ -282,36 +288,37 @@ static int sony_snc_pf_add(void) /* find the available acpiset as described in the DSDT */ for (; item->acpiset && *item->acpiset; ++item->acpiset) { if (ACPI_SUCCESS(acpi_get_handle(sony_acpi_handle, - *item->acpiset, - &handle))) { + *item->acpiset, + &handle))) { if (debug) printk(LOG_PFX "Found %s setter: %s\n", - item->name, - *item->acpiset); + item->name, *item->acpiset); item->devattr.attr.mode |= S_IWUSR; break; } } - if (item->devattr.attr.mode != 0) { - ret = device_create_file(&sncpf_device->dev, &item->devattr); - if (ret) - goto out_sysfs; - } + if (item->devattr.attr.mode != 0) { + ret = + device_create_file(&sncpf_device->dev, + &item->devattr); + if (ret) + goto out_sysfs; + } } return 0; -out_sysfs: + out_sysfs: for (item = sony_acpi_values; item->name; ++item) { device_remove_file(&sncpf_device->dev, &item->devattr); } platform_device_del(sncpf_device); -out_platform_alloced: + out_platform_alloced: platform_device_put(sncpf_device); -out_platform_registered: + out_platform_registered: platform_driver_unregister(&sncpf_driver); -out: + out: return ret; } @@ -334,8 +341,7 @@ static void sony_snc_pf_remove(void) static int sony_backlight_update_status(struct backlight_device *bd) { return acpi_callsetfunc(sony_acpi_handle, "SBRT", - bd->props->brightness + 1, - NULL); + bd->props->brightness + 1, NULL); } static int sony_backlight_get_brightness(struct backlight_device *bd) @@ -350,10 +356,10 @@ static int sony_backlight_get_brightness(struct backlight_device *bd) static struct backlight_device *sony_backlight_device; static struct backlight_properties sony_backlight_properties = { - .owner = THIS_MODULE, - .update_status = sony_backlight_update_status, - .get_brightness = sony_backlight_get_brightness, - .max_brightness = SONY_MAX_BRIGHTNESS - 1, + .owner = THIS_MODULE, + .update_status = sony_backlight_update_status, + .get_brightness = sony_backlight_get_brightness, + .max_brightness = SONY_MAX_BRIGHTNESS - 1, }; /* @@ -372,8 +378,8 @@ static acpi_status sony_walk_callback(acpi_handle handle, u32 level, struct acpi_namespace_node *node; union acpi_operand_object *operand; - node = (struct acpi_namespace_node *) handle; - operand = (union acpi_operand_object *) node->object; + node = (struct acpi_namespace_node *)handle; + operand = (union acpi_operand_object *)node->object; printk(LOG_PFX "method: name: %4.4s, args %X\n", node->name.ascii, (u32) operand->method.param_count); @@ -394,7 +400,7 @@ static int sony_acpi_resume(struct acpi_device *device) if (!item->valid) continue; ret = acpi_callsetfunc(sony_acpi_handle, *item->acpiset, - item->value, NULL); + item->value, NULL); if (ret < 0) { printk("%s: %d\n", __FUNCTION__, ret); break; @@ -425,8 +431,7 @@ static int sony_acpi_add(struct acpi_device *device) status = acpi_install_notify_handler(sony_acpi_handle, ACPI_DEVICE_NOTIFY, - sony_acpi_notify, - NULL); + sony_acpi_notify, NULL); if (ACPI_FAILURE(status)) { printk(LOG_PFX "unable to install notify handler\n"); result = -ENODEV; @@ -435,15 +440,16 @@ static int sony_acpi_add(struct acpi_device *device) if (ACPI_SUCCESS(acpi_get_handle(sony_acpi_handle, "GBRT", &handle))) { sony_backlight_device = backlight_device_register("sony", NULL, - NULL, &sony_backlight_properties); + NULL, + &sony_backlight_properties); - if (IS_ERR(sony_backlight_device)) { + if (IS_ERR(sony_backlight_device)) { printk(LOG_PFX "unable to register backlight device\n"); sony_backlight_device = NULL; - } - else + } else sony_backlight_properties.brightness = - sony_backlight_get_brightness(sony_backlight_device); + sony_backlight_get_brightness + (sony_backlight_device); } if (sony_snc_pf_add()) @@ -453,7 +459,7 @@ static int sony_acpi_add(struct acpi_device *device) return 0; -outbacklight: + outbacklight: if (sony_backlight_device) backlight_device_unregister(sony_backlight_device); @@ -462,7 +468,7 @@ outbacklight: sony_acpi_notify); if (ACPI_FAILURE(status)) printk(LOG_PFX "unable to remove notify handler\n"); -outwalk: + outwalk: return result; } @@ -489,14 +495,14 @@ static int sony_acpi_remove(struct acpi_device *device, int type) } static struct acpi_driver sony_acpi_driver = { - .name = ACPI_SNC_DRIVER_NAME, - .class = ACPI_SNC_CLASS, - .ids = ACPI_SNC_HID, - .ops = { - .add = sony_acpi_add, - .remove = sony_acpi_remove, - .resume = sony_acpi_resume, - }, + .name = ACPI_SNC_DRIVER_NAME, + .class = ACPI_SNC_CLASS, + .ids = ACPI_SNC_HID, + .ops = { + .add = sony_acpi_add, + .remove = sony_acpi_remove, + .resume = sony_acpi_resume, + }, }; static int __init sony_acpi_init(void) @@ -504,7 +510,6 @@ static int __init sony_acpi_init(void) return acpi_bus_register_driver(&sony_acpi_driver); } - static void __exit sony_acpi_exit(void) { acpi_bus_unregister_driver(&sony_acpi_driver); |