Loading drivers/acpi/asus_acpi.c +17 −1 Original line number Diff line number Diff line Loading @@ -1119,6 +1119,8 @@ static int asus_hotk_check(void) return result; } static int asus_hotk_found; static int asus_hotk_add(struct acpi_device *device) { acpi_status status = AE_OK; Loading Loading @@ -1180,6 +1182,8 @@ static int asus_hotk_add(struct acpi_device *device) } } asus_hotk_found = 1; end: if (result) { kfree(hotk); Loading Loading @@ -1226,7 +1230,19 @@ static int __init asus_acpi_init(void) asus_proc_dir->owner = THIS_MODULE; result = acpi_bus_register_driver(&asus_hotk_driver); if (result < 1) { if (result < 0) { remove_proc_entry(PROC_ASUS, acpi_root_dir); return -ENODEV; } /* * This is a bit of a kludge. We only want this module loaded * for ASUS systems, but there's currently no way to probe the * ACPI namespace for ASUS HIDs. So we just return failure if * we didn't find one, which will cause the module to be * unloaded. */ if (!asus_hotk_found) { acpi_bus_unregister_driver(&asus_hotk_driver); remove_proc_entry(PROC_ASUS, acpi_root_dir); return -ENODEV; Loading drivers/acpi/scan.c +9 −25 Original line number Diff line number Diff line Loading @@ -142,7 +142,7 @@ static void acpi_device_register(struct acpi_device *device, create_sysfs_device_files(device); } static int acpi_device_unregister(struct acpi_device *device, int type) static void acpi_device_unregister(struct acpi_device *device, int type) { spin_lock(&acpi_device_lock); if (device->parent) { Loading @@ -158,7 +158,6 @@ static int acpi_device_unregister(struct acpi_device *device, int type) acpi_detach_data(device->handle, acpi_bus_data_handler); remove_sysfs_device_files(device); kobject_unregister(&device->kobj); return 0; } void acpi_bus_data_handler(acpi_handle handle, u32 function, void *context) Loading Loading @@ -537,10 +536,9 @@ static int acpi_start_single_object(struct acpi_device *device) return_VALUE(result); } static int acpi_driver_attach(struct acpi_driver *drv) static void acpi_driver_attach(struct acpi_driver *drv) { struct list_head *node, *next; int count = 0; ACPI_FUNCTION_TRACE("acpi_driver_attach"); Loading @@ -557,7 +555,6 @@ static int acpi_driver_attach(struct acpi_driver *drv) if (!acpi_bus_driver_init(dev, drv)) { acpi_start_single_object(dev); atomic_inc(&drv->references); count++; ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Found driver [%s] for device [%s]\n", drv->name, dev->pnp.bus_id)); Loading @@ -566,10 +563,9 @@ static int acpi_driver_attach(struct acpi_driver *drv) spin_lock(&acpi_device_lock); } spin_unlock(&acpi_device_lock); return_VALUE(count); } static int acpi_driver_detach(struct acpi_driver *drv) static void acpi_driver_detach(struct acpi_driver *drv) { struct list_head *node, *next; Loading @@ -591,7 +587,6 @@ static int acpi_driver_detach(struct acpi_driver *drv) } } spin_unlock(&acpi_device_lock); return_VALUE(0); } /** Loading @@ -599,28 +594,22 @@ static int acpi_driver_detach(struct acpi_driver *drv) * @driver: driver being registered * * Registers a driver with the ACPI bus. Searches the namespace for all * devices that match the driver's criteria and binds. Returns the * number of devices that were claimed by the driver, or a negative * error status for failure. * devices that match the driver's criteria and binds. Returns zero for * success or a negative error status for failure. */ int acpi_bus_register_driver(struct acpi_driver *driver) { int count; ACPI_FUNCTION_TRACE("acpi_bus_register_driver"); if (acpi_disabled) return_VALUE(-ENODEV); if (!driver) return_VALUE(-EINVAL); spin_lock(&acpi_device_lock); list_add_tail(&driver->node, &acpi_bus_drivers); spin_unlock(&acpi_device_lock); count = acpi_driver_attach(driver); acpi_driver_attach(driver); return_VALUE(count); return_VALUE(0); } EXPORT_SYMBOL(acpi_bus_register_driver); Loading @@ -632,13 +621,8 @@ EXPORT_SYMBOL(acpi_bus_register_driver); * Unregisters a driver with the ACPI bus. Searches the namespace for all * devices that match the driver's criteria and unbinds. */ int acpi_bus_unregister_driver(struct acpi_driver *driver) void acpi_bus_unregister_driver(struct acpi_driver *driver) { ACPI_FUNCTION_TRACE("acpi_bus_unregister_driver"); if (!driver) return_VALUE(-EINVAL); acpi_driver_detach(driver); if (!atomic_read(&driver->references)) { Loading @@ -646,7 +630,7 @@ int acpi_bus_unregister_driver(struct acpi_driver *driver) list_del_init(&driver->node); spin_unlock(&acpi_device_lock); } return_VALUE(0); return; } EXPORT_SYMBOL(acpi_bus_unregister_driver); Loading drivers/char/sonypi.c +5 −5 Original line number Diff line number Diff line Loading @@ -512,7 +512,7 @@ static struct sonypi_device { #ifdef CONFIG_ACPI static struct acpi_device *sonypi_acpi_device; static int acpi_enabled; static int acpi_driver_registered; #endif static int sonypi_ec_write(u8 addr, u8 value) Loading Loading @@ -869,7 +869,7 @@ static irqreturn_t sonypi_irq(int irq, void *dev_id, struct pt_regs *regs) sonypi_report_input_event(event); #ifdef CONFIG_ACPI if (acpi_enabled) if (sonypi_acpi_device) acpi_bus_generate_event(sonypi_acpi_device, 1, event); #endif Loading Loading @@ -1551,8 +1551,8 @@ static int __init sonypi_init(void) goto err_free_device; #ifdef CONFIG_ACPI if (acpi_bus_register_driver(&sonypi_acpi_driver) > 0) acpi_enabled = 1; if (acpi_bus_register_driver(&sonypi_acpi_driver) >= 0) acpi_driver_registered = 1; #endif return 0; Loading @@ -1567,7 +1567,7 @@ static int __init sonypi_init(void) static void __exit sonypi_exit(void) { #ifdef CONFIG_ACPI if (acpi_enabled) if (acpi_driver_registered) acpi_bus_unregister_driver(&sonypi_acpi_driver); #endif platform_device_unregister(sonypi_platform_device); Loading include/acpi/acpi_bus.h +1 −1 Original line number Diff line number Diff line Loading @@ -327,7 +327,7 @@ int acpi_bus_set_power(acpi_handle handle, int state); int acpi_bus_generate_event(struct acpi_device *device, u8 type, int data); int acpi_bus_receive_event(struct acpi_bus_event *event); int acpi_bus_register_driver(struct acpi_driver *driver); int acpi_bus_unregister_driver(struct acpi_driver *driver); void acpi_bus_unregister_driver(struct acpi_driver *driver); int acpi_bus_add(struct acpi_device **child, struct acpi_device *parent, acpi_handle handle, int type); int acpi_bus_trim(struct acpi_device *start, int rmdevice); Loading Loading
drivers/acpi/asus_acpi.c +17 −1 Original line number Diff line number Diff line Loading @@ -1119,6 +1119,8 @@ static int asus_hotk_check(void) return result; } static int asus_hotk_found; static int asus_hotk_add(struct acpi_device *device) { acpi_status status = AE_OK; Loading Loading @@ -1180,6 +1182,8 @@ static int asus_hotk_add(struct acpi_device *device) } } asus_hotk_found = 1; end: if (result) { kfree(hotk); Loading Loading @@ -1226,7 +1230,19 @@ static int __init asus_acpi_init(void) asus_proc_dir->owner = THIS_MODULE; result = acpi_bus_register_driver(&asus_hotk_driver); if (result < 1) { if (result < 0) { remove_proc_entry(PROC_ASUS, acpi_root_dir); return -ENODEV; } /* * This is a bit of a kludge. We only want this module loaded * for ASUS systems, but there's currently no way to probe the * ACPI namespace for ASUS HIDs. So we just return failure if * we didn't find one, which will cause the module to be * unloaded. */ if (!asus_hotk_found) { acpi_bus_unregister_driver(&asus_hotk_driver); remove_proc_entry(PROC_ASUS, acpi_root_dir); return -ENODEV; Loading
drivers/acpi/scan.c +9 −25 Original line number Diff line number Diff line Loading @@ -142,7 +142,7 @@ static void acpi_device_register(struct acpi_device *device, create_sysfs_device_files(device); } static int acpi_device_unregister(struct acpi_device *device, int type) static void acpi_device_unregister(struct acpi_device *device, int type) { spin_lock(&acpi_device_lock); if (device->parent) { Loading @@ -158,7 +158,6 @@ static int acpi_device_unregister(struct acpi_device *device, int type) acpi_detach_data(device->handle, acpi_bus_data_handler); remove_sysfs_device_files(device); kobject_unregister(&device->kobj); return 0; } void acpi_bus_data_handler(acpi_handle handle, u32 function, void *context) Loading Loading @@ -537,10 +536,9 @@ static int acpi_start_single_object(struct acpi_device *device) return_VALUE(result); } static int acpi_driver_attach(struct acpi_driver *drv) static void acpi_driver_attach(struct acpi_driver *drv) { struct list_head *node, *next; int count = 0; ACPI_FUNCTION_TRACE("acpi_driver_attach"); Loading @@ -557,7 +555,6 @@ static int acpi_driver_attach(struct acpi_driver *drv) if (!acpi_bus_driver_init(dev, drv)) { acpi_start_single_object(dev); atomic_inc(&drv->references); count++; ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Found driver [%s] for device [%s]\n", drv->name, dev->pnp.bus_id)); Loading @@ -566,10 +563,9 @@ static int acpi_driver_attach(struct acpi_driver *drv) spin_lock(&acpi_device_lock); } spin_unlock(&acpi_device_lock); return_VALUE(count); } static int acpi_driver_detach(struct acpi_driver *drv) static void acpi_driver_detach(struct acpi_driver *drv) { struct list_head *node, *next; Loading @@ -591,7 +587,6 @@ static int acpi_driver_detach(struct acpi_driver *drv) } } spin_unlock(&acpi_device_lock); return_VALUE(0); } /** Loading @@ -599,28 +594,22 @@ static int acpi_driver_detach(struct acpi_driver *drv) * @driver: driver being registered * * Registers a driver with the ACPI bus. Searches the namespace for all * devices that match the driver's criteria and binds. Returns the * number of devices that were claimed by the driver, or a negative * error status for failure. * devices that match the driver's criteria and binds. Returns zero for * success or a negative error status for failure. */ int acpi_bus_register_driver(struct acpi_driver *driver) { int count; ACPI_FUNCTION_TRACE("acpi_bus_register_driver"); if (acpi_disabled) return_VALUE(-ENODEV); if (!driver) return_VALUE(-EINVAL); spin_lock(&acpi_device_lock); list_add_tail(&driver->node, &acpi_bus_drivers); spin_unlock(&acpi_device_lock); count = acpi_driver_attach(driver); acpi_driver_attach(driver); return_VALUE(count); return_VALUE(0); } EXPORT_SYMBOL(acpi_bus_register_driver); Loading @@ -632,13 +621,8 @@ EXPORT_SYMBOL(acpi_bus_register_driver); * Unregisters a driver with the ACPI bus. Searches the namespace for all * devices that match the driver's criteria and unbinds. */ int acpi_bus_unregister_driver(struct acpi_driver *driver) void acpi_bus_unregister_driver(struct acpi_driver *driver) { ACPI_FUNCTION_TRACE("acpi_bus_unregister_driver"); if (!driver) return_VALUE(-EINVAL); acpi_driver_detach(driver); if (!atomic_read(&driver->references)) { Loading @@ -646,7 +630,7 @@ int acpi_bus_unregister_driver(struct acpi_driver *driver) list_del_init(&driver->node); spin_unlock(&acpi_device_lock); } return_VALUE(0); return; } EXPORT_SYMBOL(acpi_bus_unregister_driver); Loading
drivers/char/sonypi.c +5 −5 Original line number Diff line number Diff line Loading @@ -512,7 +512,7 @@ static struct sonypi_device { #ifdef CONFIG_ACPI static struct acpi_device *sonypi_acpi_device; static int acpi_enabled; static int acpi_driver_registered; #endif static int sonypi_ec_write(u8 addr, u8 value) Loading Loading @@ -869,7 +869,7 @@ static irqreturn_t sonypi_irq(int irq, void *dev_id, struct pt_regs *regs) sonypi_report_input_event(event); #ifdef CONFIG_ACPI if (acpi_enabled) if (sonypi_acpi_device) acpi_bus_generate_event(sonypi_acpi_device, 1, event); #endif Loading Loading @@ -1551,8 +1551,8 @@ static int __init sonypi_init(void) goto err_free_device; #ifdef CONFIG_ACPI if (acpi_bus_register_driver(&sonypi_acpi_driver) > 0) acpi_enabled = 1; if (acpi_bus_register_driver(&sonypi_acpi_driver) >= 0) acpi_driver_registered = 1; #endif return 0; Loading @@ -1567,7 +1567,7 @@ static int __init sonypi_init(void) static void __exit sonypi_exit(void) { #ifdef CONFIG_ACPI if (acpi_enabled) if (acpi_driver_registered) acpi_bus_unregister_driver(&sonypi_acpi_driver); #endif platform_device_unregister(sonypi_platform_device); Loading
include/acpi/acpi_bus.h +1 −1 Original line number Diff line number Diff line Loading @@ -327,7 +327,7 @@ int acpi_bus_set_power(acpi_handle handle, int state); int acpi_bus_generate_event(struct acpi_device *device, u8 type, int data); int acpi_bus_receive_event(struct acpi_bus_event *event); int acpi_bus_register_driver(struct acpi_driver *driver); int acpi_bus_unregister_driver(struct acpi_driver *driver); void acpi_bus_unregister_driver(struct acpi_driver *driver); int acpi_bus_add(struct acpi_device **child, struct acpi_device *parent, acpi_handle handle, int type); int acpi_bus_trim(struct acpi_device *start, int rmdevice); Loading