From: Greg Kroah-Hartman Date: Wed, 26 Oct 2016 11:41:08 +0000 (+0200) Subject: delete queue-4.4/pinctrl-intel-only-restore-pins-that-are-used-by-the-driver.patch X-Git-Tag: v4.8.5~4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fa32bb525300d7cfa4bdb1ee6d9e9289270c0e61;p=thirdparty%2Fkernel%2Fstable-queue.git delete queue-4.4/pinctrl-intel-only-restore-pins-that-are-used-by-the-driver.patch --- diff --git a/queue-4.4/pinctrl-intel-only-restore-pins-that-are-used-by-the-driver.patch b/queue-4.4/pinctrl-intel-only-restore-pins-that-are-used-by-the-driver.patch deleted file mode 100644 index 667799fd28f..00000000000 --- a/queue-4.4/pinctrl-intel-only-restore-pins-that-are-used-by-the-driver.patch +++ /dev/null @@ -1,92 +0,0 @@ -From c538b9436751a0be2e1246b48353bc23156bdbcc Mon Sep 17 00:00:00 2001 -From: Mika Westerberg -Date: Mon, 10 Oct 2016 16:39:31 +0300 -Subject: pinctrl: intel: Only restore pins that are used by the driver - -From: Mika Westerberg - -commit c538b9436751a0be2e1246b48353bc23156bdbcc upstream. - -Dell XPS 13 (and maybe some others) uses a GPIO (CPU_GP_1) during suspend -to explicitly disable USB touchscreen interrupt. This is done to prevent -situation where the lid is closed the touchscreen is left functional. - -The pinctrl driver (wrongly) assumes it owns all pins which are owned by -host and not locked down. It is perfectly fine for BIOS to use those pins -as it is also considered as host in this context. - -What happens is that when the lid of Dell XPS 13 is closed, the BIOS -configures CPU_GP_1 low disabling the touchscreen interrupt. During resume -we restore all host owned pins to the known state which includes CPU_GP_1 -and this overwrites what the BIOS has programmed there causing the -touchscreen to fail as no interrupts are reaching the CPU anymore. - -Fix this by restoring only those pins we know are explicitly requested by -the kernel one way or other. - -Link: https://bugzilla.kernel.org/show_bug.cgi?id=176361 -Reported-by: AceLan Kao -Tested-by: AceLan Kao -Signed-off-by: Mika Westerberg -Signed-off-by: Linus Walleij -Signed-off-by: Greg Kroah-Hartman - ---- - drivers/pinctrl/intel/pinctrl-intel.c | 25 +++++++++++++++++++++++-- - 1 file changed, 23 insertions(+), 2 deletions(-) - ---- a/drivers/pinctrl/intel/pinctrl-intel.c -+++ b/drivers/pinctrl/intel/pinctrl-intel.c -@@ -23,6 +23,7 @@ - #include - #include - -+#include "../core.h" - #include "pinctrl-intel.h" - - /* Offset from regs */ -@@ -1049,6 +1050,26 @@ int intel_pinctrl_remove(struct platform - EXPORT_SYMBOL_GPL(intel_pinctrl_remove); - - #ifdef CONFIG_PM_SLEEP -+static bool intel_pinctrl_should_save(struct intel_pinctrl *pctrl, unsigned pin) -+{ -+ const struct pin_desc *pd = pin_desc_get(pctrl->pctldev, pin); -+ -+ if (!pd || !intel_pad_usable(pctrl, pin)) -+ return false; -+ -+ /* -+ * Only restore the pin if it is actually in use by the kernel (or -+ * by userspace). It is possible that some pins are used by the -+ * BIOS during resume and those are not always locked down so leave -+ * them alone. -+ */ -+ if (pd->mux_owner || pd->gpio_owner || -+ gpiochip_line_is_irq(&pctrl->chip, pin)) -+ return true; -+ -+ return false; -+} -+ - int intel_pinctrl_suspend(struct device *dev) - { - struct platform_device *pdev = to_platform_device(dev); -@@ -1062,7 +1083,7 @@ int intel_pinctrl_suspend(struct device - const struct pinctrl_pin_desc *desc = &pctrl->soc->pins[i]; - u32 val; - -- if (!intel_pad_usable(pctrl, desc->number)) -+ if (!intel_pinctrl_should_save(pctrl, desc->number)) - continue; - - val = readl(intel_get_padcfg(pctrl, desc->number, PADCFG0)); -@@ -1123,7 +1144,7 @@ int intel_pinctrl_resume(struct device * - void __iomem *padcfg; - u32 val; - -- if (!intel_pad_usable(pctrl, desc->number)) -+ if (!intel_pinctrl_should_save(pctrl, desc->number)) - continue; - - padcfg = intel_get_padcfg(pctrl, desc->number, PADCFG0); diff --git a/queue-4.4/series b/queue-4.4/series index f82f28ac650..cab5c4e17fa 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -81,7 +81,6 @@ fix-regression-which-breaks-dfs-mounting.patch blkcg-unlock-blkcg_pol_mutex-only-once-when-cpd-null.patch x86-e820-don-t-merge-consecutive-e820_pram-ranges.patch kvm-x86-memset-whole-irq_eoi.patch -pinctrl-intel-only-restore-pins-that-are-used-by-the-driver.patch irqchip-gicv3-handle-loop-timeout-proper.patch sd-fix-rw_max-for-devices-that-report-an-optimal-xfer-size.patch hpsa-correct-skipping-masked-peripherals.patch