--- 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; } }