]> err.no Git - linux-2.6/blobdiff - drivers/acpi/ac.c
Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik...
[linux-2.6] / drivers / acpi / ac.c
index e0a1b1541362a907a00891c81f95c7a4b8172d1d..11abc7bf777ef90626eac53d0aec8e32f0228bde 100644 (file)
@@ -72,7 +72,7 @@ struct acpi_ac {
        unsigned long state;
 };
 
-static struct file_operations acpi_ac_fops = {
+static const struct file_operations acpi_ac_fops = {
        .open = acpi_ac_open_fs,
        .read = seq_read,
        .llseek = seq_lseek,
@@ -197,6 +197,8 @@ static void acpi_ac_notify(acpi_handle handle, u32 event, void *data)
        device = ac->device;
        switch (event) {
        case ACPI_AC_NOTIFY_STATUS:
+       case ACPI_NOTIFY_BUS_CHECK:
+       case ACPI_NOTIFY_DEVICE_CHECK:
                acpi_ac_get_state(ac);
                acpi_bus_generate_event(device, event, (u32) ac->state);
                break;
@@ -238,7 +240,7 @@ static int acpi_ac_add(struct acpi_device *device)
                goto end;
 
        status = acpi_install_notify_handler(device->handle,
-                                            ACPI_DEVICE_NOTIFY, acpi_ac_notify,
+                                            ACPI_ALL_NOTIFY, acpi_ac_notify,
                                             ac);
        if (ACPI_FAILURE(status)) {
                result = -ENODEV;
@@ -270,7 +272,7 @@ static int acpi_ac_remove(struct acpi_device *device, int type)
        ac = (struct acpi_ac *)acpi_driver_data(device);
 
        status = acpi_remove_notify_handler(device->handle,
-                                           ACPI_DEVICE_NOTIFY, acpi_ac_notify);
+                                           ACPI_ALL_NOTIFY, acpi_ac_notify);
 
        acpi_ac_remove_fs(device);
 
@@ -283,6 +285,8 @@ static int __init acpi_ac_init(void)
 {
        int result;
 
+       if (acpi_disabled)
+               return -ENODEV;
 
        acpi_ac_dir = acpi_lock_ac_dir();
        if (!acpi_ac_dir)