platform/x86: fujitsu-laptop: move keycode processing to separate functions
authorMichał Kępień <kernel@kempniu.pl>
Wed, 11 Jan 2017 08:59:31 +0000 (09:59 +0100)
committerDarren Hart <dvhart@linux.intel.com>
Sat, 4 Feb 2017 01:47:18 +0000 (02:47 +0100)
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: Michał Kępień <kernel@kempniu.pl>
Acked-by: Jonathan Woithe <jwoithe@just42.net>
Signed-off-by: Darren Hart <dvhart@linux.intel.com>
drivers/platform/x86/fujitsu-laptop.c

index de89fc8135fb1094e9742221d4a249e56e7d711a..f46ef5782e04fc191b1d5a0af4742610ef10931d 100644 (file)
@@ -1035,12 +1035,48 @@ static int acpi_fujitsu_hotkey_remove(struct acpi_device *device)
        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)
 {
        struct input_dev *input;
-       int keycode, keycode_r;
+       int keycode;
        unsigned int irb = 1;
-       int i, status;
+       int i;
 
        input = fujitsu_hotkey->input;
 
@@ -1088,37 +1124,11 @@ static void acpi_fujitsu_hotkey_notify(struct acpi_device *device, u32 event)
                        keycode = -1;
                        break;
                }
-               if (keycode > 0) {
-                       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);
-                       }
-               } 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);
-                       }
-               }
+
+               if (keycode > 0)
+                       acpi_fujitsu_hotkey_press(keycode);
+               else if (keycode == 0)
+                       acpi_fujitsu_hotkey_release();
        }
 
        /* On some models (first seen on the Skylake-based Lifebook