[PATCH 3/3] Mark OSD type scancodes

From: Mario Limonciello
Date: Tue Apr 21 2009 - 14:03:43 EST


Hi:

This patch introduces a new scan code type for the purpose of events
that shouldn't send a keycode but the WMI event is still relevant.
Eventually, these will need to be hooked up to the proper sysfs and
procfs interfaces for those types of events.

Regards
--
Mario Limonciello
*Dell | Linux Engineering*
mario_limonciello@xxxxxxxx
--- a/drivers/platform/x86/dell-wmi.c~ 2009-04-21 12:56:26.000000000 -0500
+++ b/drivers/platform/x86/dell-wmi.c 2009-04-21 12:54:41.000000000 -0500
@@ -46,7 +46,7 @@
u16 keycode;
};

-enum { KE_KEY, KE_SW, KE_END };
+enum { KE_KEY, KE_SW, KE_OSD, KE_END };

static struct key_entry dell_wmi_keymap[] = {
{KE_KEY, 0xe009, KEY_EJECTCD},
@@ -59,21 +59,20 @@

/* The volume hotkeys are here so that the the OS
* can be notified and show an OSD. The keys will still
- * send out a scan code via the EC.
- {KE_KEY, 0xe030, KEY_VOLUMEUP},
- {KE_KEY, 0xe02e, KEY_VOLUMEDOWN},
- {KE_KEY, 0xe020, KEY_MUTE},
- */
+ * send out a scan code via the EC. */
+ {KE_OSD, 0xe030, KEY_VOLUMEUP},
+ {KE_OSD, 0xe02e, KEY_VOLUMEDOWN},
+ {KE_OSD, 0xe020, KEY_MUTE},
+

/* A majority of platforms support a simple toggle event, but
* some actually have support to raise or lower the backlit keyboard
* brightness with different keys.
* The brightness is changed by the EC, these are here just to report
- * that information to the OS to show an OSD.
- {KE_KEY, 0xe00c, KEY_KBDILLUMTOGGLE},
- {KE_KEY, 0xe033, KEY_KBDILLUMUP},
- {KE_KEY, 0xe034, KEY_KBDILLUMDOWN},
- */
+ * that information to the OS to show an OSD. */
+ {KE_OSD, 0xe00c, KEY_KBDILLUMTOGGLE},
+ {KE_OSD, 0xe033, KEY_KBDILLUMUP},
+ {KE_OSD, 0xe034, KEY_KBDILLUMDOWN},

/* Inside the structure for a display switch, the next device is
* reported at offset 6, the active devices at offset 8, and the
@@ -82,7 +81,7 @@
{KE_KEY, 0xe00b, KEY_DISPLAYTOGGLE},

/* This is actually for all radios on one button */
- {KE_KEY, 0xe008, KEY_WLAN},
+ {KE_SW, 0xe008, SW_RFKILL_ALL},

/* Wifi Catcher */
{KE_KEY, 0xe011, KEY_PROG1},
@@ -99,19 +98,17 @@
/* Ambient light sensor is actually toggled by the BIOS and/or EC.
* This is for informative purposes of notifying the OS via an OSD.
* The new status will be at offset 6, the current limit at offset 8
- * and the absolute limit at offset 10
- {KE_KEY, 0xe013, ambient light sensor code},
- */
+ * and the absolute limit at offset 10 */
+ {KE_OSD, 0xe013, LED_MISC},

/* The *lock keys are here so that the the OS
* can be notified and show an OSD. The keys will still
* send out a scan code via the EC.
* If the system contains LEDs for these buttons, the WMI
- * events will not be sent out
- {KE_KEY, 0x003a, KEY_CAPSLOCK},
- {KE_KEY, 0xe045, KEY_NUMLOCK},
- {KE_KEY, 0xe046, KEY_SCROLLLOCK},
- */
+ * events will not be sent out */
+ {KE_OSD, 0x003a, LED_CAPSL},
+ {KE_OSD, 0xe045, LED_NUML},
+ {KE_OSD, 0xe046, LED_SCROLLL},

{KE_END, 0}
};
@@ -223,6 +220,10 @@
set_bit(EV_SW, dell_wmi_input_dev->evbit);
set_bit(key->keycode, dell_wmi_input_dev->swbit);
break;
+ case KE_OSD:
+ /* TODO, hook up to the right proc or sysfs interface for showing
+ * these status bits */
+ break;
}
}

Attachment: signature.asc
Description: OpenPGP digital signature