Message ID | 200903291253.05030.matze@welwarsky.de (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
On Sun, Mar 29, 2009 at 12:53:04PM +0200, Matthias Welwarsky wrote: > { 0x90, SONYPI_EVENT_PKEY_P1 }, > { 0x10, SONYPI_EVENT_ANYBUTTON_RELEASED }, > - { 0x91, SONYPI_EVENT_PKEY_P1 }, > + { 0x91, SONYPI_EVENT_PKEY_P2 }, > { 0x11, SONYPI_EVENT_ANYBUTTON_RELEASED }, > { 0x81, SONYPI_EVENT_FNKEY_F1 }, > { 0x01, SONYPI_EVENT_FNKEY_RELEASED }, Oops, yes... > @@ -929,7 +929,7 @@ > if (sony_find_snc_handle(0x127) == ev) > key_handle = 0x127; > > - if (handle) { > + if (key_handle) { Indeed. > - } > + } else > + sony_laptop_report_input_event(ev); That doesn't look right, though - sony_laptop_report_input_event expects a value that matches the input_index array, and an unprocessed event >0x90 isn't going to satisfy that.
On Sunday 29 March 2009 17:03:38 Matthew Garrett wrote: > On Sun, Mar 29, 2009 at 12:53:04PM +0200, Matthias Welwarsky wrote: > > { 0x90, SONYPI_EVENT_PKEY_P1 }, > > { 0x10, SONYPI_EVENT_ANYBUTTON_RELEASED }, > > - { 0x91, SONYPI_EVENT_PKEY_P1 }, > > + { 0x91, SONYPI_EVENT_PKEY_P2 }, > > { 0x11, SONYPI_EVENT_ANYBUTTON_RELEASED }, > > { 0x81, SONYPI_EVENT_FNKEY_F1 }, > > { 0x01, SONYPI_EVENT_FNKEY_RELEASED }, > > Oops, yes... > > > @@ -929,7 +929,7 @@ > > if (sony_find_snc_handle(0x127) == ev) > > key_handle = 0x127; > > > > - if (handle) { > > + if (key_handle) { > > Indeed. > > > - } > > + } else > > + sony_laptop_report_input_event(ev); > > That doesn't look right, though - sony_laptop_report_input_event expects > a value that matches the input_index array, and an unprocessed event > >0x90 isn't going to satisfy that. The call to sony_laptop_report_input_event() used to be further down, right before the call to acpi_bus_generate_proc_event(). It was called unconditionally, with whatever value ev happened to have at that time, i.e. also unprocessed events < 0x90 or events where the translation failed. Moving the call makes sure that only properly processed events are reported. Without, I was seeing a lot of bogus events reported, e.g. volume-down when the stamina switch was flipped, or when the rf kill switch was operated. -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Sun, Mar 29, 2009 at 05:51:45PM +0200, Matthias Welwarsky wrote: > before the call to acpi_bus_generate_proc_event(). It was called > unconditionally, with whatever value ev happened to have at that time, i.e. > also unprocessed events < 0x90 or events where the translation failed. Moving > the call makes sure that only properly processed events are reported. Without, > I was seeing a lot of bogus events reported, e.g. volume-down when the stamina > switch was flipped, or when the rf kill switch was operated. Oh, I see. No, you can't just remove it from there - that'll break older-style events. I'd add it there without removing the original, but then make the rest of the block conditional on the original event not being >= 0x90.
--- sony-laptop.c.orig 2009-03-29 12:41:44.000000000 +0200 +++ sony-laptop.c 2009-03-29 12:43:29.000000000 +0200 @@ -865,7 +865,7 @@ static struct sony_nc_event sony_100_events[] = { { 0x90, SONYPI_EVENT_PKEY_P1 }, { 0x10, SONYPI_EVENT_ANYBUTTON_RELEASED }, - { 0x91, SONYPI_EVENT_PKEY_P1 }, + { 0x91, SONYPI_EVENT_PKEY_P2 }, { 0x11, SONYPI_EVENT_ANYBUTTON_RELEASED }, { 0x81, SONYPI_EVENT_FNKEY_F1 }, { 0x01, SONYPI_EVENT_FNKEY_RELEASED }, @@ -929,7 +929,7 @@ if (sony_find_snc_handle(0x127) == ev) key_handle = 0x127; - if (handle) { + if (key_handle) { struct sony_nc_event *key_event; if (sony_call_snc_handle(key_handle, 0x200, &result)) @@ -959,11 +959,11 @@ } else if (sony_find_snc_handle(0x124) == ev) { sony_nc_rfkill_update(); return; - } + } else + sony_laptop_report_input_event(ev); } dprintk("sony_acpi_notify, event: 0x%.2x\n", ev); - sony_laptop_report_input_event(ev); acpi_bus_generate_proc_event(sony_nc_acpi_device, 1, ev); }