[PATCH 26/26] Input: maple_keyb - remove redundant 'new' buffer from struct dc_kbd
Dmitry Torokhov
dmitry.torokhov at gmail.com
Fri Jul 3 22:57:49 PDT 2026
The 'new' buffer in struct dc_kbd is only ever used as a temporary
staging area during dc_kbd_callback() to pass the received hardware
packet to dc_scan_kbd().
Remove 'new' from struct dc_kbd entirely and pass the received buffer
pointer directly to dc_scan_kbd(). This saves 8 bytes in struct dc_kbd
and avoids an unnecessary 8-byte memcpy on every keyboard poll cycle.
Assisted-by: Antigravity:gemini-3.5-flash
Signed-off-by: Dmitry Torokhov <dmitry.torokhov at gmail.com>
---
drivers/input/keyboard/maple_keyb.c | 23 ++++++++++-------------
1 file changed, 10 insertions(+), 13 deletions(-)
diff --git a/drivers/input/keyboard/maple_keyb.c b/drivers/input/keyboard/maple_keyb.c
index 1d99ed5bad1e..5b10c6ba7bd5 100644
--- a/drivers/input/keyboard/maple_keyb.c
+++ b/drivers/input/keyboard/maple_keyb.c
@@ -23,8 +23,7 @@ MODULE_LICENSE("GPL");
struct dc_kbd {
struct input_dev *dev;
unsigned short keycode[NR_SCANCODES];
- unsigned char new[8];
- unsigned char old[8];
+ u8 old[8];
};
static const unsigned short dc_kbd_keycode[NR_SCANCODES] = {
@@ -75,7 +74,7 @@ static const unsigned short dc_kbd_keycode[NR_SCANCODES] = {
KEY_CALC, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED
};
-static void dc_scan_kbd(struct dc_kbd *kbd)
+static void dc_scan_kbd(struct dc_kbd *kbd, const u8 *new)
{
struct input_dev *dev = kbd->dev;
void *ptr;
@@ -86,11 +85,11 @@ static void dc_scan_kbd(struct dc_kbd *kbd)
code = i + 224;
keycode = kbd->keycode[code];
input_event(dev, EV_MSC, MSC_SCAN, code);
- input_report_key(dev, keycode, (kbd->new[0] >> i) & 1);
+ input_report_key(dev, keycode, (new[0] >> i) & 1);
}
for (i = 2; i < 8; i++) {
- ptr = memchr(kbd->new + 2, kbd->old[i], 6);
+ ptr = memchr(new + 2, kbd->old[i], 6);
code = kbd->old[i];
if (code > 3 && !ptr) {
keycode = kbd->keycode[code];
@@ -103,8 +102,8 @@ static void dc_scan_kbd(struct dc_kbd *kbd)
code);
}
}
- ptr = memchr(kbd->old + 2, kbd->new[i], 6);
- code = kbd->new[i];
+ ptr = memchr(kbd->old + 2, new[i], 6);
+ code = new[i];
if (code > 3 && !ptr) {
keycode = kbd->keycode[code];
if (keycode) {
@@ -118,19 +117,17 @@ static void dc_scan_kbd(struct dc_kbd *kbd)
}
}
input_sync(dev);
- memcpy(kbd->old, kbd->new, 8);
+ memcpy(kbd->old, new, 8);
}
static void dc_kbd_callback(struct mapleq *mq)
{
struct maple_device *mapledev = mq->dev;
struct dc_kbd *kbd = maple_get_drvdata(mapledev);
- unsigned long *buf = (unsigned long *)(mq->recvbuf->buf);
+ unsigned long *buf = mq->recvbuf->buf;
- if (buf[1] == mapledev->function) {
- memcpy(kbd->new, buf + 2, 8);
- dc_scan_kbd(kbd);
- }
+ if (buf[1] == mapledev->function)
+ dc_scan_kbd(kbd, mq->recvbuf->buf + 8);
}
static int dc_kbd_open(struct input_dev *dev)
--
2.55.0.rc0.799.gd6f94ed593-goog
More information about the linux-mtd
mailing list