diff options
Diffstat (limited to 'drivers/input/misc')
-rw-r--r-- | drivers/input/misc/wistron_btns.c | 42 |
1 files changed, 40 insertions, 2 deletions
diff --git a/drivers/input/misc/wistron_btns.c b/drivers/input/misc/wistron_btns.c index 47de377330b8..b9ef1dfc9a07 100644 --- a/drivers/input/misc/wistron_btns.c +++ b/drivers/input/misc/wistron_btns.c | |||
@@ -58,7 +58,7 @@ MODULE_PARM_DESC(force, "Load even if computer is not in database"); | |||
58 | 58 | ||
59 | static char *keymap_name; /* = NULL; */ | 59 | static char *keymap_name; /* = NULL; */ |
60 | module_param_named(keymap, keymap_name, charp, 0); | 60 | module_param_named(keymap, keymap_name, charp, 0); |
61 | MODULE_PARM_DESC(keymap, "Keymap name, if it can't be autodetected"); | 61 | MODULE_PARM_DESC(keymap, "Keymap name, if it can't be autodetected [generic, 1557/MS2141]"); |
62 | 62 | ||
63 | static struct platform_device *wistron_device; | 63 | static struct platform_device *wistron_device; |
64 | 64 | ||
@@ -568,6 +568,42 @@ static struct key_entry keymap_wistron_md96500[] = { | |||
568 | { KE_END, FE_UNTESTED } | 568 | { KE_END, FE_UNTESTED } |
569 | }; | 569 | }; |
570 | 570 | ||
571 | static struct key_entry keymap_wistron_generic[] = { | ||
572 | { KE_KEY, 0x01, {KEY_HELP} }, | ||
573 | { KE_KEY, 0x02, {KEY_CONFIG} }, | ||
574 | { KE_KEY, 0x03, {KEY_POWER} }, | ||
575 | { KE_KEY, 0x05, {KEY_SWITCHVIDEOMODE} }, /* Display selection */ | ||
576 | { KE_KEY, 0x06, {KEY_DISPLAYTOGGLE} }, /* Display on/off */ | ||
577 | { KE_KEY, 0x08, {KEY_MUTE} }, | ||
578 | { KE_KEY, 0x11, {KEY_PROG1} }, | ||
579 | { KE_KEY, 0x12, {KEY_PROG2} }, | ||
580 | { KE_KEY, 0x13, {KEY_PROG3} }, | ||
581 | { KE_KEY, 0x14, {KEY_MAIL} }, | ||
582 | { KE_KEY, 0x15, {KEY_WWW} }, | ||
583 | { KE_KEY, 0x20, {KEY_VOLUMEUP} }, | ||
584 | { KE_KEY, 0x21, {KEY_VOLUMEDOWN} }, | ||
585 | { KE_KEY, 0x22, {KEY_REWIND} }, | ||
586 | { KE_KEY, 0x23, {KEY_FORWARD} }, | ||
587 | { KE_KEY, 0x24, {KEY_PLAYPAUSE} }, | ||
588 | { KE_KEY, 0x25, {KEY_STOPCD} }, | ||
589 | { KE_KEY, 0x31, {KEY_MAIL} }, | ||
590 | { KE_KEY, 0x36, {KEY_WWW} }, | ||
591 | { KE_KEY, 0x37, {KEY_DISPLAYTOGGLE} }, /* Display on/off */ | ||
592 | { KE_KEY, 0x40, {KEY_WLAN} }, | ||
593 | { KE_KEY, 0x49, {KEY_CONFIG} }, | ||
594 | { KE_SW, 0x4a, {.sw = {SW_LID, 1}} }, /* lid close */ | ||
595 | { KE_SW, 0x4b, {.sw = {SW_LID, 0}} }, /* lid open */ | ||
596 | { KE_KEY, 0x6a, {KEY_CONFIG} }, | ||
597 | { KE_KEY, 0x6d, {KEY_POWER} }, | ||
598 | { KE_KEY, 0x71, {KEY_STOPCD} }, | ||
599 | { KE_KEY, 0x72, {KEY_PLAYPAUSE} }, | ||
600 | { KE_KEY, 0x74, {KEY_REWIND} }, | ||
601 | { KE_KEY, 0x78, {KEY_FORWARD} }, | ||
602 | { KE_WIFI, 0x30 }, | ||
603 | { KE_BLUETOOTH, 0x44 }, | ||
604 | { KE_END, 0 } | ||
605 | }; | ||
606 | |||
571 | /* | 607 | /* |
572 | * If your machine is not here (which is currently rather likely), please send | 608 | * If your machine is not here (which is currently rather likely), please send |
573 | * a list of buttons and their key codes (reported when loading this module | 609 | * a list of buttons and their key codes (reported when loading this module |
@@ -886,15 +922,17 @@ static struct dmi_system_id dmi_ids[] __initdata = { | |||
886 | 922 | ||
887 | static int __init select_keymap(void) | 923 | static int __init select_keymap(void) |
888 | { | 924 | { |
925 | dmi_check_system(dmi_ids); | ||
889 | if (keymap_name != NULL) { | 926 | if (keymap_name != NULL) { |
890 | if (strcmp (keymap_name, "1557/MS2141") == 0) | 927 | if (strcmp (keymap_name, "1557/MS2141") == 0) |
891 | keymap = keymap_wistron_ms2141; | 928 | keymap = keymap_wistron_ms2141; |
929 | else if (strcmp (keymap_name, "generic") == 0) | ||
930 | keymap = keymap_wistron_generic; | ||
892 | else { | 931 | else { |
893 | printk(KERN_ERR "wistron_btns: Keymap unknown\n"); | 932 | printk(KERN_ERR "wistron_btns: Keymap unknown\n"); |
894 | return -EINVAL; | 933 | return -EINVAL; |
895 | } | 934 | } |
896 | } | 935 | } |
897 | dmi_check_system(dmi_ids); | ||
898 | if (keymap == NULL) { | 936 | if (keymap == NULL) { |
899 | if (!force) { | 937 | if (!force) { |
900 | printk(KERN_ERR "wistron_btns: System unknown\n"); | 938 | printk(KERN_ERR "wistron_btns: System unknown\n"); |