Re: [PATCH 57/98] sony-laptop: Add support for extra keyboard events

Matthias Welwarsky
2009-03-29T15:51:51Z

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.