acpi4asus updates
Corentin Chary
maintainercover acpi4asus updates
Hi Matthew,
Here are some patches that where lost on the list, plus some new ones. Please apply them for next merge window. Thanks,
AceLan Kao (5):
asus-laptop: correct a touchpad hotkey mapping
asus-laptop: add all video switch keys
asus-nb-wmi: correct a touchpad hotkey mapping
asus-nb-wmi: add all video switch keys
asus-wmi: add display toggle quirk
Ben Hutchings (1):
asus-laptop: Do not call HWRS on init
Corentin Chary (5):
platform-drivers-x86: change my mail
asus-laptop: map some new keys asus-{nb-wmi|laptop}.c: sync keymaps
asus-wmi: always report brightness key events
asus-laptop: always report brightness key events
MAINTAINERS | 4 +- drivers/platform/x86/asus-laptop.c | 102 ++++++++++++++++++++++-------------- drivers/platform/x86/asus-nb-wmi.c | 78 ++++++++++++++++++++++----- drivers/platform/x86/asus-wmi.c | 34 ++++++++++--- drivers/platform/x86/asus-wmi.h | 9 +++ drivers/platform/x86/eeepc-wmi.c | 4 +- 6 files changed, 166 insertions(+), 65 deletions(-)
Signature · 1 line
1.7.8.6
Corentin Chary
maintainerPATCH 1/11 platform-drivers-x86: change my mail
--- MAINTAINERS | 4 ++-- drivers/platform/x86/asus-nb-wmi.c | 2 +- drivers/platform/x86/asus-wmi.c | 2 +- drivers/platform/x86/eeepc-wmi.c | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-)
MAINTAINERS +2 -2
@@ -1278,7 +1278,7 @@ F: Documentation/hwmon/asc7621 F: drivers/hwmon/asc7621.c ASUS NOTEBOOKS AND EEEPC ACPI/WMI EXTRAS DRIVERS -M: Corentin Chary <[email protected]> +M: Corentin Chary <[email protected]> L: [email protected] L: [email protected] W: http://acpi4asus.sf.net
@@ -6471,7 +6471,7 @@ F: drivers/media/pci/saa7146/ F: include/media/saa7146* SAMSUNG LAPTOP DRIVER -M: Corentin Chary <[email protected]> +M: Corentin Chary <[email protected]> L: [email protected] S: Maintained F: drivers/platform/x86/samsung-laptop.c
drivers/platform/x86/asus-nb-wmi.c +1 -1
@@ -32,7 +32,7 @@#define ASUS_NB_WMI_FILE "asus-nb-wmi" -MODULE_AUTHOR ("Corentin Chary <[email protected]>" ); +MODULE_AUTHOR ("Corentin Chary <[email protected]>" );MODULE_DESCRIPTION ("Asus Notebooks WMI Hotkey Driver" );MODULE_LICENSE ("GPL" );
drivers/platform/x86/asus-wmi.c +1 -1
@@ -51,7 +51,7 @@#include "asus-wmi.h" -MODULE_AUTHOR ("Corentin Chary <[email protected]>, " +MODULE_AUTHOR ("Corentin Chary <[email protected]>, " "Yong Wang <[email protected]>" );MODULE_DESCRIPTION ("Asus Generic WMI Driver" );MODULE_LICENSE ("GPL" );
drivers/platform/x86/eeepc-wmi.c +1 -1
@@ -39,7 +39,7 @@#define EEEPC_WMI_FILE "eeepc-wmi" -MODULE_AUTHOR ("Corentin Chary <[email protected]>" ); +MODULE_AUTHOR ("Corentin Chary <[email protected]>" );MODULE_DESCRIPTION ("Eee PC WMI Hotkey Driver" );MODULE_LICENSE ("GPL" );
Signature · 1 line
1.7.8.6
Corentin Chary
maintainerPATCH 2/11 asus-laptop: map some new keys
In reply to Corentin Chary--- drivers/platform/x86/asus-laptop.c | 3 +++ drivers/platform/x86/asus-nb-wmi.c | 1 + 2 files changed, 4 insertions(+), 0 deletions(-)
drivers/platform/x86/asus-laptop.c +3 -0
@@ -314,6 +314,8 @@ static const struct key_entry asus_keymap[] = { {KE_KEY, 0x50, { KEY_EMAIL } }, {KE_KEY, 0x51, { KEY_WWW } }, {KE_KEY, 0x55, { KEY_CALC } }, + {KE_IGNORE, 0x57, }, /* Battery mode */ + {KE_IGNORE, 0x58, }, /* AC mode */ {KE_KEY, 0x5C, { KEY_SCREENLOCK } }, /* Screenlock */ {KE_KEY, 0x5D, { KEY_WLAN } }, {KE_KEY, 0x5E, { KEY_WLAN } },
@@ -325,6 +327,7 @@ static const struct key_entry asus_keymap[] = { {KE_KEY, 0x6B, { KEY_F13 } }, /* Lock Touchpad */ {KE_KEY, 0x6C, { KEY_SLEEP } }, /* Suspend */ {KE_KEY, 0x6D, { KEY_SLEEP } }, /* Hibernate */ + {KE_IGNORE, 0x6E, }, /* Low Battery notification */ {KE_KEY, 0x7E, { KEY_BLUETOOTH } }, {KE_KEY, 0x7D, { KEY_BLUETOOTH } }, {KE_KEY, 0x82, { KEY_CAMERA } },
drivers/platform/x86/asus-nb-wmi.c +1 -0
@@ -185,6 +185,7 @@ static const struct key_entry asus_nb_wmi_keymap[] = { { KE_KEY, 0x62, { KEY_SWITCHVIDEOMODE } }, { KE_KEY, 0x63, { KEY_SWITCHVIDEOMODE } }, { KE_KEY, 0x6B, { KEY_TOUCHPAD_TOGGLE } }, + { KE_IGNORE, 0x6E, }, /* Low Battery notification */ { KE_KEY, 0x7D, { KEY_BLUETOOTH } }, { KE_KEY, 0x7E, { KEY_BLUETOOTH } }, { KE_KEY, 0x82, { KEY_CAMERA } },
Signature · 1 line
1.7.8.6
Corentin Chary
maintainerPATCH 3/11 asus-{nb-wmi|laptop}.c: sync keymaps
In reply to Corentin CharyMaybe this should be shared in another module...
--- drivers/platform/x86/asus-laptop.c | 36 ++++++++++++++++++------------------ drivers/platform/x86/asus-nb-wmi.c | 24 ++++++++++++------------ 2 files changed, 30 insertions(+), 30 deletions(-)
drivers/platform/x86/asus-laptop.c +18 -18
@@ -304,40 +304,40 @@ static const struct key_entry asus_keymap[] = { {KE_KEY, 0x30, { KEY_VOLUMEUP } }, {KE_KEY, 0x31, { KEY_VOLUMEDOWN } }, {KE_KEY, 0x32, { KEY_MUTE } }, - {KE_KEY, 0x33, { KEY_SWITCHVIDEOMODE } }, - {KE_KEY, 0x34, { KEY_SWITCHVIDEOMODE } }, + {KE_KEY, 0x33, { KEY_DISPLAYTOGGLE } }, /* LCD on */ + {KE_KEY, 0x34, { KEY_DISPLAY_OFF } }, /* LCD off */ {KE_KEY, 0x40, { KEY_PREVIOUSSONG } }, {KE_KEY, 0x41, { KEY_NEXTSONG } }, - {KE_KEY, 0x43, { KEY_STOPCD } }, + {KE_KEY, 0x43, { KEY_STOPCD } }, /* Stop/Eject */ {KE_KEY, 0x45, { KEY_PLAYPAUSE } }, - {KE_KEY, 0x4c, { KEY_MEDIA } }, + {KE_KEY, 0x4c, { KEY_MEDIA } }, /* WMP Key */ {KE_KEY, 0x50, { KEY_EMAIL } }, {KE_KEY, 0x51, { KEY_WWW } }, {KE_KEY, 0x55, { KEY_CALC } }, {KE_IGNORE, 0x57, }, /* Battery mode */ {KE_IGNORE, 0x58, }, /* AC mode */ {KE_KEY, 0x5C, { KEY_SCREENLOCK } }, /* Screenlock */ - {KE_KEY, 0x5D, { KEY_WLAN } }, - {KE_KEY, 0x5E, { KEY_WLAN } }, - {KE_KEY, 0x5F, { KEY_WLAN } }, + {KE_KEY, 0x5D, { KEY_WLAN } }, /* WLAN Toggle */ + {KE_KEY, 0x5E, { KEY_WLAN } }, /* WLAN Enable */ + {KE_KEY, 0x5F, { KEY_WLAN } }, /* WLAN Disable */ {KE_KEY, 0x60, { KEY_SWITCHVIDEOMODE } }, - {KE_KEY, 0x61, { KEY_SWITCHVIDEOMODE } }, - {KE_KEY, 0x62, { KEY_SWITCHVIDEOMODE } }, - {KE_KEY, 0x63, { KEY_SWITCHVIDEOMODE } }, - {KE_KEY, 0x6B, { KEY_F13 } }, /* Lock Touchpad */ + {KE_KEY, 0x61, { KEY_SWITCHVIDEOMODE } }, /* LCD Only */ + {KE_KEY, 0x62, { KEY_SWITCHVIDEOMODE } }, /* CRT Only */ + {KE_KEY, 0x63, { KEY_SWITCHVIDEOMODE } }, /* LCD + CRT */ + {KE_KEY, 0x6B, { KEY_TOUCHPAD_TOGGLE } }, /* Lock Touchpad */ {KE_KEY, 0x6C, { KEY_SLEEP } }, /* Suspend */ {KE_KEY, 0x6D, { KEY_SLEEP } }, /* Hibernate */ {KE_IGNORE, 0x6E, }, /* Low Battery notification */ - {KE_KEY, 0x7E, { KEY_BLUETOOTH } }, - {KE_KEY, 0x7D, { KEY_BLUETOOTH } }, + {KE_KEY, 0x7D, { KEY_BLUETOOTH } }, /* Bluetooth Enable */ + {KE_KEY, 0x7E, { KEY_BLUETOOTH } }, /* Bluetooth Disable */ {KE_KEY, 0x82, { KEY_CAMERA } }, - {KE_KEY, 0x88, { KEY_WLAN } }, - {KE_KEY, 0x8A, { KEY_PROG1 } }, + {KE_KEY, 0x88, { KEY_RFKILL } }, /* Radio Toggle Key */ + {KE_KEY, 0x8A, { KEY_PROG1 } }, /* Color enhancement mode */ {KE_KEY, 0x95, { KEY_MEDIA } }, {KE_KEY, 0x99, { KEY_PHONE } }, - {KE_KEY, 0xc4, { KEY_KBDILLUMUP } }, - {KE_KEY, 0xc5, { KEY_KBDILLUMDOWN } }, - {KE_KEY, 0xb5, { KEY_CALC } }, + {KE_KEY, 0xB5, { KEY_CALC } }, + {KE_KEY, 0xC4, { KEY_KBDILLUMUP } }, + {KE_KEY, 0xC5, { KEY_KBDILLUMDOWN } }, {KE_END, 0}, };
drivers/platform/x86/asus-nb-wmi.c +12 -12
@@ -168,9 +168,9 @@ static const struct key_entry asus_nb_wmi_keymap[] = { { KE_KEY, 0x34, { KEY_DISPLAY_OFF } }, /* LCD off */ { KE_KEY, 0x40, { KEY_PREVIOUSSONG } }, { KE_KEY, 0x41, { KEY_NEXTSONG } }, - { KE_KEY, 0x43, { KEY_STOPCD } }, + { KE_KEY, 0x43, { KEY_STOPCD } }, /* Stop/Eject */ { KE_KEY, 0x45, { KEY_PLAYPAUSE } }, - { KE_KEY, 0x4c, { KEY_MEDIA } }, + { KE_KEY, 0x4c, { KEY_MEDIA } }, /* WMP Key */ { KE_KEY, 0x50, { KEY_EMAIL } }, { KE_KEY, 0x51, { KEY_WWW } }, { KE_KEY, 0x55, { KEY_CALC } },
@@ -181,25 +181,25 @@ static const struct key_entry asus_nb_wmi_keymap[] = { { KE_KEY, 0x5E, { KEY_WLAN } }, /* Wireless console Enable */ { KE_KEY, 0x5F, { KEY_WLAN } }, /* Wireless console Disable */ { KE_KEY, 0x60, { KEY_SWITCHVIDEOMODE } }, - { KE_KEY, 0x61, { KEY_SWITCHVIDEOMODE } }, - { KE_KEY, 0x62, { KEY_SWITCHVIDEOMODE } }, - { KE_KEY, 0x63, { KEY_SWITCHVIDEOMODE } }, + { KE_KEY, 0x61, { KEY_SWITCHVIDEOMODE } }, /* LCD Only */ + { KE_KEY, 0x62, { KEY_SWITCHVIDEOMODE } }, /* CRT Only */ + { KE_KEY, 0x63, { KEY_SWITCHVIDEOMODE } }, /* LCD + CRT */ { KE_KEY, 0x6B, { KEY_TOUCHPAD_TOGGLE } }, { KE_IGNORE, 0x6E, }, /* Low Battery notification */ - { KE_KEY, 0x7D, { KEY_BLUETOOTH } }, - { KE_KEY, 0x7E, { KEY_BLUETOOTH } }, + { KE_KEY, 0x7D, { KEY_BLUETOOTH } }, /* Bluetooth Enable */ + { KE_KEY, 0x7E, { KEY_BLUETOOTH } }, /* Bluetooth Disable */ { KE_KEY, 0x82, { KEY_CAMERA } }, - { KE_KEY, 0x88, { KEY_RFKILL } }, - { KE_KEY, 0x8A, { KEY_PROG1 } }, + { KE_KEY, 0x88, { KEY_RFKILL } }, /* Radio Toggle Key */ + { KE_KEY, 0x8A, { KEY_PROG1 } }, /* Color enhancement mode */ { KE_KEY, 0x95, { KEY_MEDIA } }, { KE_KEY, 0x99, { KEY_PHONE } }, { KE_KEY, 0xA0, { KEY_SWITCHVIDEOMODE } }, /* SDSP HDMI only */ { KE_KEY, 0xA1, { KEY_SWITCHVIDEOMODE } }, /* SDSP LCD + HDMI */ { KE_KEY, 0xA2, { KEY_SWITCHVIDEOMODE } }, /* SDSP CRT + HDMI */ { KE_KEY, 0xA3, { KEY_SWITCHVIDEOMODE } }, /* SDSP TV + HDMI */ - { KE_KEY, 0xb5, { KEY_CALC } }, - { KE_KEY, 0xc4, { KEY_KBDILLUMUP } }, - { KE_KEY, 0xc5, { KEY_KBDILLUMDOWN } }, + { KE_KEY, 0xB5, { KEY_CALC } }, + { KE_KEY, 0xC4, { KEY_KBDILLUMUP } }, + { KE_KEY, 0xC5, { KEY_KBDILLUMDOWN } }, { KE_END, 0}, };
Signature · 1 line
1.7.8.6
Corentin Chary
maintainerPATCH 4/11 asus-laptop: correct a touchpad hotkey mapping
In reply to Corentin CharyFrom: AceLan Kao <[email protected]>
0x60 is touchpad enable key, but is misdefined in the keymap.
--- drivers/platform/x86/asus-laptop.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
drivers/platform/x86/asus-laptop.c +1 -1
@@ -320,7 +320,7 @@ static const struct key_entry asus_keymap[] = { {KE_KEY, 0x5D, { KEY_WLAN } }, /* WLAN Toggle */ {KE_KEY, 0x5E, { KEY_WLAN } }, /* WLAN Enable */ {KE_KEY, 0x5F, { KEY_WLAN } }, /* WLAN Disable */ - {KE_KEY, 0x60, { KEY_SWITCHVIDEOMODE } }, + {KE_KEY, 0x60, { KEY_TOUCHPAD_ON } }, {KE_KEY, 0x61, { KEY_SWITCHVIDEOMODE } }, /* LCD Only */ {KE_KEY, 0x62, { KEY_SWITCHVIDEOMODE } }, /* CRT Only */ {KE_KEY, 0x63, { KEY_SWITCHVIDEOMODE } }, /* LCD + CRT */
Signature · 1 line
1.7.8.6
Corentin Chary
maintainerPATCH 5/11 asus-laptop: add all video switch keys
In reply to Corentin CharyFrom: AceLan Kao <[email protected]>
Fill up all the video switch keys in the map.
--- drivers/platform/x86/asus-laptop.c | 26 +++++++++++++++++++++++--- 1 files changed, 23 insertions(+), 3 deletions(-)
drivers/platform/x86/asus-laptop.c +23 -3
@@ -321,9 +321,13 @@ static const struct key_entry asus_keymap[] = { {KE_KEY, 0x5E, { KEY_WLAN } }, /* WLAN Enable */ {KE_KEY, 0x5F, { KEY_WLAN } }, /* WLAN Disable */ {KE_KEY, 0x60, { KEY_TOUCHPAD_ON } }, - {KE_KEY, 0x61, { KEY_SWITCHVIDEOMODE } }, /* LCD Only */ - {KE_KEY, 0x62, { KEY_SWITCHVIDEOMODE } }, /* CRT Only */ - {KE_KEY, 0x63, { KEY_SWITCHVIDEOMODE } }, /* LCD + CRT */ + {KE_KEY, 0x61, { KEY_SWITCHVIDEOMODE } }, /* SDSP LCD only */ + {KE_KEY, 0x62, { KEY_SWITCHVIDEOMODE } }, /* SDSP CRT only */ + {KE_KEY, 0x63, { KEY_SWITCHVIDEOMODE } }, /* SDSP LCD + CRT */ + {KE_KEY, 0x64, { KEY_SWITCHVIDEOMODE } }, /* SDSP TV */ + {KE_KEY, 0x65, { KEY_SWITCHVIDEOMODE } }, /* SDSP LCD + TV */ + {KE_KEY, 0x66, { KEY_SWITCHVIDEOMODE } }, /* SDSP CRT + TV */ + {KE_KEY, 0x67, { KEY_SWITCHVIDEOMODE } }, /* SDSP LCD + CRT + TV */ {KE_KEY, 0x6B, { KEY_TOUCHPAD_TOGGLE } }, /* Lock Touchpad */ {KE_KEY, 0x6C, { KEY_SLEEP } }, /* Suspend */ {KE_KEY, 0x6D, { KEY_SLEEP } }, /* Hibernate */
@@ -333,8 +337,24 @@ static const struct key_entry asus_keymap[] = { {KE_KEY, 0x82, { KEY_CAMERA } }, {KE_KEY, 0x88, { KEY_RFKILL } }, /* Radio Toggle Key */ {KE_KEY, 0x8A, { KEY_PROG1 } }, /* Color enhancement mode */ + {KE_KEY, 0x8C, { KEY_SWITCHVIDEOMODE } }, /* SDSP DVI only */ + {KE_KEY, 0x8D, { KEY_SWITCHVIDEOMODE } }, /* SDSP LCD + DVI */ + {KE_KEY, 0x8E, { KEY_SWITCHVIDEOMODE } }, /* SDSP CRT + DVI */ + {KE_KEY, 0x8F, { KEY_SWITCHVIDEOMODE } }, /* SDSP TV + DVI */ + {KE_KEY, 0x90, { KEY_SWITCHVIDEOMODE } }, /* SDSP LCD + CRT + DVI */ + {KE_KEY, 0x91, { KEY_SWITCHVIDEOMODE } }, /* SDSP LCD + TV + DVI */ + {KE_KEY, 0x92, { KEY_SWITCHVIDEOMODE } }, /* SDSP CRT + TV + DVI */ + {KE_KEY, 0x93, { KEY_SWITCHVIDEOMODE } }, /* SDSP LCD + CRT + TV + DVI */ {KE_KEY, 0x95, { KEY_MEDIA } }, {KE_KEY, 0x99, { KEY_PHONE } }, + {KE_KEY, 0xA0, { KEY_SWITCHVIDEOMODE } }, /* SDSP HDMI only */ + {KE_KEY, 0xA1, { KEY_SWITCHVIDEOMODE } }, /* SDSP LCD + HDMI */ + {KE_KEY, 0xA2, { KEY_SWITCHVIDEOMODE } }, /* SDSP CRT + HDMI */ + {KE_KEY, 0xA3, { KEY_SWITCHVIDEOMODE } }, /* SDSP TV + HDMI */ + {KE_KEY, 0xA4, { KEY_SWITCHVIDEOMODE } }, /* SDSP LCD + CRT + HDMI */ + {KE_KEY, 0xA5, { KEY_SWITCHVIDEOMODE } }, /* SDSP LCD + TV + HDMI */ + {KE_KEY, 0xA6, { KEY_SWITCHVIDEOMODE } }, /* SDSP CRT + TV + HDMI */ + {KE_KEY, 0xA7, { KEY_SWITCHVIDEOMODE } }, /* SDSP LCD + CRT + TV + HDMI */ {KE_KEY, 0xB5, { KEY_CALC } }, {KE_KEY, 0xC4, { KEY_KBDILLUMUP } }, {KE_KEY, 0xC5, { KEY_KBDILLUMDOWN } },
Signature · 1 line
1.7.8.6
Corentin Chary
maintainerPATCH 6/11 asus-nb-wmi: correct a touchpad hotkey mapping
In reply to Corentin CharyFrom: AceLan Kao <[email protected]>
0x60 is touchpad enable key, but is misdefined in the keymap.
--- drivers/platform/x86/asus-nb-wmi.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
drivers/platform/x86/asus-nb-wmi.c +1 -1
@@ -180,7 +180,7 @@ static const struct key_entry asus_nb_wmi_keymap[] = { { KE_KEY, 0x5D, { KEY_WLAN } }, /* Wireless console Toggle */ { KE_KEY, 0x5E, { KEY_WLAN } }, /* Wireless console Enable */ { KE_KEY, 0x5F, { KEY_WLAN } }, /* Wireless console Disable */ - { KE_KEY, 0x60, { KEY_SWITCHVIDEOMODE } }, + { KE_KEY, 0x60, { KEY_TOUCHPAD_ON } }, { KE_KEY, 0x61, { KEY_SWITCHVIDEOMODE } }, /* LCD Only */ { KE_KEY, 0x62, { KEY_SWITCHVIDEOMODE } }, /* CRT Only */ { KE_KEY, 0x63, { KEY_SWITCHVIDEOMODE } }, /* LCD + CRT */
Signature · 1 line
1.7.8.6
Corentin Chary
maintainerPATCH 7/11 asus-nb-wmi: add all video switch keys
In reply to Corentin CharyFrom: AceLan Kao <[email protected]>
Fill up all the video switch keys in the map.
--- drivers/platform/x86/asus-nb-wmi.c | 22 +++++++++++++++++++--- 1 files changed, 19 insertions(+), 3 deletions(-)
drivers/platform/x86/asus-nb-wmi.c +19 -3
@@ -181,9 +181,13 @@ static const struct key_entry asus_nb_wmi_keymap[] = { { KE_KEY, 0x5E, { KEY_WLAN } }, /* Wireless console Enable */ { KE_KEY, 0x5F, { KEY_WLAN } }, /* Wireless console Disable */ { KE_KEY, 0x60, { KEY_TOUCHPAD_ON } }, - { KE_KEY, 0x61, { KEY_SWITCHVIDEOMODE } }, /* LCD Only */ - { KE_KEY, 0x62, { KEY_SWITCHVIDEOMODE } }, /* CRT Only */ - { KE_KEY, 0x63, { KEY_SWITCHVIDEOMODE } }, /* LCD + CRT */ + { KE_KEY, 0x61, { KEY_SWITCHVIDEOMODE } }, /* SDSP LCD only */ + { KE_KEY, 0x62, { KEY_SWITCHVIDEOMODE } }, /* SDSP CRT only */ + { KE_KEY, 0x63, { KEY_SWITCHVIDEOMODE } }, /* SDSP LCD + CRT */ + { KE_KEY, 0x64, { KEY_SWITCHVIDEOMODE } }, /* SDSP TV */ + { KE_KEY, 0x65, { KEY_SWITCHVIDEOMODE } }, /* SDSP LCD + TV */ + { KE_KEY, 0x66, { KEY_SWITCHVIDEOMODE } }, /* SDSP CRT + TV */ + { KE_KEY, 0x67, { KEY_SWITCHVIDEOMODE } }, /* SDSP LCD + CRT + TV */ { KE_KEY, 0x6B, { KEY_TOUCHPAD_TOGGLE } }, { KE_IGNORE, 0x6E, }, /* Low Battery notification */ { KE_KEY, 0x7D, { KEY_BLUETOOTH } }, /* Bluetooth Enable */
@@ -191,12 +195,24 @@ static const struct key_entry asus_nb_wmi_keymap[] = { { KE_KEY, 0x82, { KEY_CAMERA } }, { KE_KEY, 0x88, { KEY_RFKILL } }, /* Radio Toggle Key */ { KE_KEY, 0x8A, { KEY_PROG1 } }, /* Color enhancement mode */ + { KE_KEY, 0x8C, { KEY_SWITCHVIDEOMODE } }, /* SDSP DVI only */ + { KE_KEY, 0x8D, { KEY_SWITCHVIDEOMODE } }, /* SDSP LCD + DVI */ + { KE_KEY, 0x8E, { KEY_SWITCHVIDEOMODE } }, /* SDSP CRT + DVI */ + { KE_KEY, 0x8F, { KEY_SWITCHVIDEOMODE } }, /* SDSP TV + DVI */ + { KE_KEY, 0x90, { KEY_SWITCHVIDEOMODE } }, /* SDSP LCD + CRT + DVI */ + { KE_KEY, 0x91, { KEY_SWITCHVIDEOMODE } }, /* SDSP LCD + TV + DVI */ + { KE_KEY, 0x92, { KEY_SWITCHVIDEOMODE } }, /* SDSP CRT + TV + DVI */ + { KE_KEY, 0x93, { KEY_SWITCHVIDEOMODE } }, /* SDSP LCD + CRT + TV + DVI */ { KE_KEY, 0x95, { KEY_MEDIA } }, { KE_KEY, 0x99, { KEY_PHONE } }, { KE_KEY, 0xA0, { KEY_SWITCHVIDEOMODE } }, /* SDSP HDMI only */ { KE_KEY, 0xA1, { KEY_SWITCHVIDEOMODE } }, /* SDSP LCD + HDMI */ { KE_KEY, 0xA2, { KEY_SWITCHVIDEOMODE } }, /* SDSP CRT + HDMI */ { KE_KEY, 0xA3, { KEY_SWITCHVIDEOMODE } }, /* SDSP TV + HDMI */ + { KE_KEY, 0xA4, { KEY_SWITCHVIDEOMODE } }, /* SDSP LCD + CRT + HDMI */ + { KE_KEY, 0xA5, { KEY_SWITCHVIDEOMODE } }, /* SDSP LCD + TV + HDMI */ + { KE_KEY, 0xA6, { KEY_SWITCHVIDEOMODE } }, /* SDSP CRT + TV + HDMI */ + { KE_KEY, 0xA7, { KEY_SWITCHVIDEOMODE } }, /* SDSP LCD + CRT + TV + HDMI */ { KE_KEY, 0xB5, { KEY_CALC } }, { KE_KEY, 0xC4, { KEY_KBDILLUMUP } }, { KE_KEY, 0xC5, { KEY_KBDILLUMDOWN } },
Signature · 1 line
1.7.8.6
Corentin Chary
maintainerPATCH 8/11 asus-wmi: add display toggle quirk
In reply to Corentin CharyFrom: AceLan Kao <[email protected]>
For machines with AMD graphic chips, it will send out WMI event and ACPI interrupt at the same time while hitting the hotkey. BIOS will notify the system the next display output mode throught WMI event code, so that windows' application can show an OSD to tell the user which mode will be taken effect. User can hit the display toggle key many times within 2 seconds to choose the mode they want. After 2 seconds, WMI dirver should send a WMIMethod(SDSP) command to tell the BIOS which mode the user chose. And then BIOS will raise another ACPI interrupt to tell the system to really switch the display mode.
In Linux desktop, we don't have this kind of OSD to let users to choose the mode they want, so we don't need to call WMIMethod(SDSP) to have another ACPI interrupt. To simplify the problem, we just have to ignore the WMI event, and let the first ACPI interrupt to send out the key event.
For the need, here comes another quirk to add machines with this kind of behavior. When the WMI driver receives the display toggle WMI event, and found the machin is in the list, it will do nothing and let ACPI video driver to report the key event.
--- drivers/platform/x86/asus-nb-wmi.c | 31 ++++++++++++++++++++++++++++++- drivers/platform/x86/asus-wmi.c | 26 +++++++++++++++++++++++--- drivers/platform/x86/asus-wmi.h | 7 +++++++ 3 files changed, 60 insertions(+), 4 deletions(-)
drivers/platform/x86/asus-nb-wmi.c +30 -1
@@ -59,6 +59,17 @@ static struct quirk_entry quirk_asus_unknown = { .wapf = 0, }; +/* +* For those machines that need software to control bt/wifi status +* and can't adjust brightness through ACPI interface +* and have duplicate events(ACPI and WMI) for display toggle +*/ +static struct quirk_entry quirk_asus_x55u = { + .wapf =4 , + .wmi_backlight_power = true, + .no_display_toggle = true, +}; +static struct quirk_entry quirk_asus_x401u = { .wapf =4 , };
@@ -77,6 +88,15 @@ static struct dmi_system_id asus_quirks[] = {DMI_MATCH (DMI_SYS_VENDOR ,"ASUSTeK COMPUTER INC." ), DMI_MATCH(DMI_PRODUCT_NAME, "X401U"), }, + .driver_data = &quirk_asus_x55u, + }, + { + .callback = dmi_matched, + .ident = "ASUSTeK COMPUTER INC. X401A", + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"ASUSTeK COMPUTER INC." ), + DMI_MATCH(DMI_PRODUCT_NAME, "X401A"), + }, .driver_data = &quirk_asus_x401u, }, {
@@ -95,6 +115,15 @@ static struct dmi_system_id asus_quirks[] = {DMI_MATCH (DMI_SYS_VENDOR ,"ASUSTeK COMPUTER INC." ), DMI_MATCH(DMI_PRODUCT_NAME, "X501U"), }, + .driver_data = &quirk_asus_x55u, + }, + { + .callback = dmi_matched, + .ident = "ASUSTeK COMPUTER INC. X501A", + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"ASUSTeK COMPUTER INC." ), + DMI_MATCH(DMI_PRODUCT_NAME, "X501A"), + }, .driver_data = &quirk_asus_x401u, }, {
@@ -131,7 +160,7 @@ static struct dmi_system_id asus_quirks[] = {DMI_MATCH (DMI_SYS_VENDOR ,"ASUSTeK COMPUTER INC." ), DMI_MATCH(DMI_PRODUCT_NAME, "X55U"), }, - .driver_data = &quirk_asus_x401u, + .driver_data = &quirk_asus_x55u, }, { .callback = dmi_matched,
drivers/platform/x86/asus-wmi.c +23 -3
@@ -1341,6 +1341,18 @@ static void asus_wmi_backlight_exit(struct asus_wmi *asus) asus->backlight_device =NULL ; } +static int is_display_toggle (int code) +{ +/* display toggle keys */ +if ((code >=0x61 && code <=0x67 ) || + (code >=0x8c && code <=0x93 ) || + (code >=0xa0 && code <=0xa7 ) || + (code >=0xd0 && code <=0xd5 )) +return 1 ; + +return 0 ; +} +static void asus_wmi_notify (u32 value,void *context) {struct asus_wmi *asus = context;
@@ -1380,10 +1392,18 @@ static void asus_wmi_notify(u32 value, void *context) code =NOTIFY_BRNDOWN_MIN ;if (code ==NOTIFY_BRNUP_MIN || code ==NOTIFY_BRNDOWN_MIN ) { -if (!acpi_video_backlight_support ()) +if (!acpi_video_backlight_support ()) {asus_wmi_backlight_notify (asus, orig_code); - }else if (!sparse_keymap_report_event (asus->inputdev, code, - key_value, autorelease)) + } + goto exit; + } + +if (is_display_toggle (code) && + asus->driver->quirks->no_display_toggle) + goto exit; + +if (!sparse_keymap_report_event (asus->inputdev, code, + key_value, autorelease))pr_info ("Unknown key %x pressed\n" , code); exit:
drivers/platform/x86/asus-wmi.h +7 -0
@@ -41,6 +41,13 @@ struct quirk_entry {bool store_backlight_power;bool wmi_backlight_power;int wapf; +/* +* For machines with AMD graphic chips, it will send out WMI event +* and ACPI interrupt at the same time while hitting the hotkey. +* To simplify the problem, we just have to ignore the WMI event, +* and let the ACPI interrupt to send out the key event. +*/ +int no_display_toggle; };struct asus_wmi_driver {
Signature · 1 line
1.7.8.6
Corentin Chary
maintainerPATCH 9/11 asus-laptop: Do not call HWRS on init
In reply to Corentin CharyFrom: Ben Hutchings <[email protected]>
Since commit 8871e99f89b7 ('asus-laptop: HRWS/HWRS typo'), module initialisation is very slow on the Asus UL30A. The HWRS method takes about 12 seconds to run, and subsequent initialisation also seems to be delayed. Since we don't really need the result, don't bother calling it on init. Those who are curious can still get the result through the 'infos' device attribute.
Update the comment about HWRS in show_infos().
References: http://bugs.debian.org/692436
--- drivers/platform/x86/asus-laptop.c | 17 ++++------------- 1 files changed, 4 insertions(+), 13 deletions(-)
drivers/platform/x86/asus-laptop.c +4 -13
@@ -883,8 +883,10 @@ static ssize_t show_infos(struct device *dev,/* * The HWRS method return informations about the hardware. * 0x80 bit is for WLAN, 0x100 for Bluetooth. +* 0x40 for WWAN, 0x10 for WIMAX. * The significance of others is yet to be found. -* If we don't find the method, we assume the device are present. +* We don't currently use this for device detection, and it +* takes several seconds to run on some systems. */ rv =acpi_evaluate_integer (asus->handle,"HWRS" ,NULL , &temp);if (!ACPI_FAILURE (rv))
@@ -1705,7 +1707,7 @@ static int asus_laptop_get_info(struct asus_laptop *asus) {struct acpi_buffer buffer = {ACPI_ALLOCATE_BUFFER ,NULL };union acpi_object *model =NULL ; -unsigned long long bsts_result, hwrs_result; +unsigned long long bsts_result;char *string =NULL ;acpi_status status;
@@ -1767,17 +1769,6 @@ static int asus_laptop_get_info(struct asus_laptop *asus)if (*string)pr_notice (" %s model detected\n" , string); -/* -* The HWRS method return informations about the hardware. -* 0x80 bit is for WLAN, 0x100 for Bluetooth, -* 0x40 for WWAN, 0x10 for WIMAX. -* The significance of others is yet to be found. -*/ - status = -acpi_evaluate_integer (asus->handle,"HWRS" ,NULL , &hwrs_result); -if (!ACPI_FAILURE (status)) -pr_notice (" HWRS returned %x" , (int )hwrs_result); -if (!acpi_check_handle (asus->handle,METHOD_WL_STATUS ,NULL )) asus->have_rsts = true;
Signature · 1 line
1.7.8.6
Re: [PATCH 09/11] asus-laptop: Do not call HWRS on init
Quoted 9 lines · Corentin Chary
From: Ben Hutchings <[email protected]>
Since commit
8871e99f89b7('asus-laptop: HRWS/HWRS typo'), module initialisation is very slow on the Asus UL30A. The HWRS method takes about 12 seconds to run, and subsequent initialisation also seems to be delayed. Since we don't really need the result, don't bother calling it on init. Those who are curious can still get the result through the 'infos' device attribute.
Quoted 6 lines
Update the comment about HWRS in
show_infos().Reported-by ryan <[email protected]>References: http://bugs.debian.org/692436
Signed-off-by Ben Hutchings <[email protected]>Signed-off-by Corentin Chary <[email protected]>
[...]
Can you add a Cc: <[email protected]> to this?
Ben.
Signature · 2 lines
Ben Hutchings Never attribute to conspiracy what can adequately be explained by stupidity.
Corentin Chary
maintainerPATCH 10/11 asus-wmi: always report brightness key events
In reply to Corentin Chary--- drivers/platform/x86/asus-nb-wmi.c | 2 ++ drivers/platform/x86/asus-wmi.c | 8 ++++---- drivers/platform/x86/asus-wmi.h | 2 ++ drivers/platform/x86/eeepc-wmi.c | 2 ++ 4 files changed, 10 insertions(+), 4 deletions(-)
drivers/platform/x86/asus-nb-wmi.c +2 -0
@@ -190,6 +190,8 @@ static void asus_nb_wmi_quirks(struct asus_wmi_driver *driver) }static const struct key_entry asus_nb_wmi_keymap[] = { + {KE_KEY ,ASUS_WMI_BRN_DOWN , {KEY_BRIGHTNESSDOWN } }, + {KE_KEY ,ASUS_WMI_BRN_UP , {KEY_BRIGHTNESSUP } }, {KE_KEY ,0x30 , {KEY_VOLUMEUP } }, {KE_KEY ,0x31 , {KEY_VOLUMEDOWN } }, {KE_KEY ,0x32 , {KEY_MUTE } },
drivers/platform/x86/asus-wmi.c +4 -4
@@ -1386,16 +1386,16 @@ static void asus_wmi_notify(u32 value, void *context) }if (code >=NOTIFY_BRNUP_MIN && code <=NOTIFY_BRNUP_MAX ) - code =NOTIFY_BRNUP_MIN ; + code =ASUS_WMI_BRN_UP ;else if (code >=NOTIFY_BRNDOWN_MIN && code <=NOTIFY_BRNDOWN_MAX ) - code =NOTIFY_BRNDOWN_MIN ; + code =ASUS_WMI_BRN_DOWN ; -if (code ==NOTIFY_BRNUP_MIN || code ==NOTIFY_BRNDOWN_MIN ) { +if (code ==ASUS_WMI_BRN_DOWN || code ==ASUS_WMI_BRN_UP ) {if (!acpi_video_backlight_support ()) {asus_wmi_backlight_notify (asus, orig_code); + goto exit; } - goto exit; } if (is_display_toggle(code) &&
drivers/platform/x86/asus-wmi.h +2 -0
@@ -30,6 +30,8 @@#include <linux/platform_device.h> #define ASUS_WMI_KEY_IGNORE (-1) +#define ASUS_WMI_BRN_DOWN 0x20 +#define ASUS_WMI_BRN_UP 0x2fstruct module ;struct key_entry ;
drivers/platform/x86/eeepc-wmi.c +2 -0
@@ -63,6 +63,8 @@ MODULE_PARM_DESC(hotplug_wireless,#define HOME_RELEASE 0xe5static const struct key_entry eeepc_wmi_keymap[] = { + {KE_KEY ,ASUS_WMI_BRN_DOWN , {KEY_BRIGHTNESSDOWN } }, + {KE_KEY ,ASUS_WMI_BRN_UP , {KEY_BRIGHTNESSUP } },/* Sleep already handled via generic ACPI code */ {KE_KEY ,0x30 , {KEY_VOLUMEUP } }, {KE_KEY ,0x31 , {KEY_VOLUMEDOWN } },
Signature · 1 line
1.7.8.6
Corentin Chary
maintainerPATCH 11/11 asus-laptop: always report brightness key events
In reply to Corentin Chary--- drivers/platform/x86/asus-laptop.c | 24 ++++++++++++++++-------- 1 files changed, 16 insertions(+), 8 deletions(-)
drivers/platform/x86/asus-laptop.c +16 -8
@@ -128,10 +128,12 @@ MODULE_PARM_DESC(als_status, "Set the ALS status on boot "/* * Some events we use, same for all Asus */ -#define ATKD_BR_UP 0x10/* (event & ~ATKD_BR_UP) = brightness level */ -#define ATKD_BR_DOWN 0x20/* (event & ~ATKD_BR_DOWN) = britghness level */ -#define ATKD_BR_MIN ATKD_BR_UP -#define ATKD_BR_MAX (ATKD_BR_DOWN | 0xF)/* 0x2f */ +#define ATKD_BRNUP_MIN 0x10 +#define ATKD_BRNUP_MAX 0x1f +#define ATKD_BRNDOWN_MIN 0x20 +#define ATKD_BRNDOWN_MAX 0x2f +#define ATKD_BRNDOWN 0x20 +#define ATKD_BRNUP 0x2f#define ATKD_LCD_ON 0x33#define ATKD_LCD_OFF 0x34
@@ -301,6 +303,8 @@ static const struct key_entry asus_keymap[] = { {KE_KEY, 0x17, { KEY_ZOOM } }, {KE_KEY, 0x1f, { KEY_BATTERY } },/* End of Lenovo SL Specific keycodes */ + {KE_KEY, ATKD_BRNDOWN, { KEY_BRIGHTNESSDOWN } }, + {KE_KEY, ATKD_BRNUP, { KEY_BRIGHTNESSUP } }, {KE_KEY, 0x30, { KEY_VOLUMEUP } }, {KE_KEY, 0x31, { KEY_VOLUMEDOWN } }, {KE_KEY, 0x32, { KEY_MUTE } },
@@ -1544,15 +1548,19 @@ static void asus_acpi_notify(struct acpi_device *device, u32 event)dev_name (&asus->device->dev), event, count); -/* Brightness events are special */ -if (event >=ATKD_BR_MIN && event <=ATKD_BR_MAX ) { +if (event >=ATKD_BRNUP_MIN && event <=ATKD_BRNUP_MAX ) + event =ATKD_BRNUP ; +else if (event >=ATKD_BRNDOWN_MIN && + event <=ATKD_BRNDOWN_MAX ) + event =ATKD_BRNDOWN ; -/* Ignore them completely if the acpi video driver is used */ +/* Brightness events are special */ +if (event ==ATKD_BRNDOWN && event ==ATKD_BRNUP ) {if (asus->backlight_device !=NULL ) {/* Update the backlight device. */ asus_backlight_notify (asus); +return ; } -return ; }/* Accelerometer "coarse orientation change" event */
Signature · 1 line
1.7.8.6