From a765ad670ff8fc8483243c26bb27524bb3998652 Mon Sep 17 00:00:00 2001 From: Ike Panhc Date: Tue, 6 Sep 2011 02:32:10 +0800 Subject: [PATCH] --- yaml --- r: 272011 b: refs/heads/master c: f43d9ec06028b8cb122a7a2b367a7af066342918 h: refs/heads/master i: 272009: 695a7d8ce09069e498114736cea590cdcdd6933d 272007: f71cc64a51836a7bcff76526b25566554c1bd7c0 v: v3 --- [refs] | 2 +- trunk/drivers/platform/x86/ideapad-laptop.c | 21 +++++++++++++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 7e0efe6ebbc9..51adebbf0d84 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 923de84ab07cfcee75946191f17a6e7fb98e3ac8 +refs/heads/master: f43d9ec06028b8cb122a7a2b367a7af066342918 diff --git a/trunk/drivers/platform/x86/ideapad-laptop.c b/trunk/drivers/platform/x86/ideapad-laptop.c index ab3add3327ad..39a72a8aeb8c 100644 --- a/trunk/drivers/platform/x86/ideapad-laptop.c +++ b/trunk/drivers/platform/x86/ideapad-laptop.c @@ -386,8 +386,10 @@ static void ideapad_platform_exit(struct ideapad_private *priv) * input device */ static const struct key_entry ideapad_keymap[] = { - { KE_KEY, 0x06, { KEY_SWITCHVIDEOMODE } }, - { KE_KEY, 0x0D, { KEY_WLAN } }, + { KE_KEY, 6, { KEY_SWITCHVIDEOMODE } }, + { KE_KEY, 13, { KEY_WLAN } }, + { KE_KEY, 16, { KEY_PROG1 } }, + { KE_KEY, 17, { KEY_PROG2 } }, { KE_END, 0 }, }; @@ -442,6 +444,18 @@ static void ideapad_input_report(struct ideapad_private *priv, sparse_keymap_report_event(priv->inputdev, scancode, 1, true); } +static void ideapad_input_novokey(struct ideapad_private *priv) +{ + unsigned long long_pressed; + + if (read_ec_data(ideapad_handle, VPCCMD_R_NOVO, &long_pressed)) + return; + if (long_pressed) + ideapad_input_report(priv, 17); + else + ideapad_input_report(priv, 16); +} + /* * backlight */ @@ -634,6 +648,9 @@ static void ideapad_acpi_notify(struct acpi_device *adevice, u32 event) case 4: ideapad_backlight_notify_brightness(priv); break; + case 3: + ideapad_input_novokey(priv); + break; case 2: ideapad_backlight_notify_power(priv); break;