ACPI: thinkpad-acpi: fix regression on HKEY LID event handling
authorHenrique de Moraes Holschuh <hmh@hmh.eng.br>
Sun, 23 Sep 2007 14:39:05 +0000 (11:39 -0300)
committerLen Brown <len.brown@intel.com>
Mon, 24 Sep 2007 02:38:15 +0000 (22:38 -0400)
We were letting ThinkPad-specific LID events through to userspace again,
instead of dropping them.  Fix it.  We don't want to give userspace the
option of not using generic LID handling.

Signed-off-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Signed-off-by: Len Brown <len.brown@intel.com>
drivers/misc/thinkpad_acpi.c

index 3efe81b1b73c455847e7a9a6222800ee9d411f73..0a33c6ee4508e2eda2b51f09df9c5557b561fa00 100644 (file)
@@ -1197,6 +1197,7 @@ static void hotkey_notify(struct ibm_struct *ibm, u32 event)
        u32 hkey;
        unsigned int keycode, scancode;
        int send_acpi_ev;
+       int ignore_acpi_ev;
 
        if (event != 0x80) {
                printk(IBM_ERR "unknown HKEY notification event %d\n", event);
@@ -1219,6 +1220,7 @@ static void hotkey_notify(struct ibm_struct *ibm, u32 event)
                }
 
                send_acpi_ev = 0;
+               ignore_acpi_ev = 0;
 
                switch (hkey >> 12) {
                case 1:
@@ -1244,6 +1246,8 @@ static void hotkey_notify(struct ibm_struct *ibm, u32 event)
                                       "unknown LID-related HKEY event: 0x%04x\n",
                                       hkey);
                                send_acpi_ev = 1;
+                       } else {
+                               ignore_acpi_ev = 1;
                        }
                        break;
                case 7:
@@ -1263,11 +1267,12 @@ static void hotkey_notify(struct ibm_struct *ibm, u32 event)
                }
 
                /* Legacy events */
-               if (send_acpi_ev || hotkey_report_mode < 2)
+               if (!ignore_acpi_ev && (send_acpi_ev || hotkey_report_mode < 2)) {
                        acpi_bus_generate_proc_event(ibm->acpi->device, event, hkey);
+               }
 
                /* netlink events */
-               if (send_acpi_ev) {
+               if (!ignore_acpi_ev && send_acpi_ev) {
                        acpi_bus_generate_netlink_event(ibm->acpi->device->pnp.device_class,
                                                        ibm->acpi->device->dev.bus_id,
                                                        event, hkey);