Commit 2451d19d authored by Michał Kępień's avatar Michał Kępień Committed by Darren Hart

platform/x86: fujitsu-laptop: move keycode processing to separate functions

acpi_fujitsu_hotkey_notify() is pretty deeply nested, which hurts
readability.  Move the keycode processing part to two separate functions
to make the code easier to understand and save a few line breaks.
Rename variable keycode_r to keycode as there is no longer any need to
differentiate between the two.  Tweak indentations to make checkpatch
happy.
Signed-off-by: default avatarMichał Kępień <kernel@kempniu.pl>
Acked-by: default avatarJonathan Woithe <jwoithe@just42.net>
Signed-off-by: default avatarDarren Hart <dvhart@linux.intel.com>
parent eb357cba
...@@ -1035,12 +1035,48 @@ static int acpi_fujitsu_hotkey_remove(struct acpi_device *device) ...@@ -1035,12 +1035,48 @@ static int acpi_fujitsu_hotkey_remove(struct acpi_device *device)
return 0; return 0;
} }
static void acpi_fujitsu_hotkey_press(int keycode)
{
struct input_dev *input = fujitsu_hotkey->input;
int status;
vdbg_printk(FUJLAPTOP_DBG_TRACE,
"Push keycode into ringbuffer [%d]\n", keycode);
status = kfifo_in_locked(&fujitsu_hotkey->fifo,
(unsigned char *)&keycode, sizeof(keycode),
&fujitsu_hotkey->fifo_lock);
if (status != sizeof(keycode)) {
vdbg_printk(FUJLAPTOP_DBG_WARN,
"Could not push keycode [0x%x]\n", keycode);
} else {
input_report_key(input, keycode, 1);
input_sync(input);
}
}
static void acpi_fujitsu_hotkey_release(void)
{
struct input_dev *input = fujitsu_hotkey->input;
int keycode, status;
while ((status = kfifo_out_locked(&fujitsu_hotkey->fifo,
(unsigned char *)&keycode,
sizeof(keycode),
&fujitsu_hotkey->fifo_lock))
== sizeof(keycode)) {
input_report_key(input, keycode, 0);
input_sync(input);
vdbg_printk(FUJLAPTOP_DBG_TRACE,
"Pop keycode from ringbuffer [%d]\n", keycode);
}
}
static void acpi_fujitsu_hotkey_notify(struct acpi_device *device, u32 event) static void acpi_fujitsu_hotkey_notify(struct acpi_device *device, u32 event)
{ {
struct input_dev *input; struct input_dev *input;
int keycode, keycode_r; int keycode;
unsigned int irb = 1; unsigned int irb = 1;
int i, status; int i;
input = fujitsu_hotkey->input; input = fujitsu_hotkey->input;
...@@ -1088,37 +1124,11 @@ static void acpi_fujitsu_hotkey_notify(struct acpi_device *device, u32 event) ...@@ -1088,37 +1124,11 @@ static void acpi_fujitsu_hotkey_notify(struct acpi_device *device, u32 event)
keycode = -1; keycode = -1;
break; break;
} }
if (keycode > 0) {
vdbg_printk(FUJLAPTOP_DBG_TRACE, if (keycode > 0)
"Push keycode into ringbuffer [%d]\n", acpi_fujitsu_hotkey_press(keycode);
keycode); else if (keycode == 0)
status = kfifo_in_locked(&fujitsu_hotkey->fifo, acpi_fujitsu_hotkey_release();
(unsigned char *)&keycode,
sizeof(keycode),
&fujitsu_hotkey->fifo_lock);
if (status != sizeof(keycode)) {
vdbg_printk(FUJLAPTOP_DBG_WARN,
"Could not push keycode [0x%x]\n",
keycode);
} else {
input_report_key(input, keycode, 1);
input_sync(input);
}
} else if (keycode == 0) {
while ((status =
kfifo_out_locked(
&fujitsu_hotkey->fifo,
(unsigned char *) &keycode_r,
sizeof(keycode_r),
&fujitsu_hotkey->fifo_lock))
== sizeof(keycode_r)) {
input_report_key(input, keycode_r, 0);
input_sync(input);
vdbg_printk(FUJLAPTOP_DBG_TRACE,
"Pop keycode from ringbuffer [%d]\n",
keycode_r);
}
}
} }
/* On some models (first seen on the Skylake-based Lifebook /* On some models (first seen on the Skylake-based Lifebook
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment