* [PATCH] staging: drivers: hid: hid-asus.c: Optimized input logic for keys
@ 2022-05-09 10:02 Johan Boger
2022-05-09 13:54 ` Joe Perches
0 siblings, 1 reply; 3+ messages in thread
From: Johan Boger @ 2022-05-09 10:02 UTC (permalink / raw)
To: jikos; +Cc: benjamin.tissoires, linux-input, linux-kernel, joe, Johan Boger
Instead of calling asus_map_key_clear() function in each case,
we now set a temporary value and clear it after default.
Patch was checked by checkpatch and adjusted accordingly.
Signed-off-by: Johan Boger <jb@ip.fi>
---
drivers/hid/hid-asus.c | 144 ++++++++++++++++++++++++++---------------
1 file changed, 93 insertions(+), 51 deletions(-)
diff --git a/drivers/hid/hid-asus.c b/drivers/hid/hid-asus.c
index 08c9a9a60ae4..9c2080cd1de3 100644
--- a/drivers/hid/hid-asus.c
+++ b/drivers/hid/hid-asus.c
@@ -339,7 +339,7 @@ static int asus_raw_event(struct hid_device *hdev,
/*
* Skip these report ID, the device emits a continuous stream associated
* with the AURA mode it is in which looks like an 'echo'.
- */
+ */
if (report->id == FEATURE_KBD_LED_REPORT_ID1 ||
report->id == FEATURE_KBD_LED_REPORT_ID2) {
return -1;
@@ -349,7 +349,7 @@ static int asus_raw_event(struct hid_device *hdev,
* G14 and G15 send these codes on some keypresses with no
* discernable reason for doing so. We'll filter them out to avoid
* unmapped warning messages later.
- */
+ */
if (data[1] == 0xea || data[1] == 0xec || data[1] == 0x02 ||
data[1] == 0x8a || data[1] == 0x9e) {
return -1;
@@ -359,10 +359,9 @@ static int asus_raw_event(struct hid_device *hdev,
/*
* G713 and G733 send these codes on some keypresses, depending on
* the key pressed it can trigger a shutdown event if not caught.
- */
- if(data[0] == 0x02 && data[1] == 0x30) {
+ */
+ if (data[0] == 0x02 && data[1] == 0x30)
return -1;
- }
}
}
@@ -371,11 +370,10 @@ static int asus_raw_event(struct hid_device *hdev,
/*
* CLAYMORE II keyboard sends this packet when it goes to sleep
* this causes the whole system to go into suspend.
- */
+ */
- if(size == 2 && data[0] == 0x02 && data[1] == 0x00) {
+ if (size == 2 && data[0] == 0x02 && data[1] == 0x00)
return -1;
- }
}
return 0;
@@ -393,7 +391,7 @@ static int asus_kbd_set_report(struct hid_device *hdev, u8 *buf, size_t buf_size
/*
* The report ID should be set from the incoming buffer due to LED and key
* interfaces having different pages
- */
+ */
ret = hid_hw_raw_request(hdev, buf[0], dmabuf,
buf_size, HID_FEATURE_REPORT,
HID_REQ_SET_REPORT);
@@ -828,6 +826,7 @@ static int asus_input_mapping(struct hid_device *hdev,
int *max)
{
struct asus_drvdata *drvdata = hid_get_drvdata(hdev);
+ int clear_key;
if (drvdata->quirks & QUIRK_SKIP_INPUT_MAPPING) {
/* Don't map anything from the HID report.
@@ -852,50 +851,73 @@ static int asus_input_mapping(struct hid_device *hdev,
/* ASUS-specific keyboard hotkeys and led backlight */
if ((usage->hid & HID_USAGE_PAGE) == HID_UP_ASUSVENDOR) {
switch (usage->hid & HID_USAGE) {
- case 0x10: asus_map_key_clear(KEY_BRIGHTNESSDOWN); break;
- case 0x20: asus_map_key_clear(KEY_BRIGHTNESSUP); break;
- case 0x35: asus_map_key_clear(KEY_DISPLAY_OFF); break;
- case 0x6c: asus_map_key_clear(KEY_SLEEP); break;
- case 0x7c: asus_map_key_clear(KEY_MICMUTE); break;
- case 0x82: asus_map_key_clear(KEY_CAMERA); break;
- case 0x88: asus_map_key_clear(KEY_RFKILL); break;
- case 0xb5: asus_map_key_clear(KEY_CALC); break;
- case 0xc4: asus_map_key_clear(KEY_KBDILLUMUP); break;
- case 0xc5: asus_map_key_clear(KEY_KBDILLUMDOWN); break;
+ case 0x10:
+ clear_key = KEY_BRIGHTNESSDOWN; break;
+ case 0x20:
+ clear_key = KEY_BRIGHTNESSUP; break;
+ case 0x35:
+ clear_key = KEY_DISPLAY_OFF; break;
+ case 0x6c:
+ clear_key = KEY_SLEEP; break;
+ case 0x7c:
+ clear_key = KEY_MICMUTE; break;
+ case 0x82:
+ clear_key = KEY_CAMERA; break;
+ case 0x88:
+ clear_key = KEY_RFKILL; break;
+ case 0xb5:
+ clear_key = KEY_CALC; break;
+ case 0xc4:
+ clear_key = KEY_KBDILLUMUP; break;
+ case 0xc5:
+ clear_key = KEY_KBDILLUMDOWN; break;
/* ASUS touchpad toggle */
- case 0x6b: asus_map_key_clear(KEY_F21); break;
+ case 0x6b:
+ clear_key = KEY_F21; break;
/* ROG key */
- case 0x38: asus_map_key_clear(KEY_PROG1); break;
+ case 0x38:
+ clear_key = KEY_PROG1; break;
/* Fn+C ASUS Splendid */
- case 0xba: asus_map_key_clear(KEY_PROG2); break;
+ case 0xba:
+ clear_key = KEY_PROG2; break;
/* Fn+Space Power4Gear Hybrid */
- case 0x5c: asus_map_key_clear(KEY_PROG3); break;
+ case 0x5c:
+ clear_key = KEY_PROG3; break;
/* Fn+F5 "fan" symbol on FX503VD */
- case 0x99: asus_map_key_clear(KEY_PROG4); break;
+ case 0x99:
+ clear_key = KEY_PROG4; break;
/* Fn+F5 "fan" symbol on N-Key keyboard */
- case 0xae: asus_map_key_clear(KEY_PROG4); break;
+ case 0xae:
+ clear_key = KEY_PROG4; break;
/* Fn+Ret "Calc" symbol on N-Key keyboard */
- case 0x92: asus_map_key_clear(KEY_CALC); break;
+ case 0x92:
+ clear_key = KEY_CALC; break;
/* Fn+Left Aura mode previous on N-Key keyboard */
- case 0xb2: asus_map_key_clear(KEY_PROG2); break;
+ case 0xb2:
+ clear_key = KEY_PROG2; break;
/* Fn+Right Aura mode next on N-Key keyboard */
- case 0xb3: asus_map_key_clear(KEY_PROG3); break;
+ case 0xb3:
+ clear_key = KEY_PROG3; break;
default:
/* ASUS lazily declares 256 usages, ignore the rest,
- * as some make the keyboard appear as a pointer device. */
+ * as some make the keyboard appear as a pointer device.
+ */
return -1;
}
+ /* Clear temp key */
+ asus_map_key_clear(clear_key);
+
/*
* Check and enable backlight only on devices with UsagePage ==
* 0xff31 to avoid initializing the keyboard firmware multiple
@@ -907,31 +929,52 @@ static int asus_input_mapping(struct hid_device *hdev,
set_bit(EV_REP, hi->input->evbit);
return 1;
+
}
if ((usage->hid & HID_USAGE_PAGE) == HID_UP_MSVENDOR) {
switch (usage->hid & HID_USAGE) {
- case 0xff01: asus_map_key_clear(BTN_1); break;
- case 0xff02: asus_map_key_clear(BTN_2); break;
- case 0xff03: asus_map_key_clear(BTN_3); break;
- case 0xff04: asus_map_key_clear(BTN_4); break;
- case 0xff05: asus_map_key_clear(BTN_5); break;
- case 0xff06: asus_map_key_clear(BTN_6); break;
- case 0xff07: asus_map_key_clear(BTN_7); break;
- case 0xff08: asus_map_key_clear(BTN_8); break;
- case 0xff09: asus_map_key_clear(BTN_9); break;
- case 0xff0a: asus_map_key_clear(BTN_A); break;
- case 0xff0b: asus_map_key_clear(BTN_B); break;
- case 0x00f1: asus_map_key_clear(KEY_WLAN); break;
- case 0x00f2: asus_map_key_clear(KEY_BRIGHTNESSDOWN); break;
- case 0x00f3: asus_map_key_clear(KEY_BRIGHTNESSUP); break;
- case 0x00f4: asus_map_key_clear(KEY_DISPLAY_OFF); break;
- case 0x00f7: asus_map_key_clear(KEY_CAMERA); break;
- case 0x00f8: asus_map_key_clear(KEY_PROG1); break;
+ case 0xff01:
+ clear_key = BTN_1; break;
+ case 0xff02:
+ clear_key = BTN_2; break;
+ case 0xff03:
+ clear_key = BTN_3; break;
+ case 0xff04:
+ clear_key = BTN_4; break;
+ case 0xff05:
+ clear_key = BTN_5; break;
+ case 0xff06:
+ clear_key = BTN_6; break;
+ case 0xff07:
+ clear_key = BTN_7; break;
+ case 0xff08:
+ clear_key = BTN_8; break;
+ case 0xff09:
+ clear_key = BTN_9; break;
+ case 0xff0a:
+ clear_key = BTN_A; break;
+ case 0xff0b:
+ clear_key = BTN_B; break;
+ case 0x00f1:
+ clear_key = KEY_WLAN; break;
+ case 0x00f2:
+ clear_key = KEY_BRIGHTNESSDOWN; break;
+ case 0x00f3:
+ clear_key = KEY_BRIGHTNESSUP; break;
+ case 0x00f4:
+ clear_key = KEY_DISPLAY_OFF; break;
+ case 0x00f7:
+ clear_key = KEY_CAMERA; break;
+ case 0x00f8:
+ clear_key = KEY_PROG1; break;
default:
return 0;
}
+ /* Clear temp key */
+ asus_map_key_clear(clear_key);
+
set_bit(EV_REP, hi->input->evbit);
return 1;
}
@@ -1100,11 +1143,10 @@ static int asus_probe(struct hid_device *hdev, const struct hid_device_id *id)
goto err_stop_hw;
}
- if (drvdata->tp) {
+ if (drvdata->tp)
drvdata->input->name = "Asus TouchPad";
- } else {
+ else
drvdata->input->name = "Asus Keyboard";
- }
if (drvdata->tp) {
ret = asus_start_multitouch(hdev);
@@ -1131,8 +1173,8 @@ static void asus_remove(struct hid_device *hdev)
}
static const __u8 asus_g752_fixed_rdesc[] = {
- 0x19, 0x00, /* Usage Minimum (0x00) */
- 0x2A, 0xFF, 0x00, /* Usage Maximum (0xFF) */
+ 0x19, 0x00, /* Usage Minimum (0x00) */
+ 0x2A, 0xFF, 0x00, /* Usage Maximum (0xFF) */
};
static __u8 *asus_report_fixup(struct hid_device *hdev, __u8 *rdesc,
--
2.30.2
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH] staging: drivers: hid: hid-asus.c: Optimized input logic for keys
2022-05-09 10:02 [PATCH] staging: drivers: hid: hid-asus.c: Optimized input logic for keys Johan Boger
@ 2022-05-09 13:54 ` Joe Perches
2022-05-09 15:06 ` Johan Boger
0 siblings, 1 reply; 3+ messages in thread
From: Joe Perches @ 2022-05-09 13:54 UTC (permalink / raw)
To: Johan Boger, jikos; +Cc: benjamin.tissoires, linux-input, linux-kernel
On Mon, 2022-05-09 at 12:02 +0200, Johan Boger wrote:
> Instead of calling asus_map_key_clear() function in each case,
> we now set a temporary value and clear it after default.
> Patch was checked by checkpatch and adjusted accordingly.
This patch subject is not correct. This is not a staging patch.
Your commit message is also incomplete as this is modifying comments,
changing whitespace, and changing brace styles.
and IMO:
Either use a single line case style like:
case foo: statement; break;
or use a multiple line case style like:
case foo:
statement;
break;
but please do not use a mixed case one line and statement; break;
on another like:
case foo:
statement; break;
Please remember checkpatch is only a guide, it's not the last word
on style where every message it emits requires an actual code change.
btw: there are _many_ single line case uses in the kernel
$ git grep -P 'case\s+\w+\s*:\s*\w+' -- '*.[ch]' | wc -l
7581
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] staging: drivers: hid: hid-asus.c: Optimized input logic for keys
2022-05-09 13:54 ` Joe Perches
@ 2022-05-09 15:06 ` Johan Boger
0 siblings, 0 replies; 3+ messages in thread
From: Johan Boger @ 2022-05-09 15:06 UTC (permalink / raw)
To: Joe Perches; +Cc: jikos, benjamin.tissoires, linux-input, linux-kernel
On Mon, May 09, 2022 at 06:54:51AM -0700, Joe Perches wrote:
> On Mon, 2022-05-09 at 12:02 +0200, Johan Boger wrote:
> > Instead of calling asus_map_key_clear() function in each case,
> > we now set a temporary value and clear it after default.
> > Patch was checked by checkpatch and adjusted accordingly.
>
> This patch subject is not correct. This is not a staging patch.
>
> Your commit message is also incomplete as this is modifying comments,
> changing whitespace, and changing brace styles.
>
> and IMO:
>
> Either use a single line case style like:
>
> case foo: statement; break;
>
> or use a multiple line case style like:
>
> case foo:
> statement;
> break;
>
> but please do not use a mixed case one line and statement; break;
> on another like:
>
> case foo:
> statement; break;
>
> Please remember checkpatch is only a guide, it's not the last word
> on style where every message it emits requires an actual code change.
>
> btw: there are _many_ single line case uses in the kernel
>
> $ git grep -P 'case\s+\w+\s*:\s*\w+' -- '*.[ch]' | wc -l
> 7581
>
>
>
Ok. Thanks for helping me out.
Will resend when I have made sure it's up to standards.
Your time and guidance is appreciated.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2022-05-09 15:06 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-05-09 10:02 [PATCH] staging: drivers: hid: hid-asus.c: Optimized input logic for keys Johan Boger
2022-05-09 13:54 ` Joe Perches
2022-05-09 15:06 ` Johan Boger
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).