summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2017-11-28 09:26:01 +0100
committerHans de Goede <hdegoede@redhat.com>2017-11-28 09:26:01 +0100
commit7bac67a419915b681915496f5e376765deddf9a4 (patch)
tree1d284e8ed56ae9bc1b7854fc3339fc80c0a14bfb
parent9ee4e848995952479ddb718a32eb7faf6bb1b137 (diff)
downloadkernel-7bac67a419915b681915496f5e376765deddf9a4.tar.gz
kernel-7bac67a419915b681915496f5e376765deddf9a4.tar.xz
kernel-7bac67a419915b681915496f5e376765deddf9a4.zip
More build fixes
-rw-r--r--0001-Input-gpio_keys-Allow-suppression-of-input-events-fo.patch163
-rw-r--r--0002-Input-soc_button_array-Suppress-power-button-presses.patch62
-rw-r--r--kernel.spec3
3 files changed, 0 insertions, 228 deletions
diff --git a/0001-Input-gpio_keys-Allow-suppression-of-input-events-fo.patch b/0001-Input-gpio_keys-Allow-suppression-of-input-events-fo.patch
deleted file mode 100644
index 1f03d710b..000000000
--- a/0001-Input-gpio_keys-Allow-suppression-of-input-events-fo.patch
+++ /dev/null
@@ -1,163 +0,0 @@
-From 25bb14c1e78e641049fd1ee0c404a9ccd2755e44 Mon Sep 17 00:00:00 2001
-From: Hans de Goede <hdegoede@redhat.com>
-Date: Sat, 22 Jul 2017 13:00:05 +0200
-Subject: [PATCH 1/2] Input: gpio_keys - Allow suppression of input events for
- wakeup button presses
-
-In some cases it is undesirable for a wakeup button to send input events
-to userspace if pressed to wakeup the system (if pressed during suspend).
-
-A typical example of this is the power-button on laptops / tablets,
-sending a KEY_POWER event to userspace when woken up with the power-button
-will cause userspace to immediately suspend the system again which is
-undesirable.
-
-For power-buttons attached to a PMIC, or handled by e.g. ACPI, not sending
-an input event in this case is take care of by the PMIC / ACPI hardware /
-code. But in the case of a GPIO button we need to explicitly suppress the
-sending of the input event.
-
-This commit adds support for this by adding a no_wakeup_events bool to
-struct gpio_keys_button, which platform code can set to suppress the
-input events for presses of wakeup keys during suspend.
-
-Signed-off-by: Hans de Goede <hdegoede@redhat.com>
----
-Changes in v2:
--This is a rewrite if my "Input: gpio_keys - Do not report wake button
- presses as evdev events" patch.
--Instead of unconditionally ignoring presses of all wake-up buttons during
- suspend, this rewrite makes this configurable per button
--This version uses a timer to delay clearing the suspended flag for software
- debouncing, rather then jiffy compare magic
----
- drivers/input/keyboard/gpio_keys.c | 33 +++++++++++++++++++++++++++++++--
- include/linux/gpio_keys.h | 3 +++
- 2 files changed, 34 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/input/keyboard/gpio_keys.c b/drivers/input/keyboard/gpio_keys.c
-index a047b9af8369..fa3a58620407 100644
---- a/drivers/input/keyboard/gpio_keys.c
-+++ b/drivers/input/keyboard/gpio_keys.c
-@@ -38,6 +38,7 @@ struct gpio_button_data {
-
- unsigned short *code;
-
-+ struct timer_list unsuspend_timer;
- struct timer_list release_timer;
- unsigned int release_delay; /* in msecs, for IRQ-only buttons */
-
-@@ -371,6 +372,9 @@ static void gpio_keys_gpio_report_event(struct gpio_button_data *bdata)
- return;
- }
-
-+ if (state && bdata->button->no_wakeup_events && bdata->suspended)
-+ return;
-+
- if (type == EV_ABS) {
- if (state)
- input_event(input, type, button->code, button->value);
-@@ -400,6 +404,9 @@ static irqreturn_t gpio_keys_gpio_isr(int irq, void *dev_id)
- if (bdata->button->wakeup) {
- const struct gpio_keys_button *button = bdata->button;
-
-+ if (bdata->button->no_wakeup_events && bdata->suspended)
-+ return IRQ_HANDLED;
-+
- pm_stay_awake(bdata->input->dev.parent);
- if (bdata->suspended &&
- (button->type == 0 || button->type == EV_KEY)) {
-@@ -445,9 +452,13 @@ static irqreturn_t gpio_keys_irq_isr(int irq, void *dev_id)
- spin_lock_irqsave(&bdata->lock, flags);
-
- if (!bdata->key_pressed) {
-- if (bdata->button->wakeup)
-+ if (bdata->button->wakeup) {
- pm_wakeup_event(bdata->input->dev.parent, 0);
-
-+ if (bdata->button->no_wakeup_events && bdata->suspended)
-+ goto out;
-+ }
-+
- input_event(input, EV_KEY, *bdata->code, 1);
- input_sync(input);
-
-@@ -468,6 +479,13 @@ static irqreturn_t gpio_keys_irq_isr(int irq, void *dev_id)
- return IRQ_HANDLED;
- }
-
-+static void gpio_keys_unsuspend_timer(unsigned long _data)
-+{
-+ struct gpio_button_data *bdata = (struct gpio_button_data *)_data;
-+
-+ bdata->suspended = false;
-+}
-+
- static void gpio_keys_quiesce_key(void *data)
- {
- struct gpio_button_data *bdata = data;
-@@ -476,6 +494,8 @@ static void gpio_keys_quiesce_key(void *data)
- cancel_delayed_work_sync(&bdata->work);
- else
- del_timer_sync(&bdata->release_timer);
-+
-+ del_timer_sync(&bdata->unsuspend_timer);
- }
-
- static int gpio_keys_setup_key(struct platform_device *pdev,
-@@ -496,6 +516,8 @@ static int gpio_keys_setup_key(struct platform_device *pdev,
- bdata->input = input;
- bdata->button = button;
- spin_lock_init(&bdata->lock);
-+ setup_timer(&bdata->unsuspend_timer, gpio_keys_unsuspend_timer,
-+ (unsigned long)bdata);
-
- if (child) {
- bdata->gpiod = devm_fwnode_get_gpiod_from_child(dev, NULL,
-@@ -868,6 +890,7 @@ static int __maybe_unused gpio_keys_suspend(struct device *dev)
- struct gpio_button_data *bdata = &ddata->data[i];
- if (bdata->button->wakeup)
- enable_irq_wake(bdata->irq);
-+ del_timer_sync(&bdata->unsuspend_timer);
- bdata->suspended = true;
- }
- } else {
-@@ -892,7 +915,13 @@ static int __maybe_unused gpio_keys_resume(struct device *dev)
- struct gpio_button_data *bdata = &ddata->data[i];
- if (bdata->button->wakeup)
- disable_irq_wake(bdata->irq);
-- bdata->suspended = false;
-+ if (bdata->button->no_wakeup_events) {
-+ mod_timer(&bdata->unsuspend_timer, jiffies +
-+ msecs_to_jiffies(
-+ bdata->software_debounce));
-+ } else {
-+ bdata->suspended = false;
-+ }
- }
- } else {
- mutex_lock(&input->mutex);
-diff --git a/include/linux/gpio_keys.h b/include/linux/gpio_keys.h
-index 0b71024c082c..d8a85e52b6bb 100644
---- a/include/linux/gpio_keys.h
-+++ b/include/linux/gpio_keys.h
-@@ -15,6 +15,8 @@ struct device;
- * @debounce_interval: debounce ticks interval in msecs
- * @can_disable: %true indicates that userspace is allowed to
- * disable button via sysfs
-+ * @no_wakeup_events: For wake-up source buttons only, if %true then no input
-+ * events will be generated if pressed while suspended
- * @value: axis value for %EV_ABS
- * @irq: Irq number in case of interrupt keys
- */
-@@ -27,6 +29,7 @@ struct gpio_keys_button {
- int wakeup;
- int debounce_interval;
- bool can_disable;
-+ bool no_wakeup_events;
- int value;
- unsigned int irq;
- };
---
-2.13.4
-
diff --git a/0002-Input-soc_button_array-Suppress-power-button-presses.patch b/0002-Input-soc_button_array-Suppress-power-button-presses.patch
deleted file mode 100644
index d95aeb36c..000000000
--- a/0002-Input-soc_button_array-Suppress-power-button-presses.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From d561f0543506bc12e7b3355efddb0bfd7ca83c74 Mon Sep 17 00:00:00 2001
-From: Hans de Goede <hdegoede@redhat.com>
-Date: Sat, 22 Jul 2017 13:17:36 +0200
-Subject: [PATCH 2/2] Input: soc_button_array - Suppress power button presses
- during suspend
-
-If the power-button is pressed to wakeup the laptop/tablet from suspend
-and we report a KEY_POWER event to userspace when woken up this will cause
-userspace to immediately suspend the system again which is undesirable.
-
-This commit sets the new no_wakeup_events flag in the gpio_keys_button
-struct for the power-button suppressing the undesirable KEY_POWER input
-events on wake-up.
-
-Signed-off-by: Hans de Goede <hdegoede@redhat.com>
----
-Changes in v2:
--New patch in v2 of this patch-set
----
- drivers/input/misc/soc_button_array.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/input/misc/soc_button_array.c b/drivers/input/misc/soc_button_array.c
-index f600f3a7a3c6..27b99831cb97 100644
---- a/drivers/input/misc/soc_button_array.c
-+++ b/drivers/input/misc/soc_button_array.c
-@@ -27,6 +27,7 @@ struct soc_button_info {
- unsigned int event_code;
- bool autorepeat;
- bool wakeup;
-+ bool no_wakeup_events;
- };
-
- /*
-@@ -100,6 +101,7 @@ soc_button_device_create(struct platform_device *pdev,
- gpio_keys[n_buttons].active_low = 1;
- gpio_keys[n_buttons].desc = info->name;
- gpio_keys[n_buttons].wakeup = info->wakeup;
-+ gpio_keys[n_buttons].no_wakeup_events = info->no_wakeup_events;
- /* These devices often use cheap buttons, use 50 ms debounce */
- gpio_keys[n_buttons].debounce_interval = 50;
- n_buttons++;
-@@ -185,6 +187,7 @@ static int soc_button_parse_btn_desc(struct device *dev,
- info->name = "power";
- info->event_code = KEY_POWER;
- info->wakeup = true;
-+ info->no_wakeup_events = true;
- } else if (upage == 0x07 && usage == 0xe3) {
- info->name = "home";
- info->event_code = KEY_LEFTMETA;
-@@ -369,7 +372,7 @@ static int soc_button_probe(struct platform_device *pdev)
- * Platforms"
- */
- static struct soc_button_info soc_button_PNP0C40[] = {
-- { "power", 0, EV_KEY, KEY_POWER, false, true },
-+ { "power", 0, EV_KEY, KEY_POWER, false, true, true },
- { "home", 1, EV_KEY, KEY_LEFTMETA, false, true },
- { "volume_up", 2, EV_KEY, KEY_VOLUMEUP, true, false },
- { "volume_down", 3, EV_KEY, KEY_VOLUMEDOWN, true, false },
---
-2.13.4
-
diff --git a/kernel.spec b/kernel.spec
index 27f0a15f2..70bbfc411 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -615,9 +615,6 @@ Patch332: arm64-socionext-96b-enablement.patch
# 600 - Patches for improved Bay and Cherry Trail device support
# Below patches are submitted upstream, awaiting review / merging
-# This one needs to be rebased
-# Patch601: 0001-Input-gpio_keys-Allow-suppression-of-input-events-fo.patch
-Patch602: 0002-Input-soc_button_array-Suppress-power-button-presses.patch
Patch610: 0010-Input-silead-Add-support-for-capactive-home-button-f.patch
# rhbz 1476467