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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Monday 30 March 2009 08:20:23 Matthias Welwarsky wrote:
> On Monday 30 March 2009 05:52:39 Mattia Dongili wrote:
> > On Sun, Mar 29, 2009 at 05:41:07PM +0100, Matthew Garrett wrote:
> > > On Sun, Mar 29, 2009 at 06:38:14PM +0200, Matthias Welwarsky wrote:
> > > > Whoops, just noticed that there was a bug in my patch. No wonder it
> > > > confused you.  Should untranslated events >= 0x90 still generate ACPI
> > > > events? In that case, the following patch would fix it. If not, the
> > > > acpi event reporting must be moved into the else path, too.
> > >
> > > I don't think it's likely to be useful - if we ever implement support
> > > for them then we'll generate different events and generate user
> > > confusion.
> >
> > yes, but up to 2.6.29 they are being reported for all the models
> > supported by the former SNC initialization code. I'd rather keep them
> > until /proc/acpi/event goes away.
>
> Hm, but if you keep them, there would be the possibility of ambiguous
> events. Events >= 0x90 are being translated and possibly (mostly) become <
> 0x90, so there's something like a namespace clash here. I think there
> should be a marker for translated events.

[snip]

> > Also, Matthias can we have your signoff line?
>
> I'll resend the patch with a proper sign-off once we're clear about these
> questions, ok?

And here's an updated patch, it fixes bogus input events reported for 
untranslateable "new-style" hotkey events, reports unique events for Vaio Z21 
S1 and S2 buttons and restores the previous behavior of reporting ACPI events 
even for translated "new-style" hotkeys. To disambiguate them, those events 
start at 0x8000, maybe not quite deliberate - any other 
suggestions? Also, ACPI events are generated for rf killswitch status changes. 
That's probably of limited use, because the state of the killswitch is not 
reported, but one can still iterate all switches in a script to find out about 
the status.

Signed-off-by: Matthias Welwarsky <matze@xxxxxxxxxxxx>

--- sony-laptop.c.orig	2009-03-29 12:41:44.000000000 +0200
+++ sony-laptop.c	2009-03-31 00:04:23.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))
@@ -955,15 +955,22 @@
 				printk(KERN_INFO DRV_PFX
 				       "Unknown event: 0x%x 0x%x\n", key_handle,
 				       ev);
+				/* restore original event number */
+				ev = event;
+			} else {
+				sony_laptop_report_input_event(ev);
+				/* mark event as translated */
+				ev |= 0x8000;
 			}
 		} else if (sony_find_snc_handle(0x124) == ev) {
 			sony_nc_rfkill_update();
-			return;
-		}
-	}
-
+			/* restore original event number */
+			ev = event;
+		} 
+	} 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);
 }
 




--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux