From: Sasha Levin Date: Sun, 25 Apr 2021 00:35:58 +0000 (-0400) Subject: Fixes for 5.4 X-Git-Tag: v4.4.268~28 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a4eddc254c8d97568bcfa366c1f126465528e13b;p=thirdparty%2Fkernel%2Fstable-queue.git Fixes for 5.4 Signed-off-by: Sasha Levin --- diff --git a/queue-5.4/arm64-dts-allwinner-revert-sd-card-cd-gpio-for-pine6.patch b/queue-5.4/arm64-dts-allwinner-revert-sd-card-cd-gpio-for-pine6.patch new file mode 100644 index 00000000000..e96f18cc144 --- /dev/null +++ b/queue-5.4/arm64-dts-allwinner-revert-sd-card-cd-gpio-for-pine6.patch @@ -0,0 +1,59 @@ +From 0daaed37e4ac1b79c34021ee75883d80c86abc92 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 14 Apr 2021 11:47:40 +0100 +Subject: arm64: dts: allwinner: Revert SD card CD GPIO for Pine64-LTS + +From: Andre Przywara + +[ Upstream commit 4d09ccc4a81e7de6b002482af554d8b5626f5041 ] + +Commit 941432d00768 ("arm64: dts: allwinner: Drop non-removable from +SoPine/LTS SD card") enabled the card detect GPIO for the SOPine module, +along the way with the Pine64-LTS, which share the same base .dtsi. + +This was based on the observation that the Pine64-LTS has as "push-push" +SD card socket, and that the schematic mentions the card detect GPIO. + +After having received two reports about failing SD card access with that +patch, some more research and polls on that subject revealed that there +are at least two different versions of the Pine64-LTS out there: +- On some boards (including mine) the card detect pin is "stuck" at + high, regardless of an microSD card being inserted or not. +- On other boards the card-detect is working, but is active-high, by + virtue of an explicit inverter circuit, as shown in the schematic. + +To cover all versions of the board out there, and don't take any chances, +let's revert the introduction of the active-low CD GPIO, but let's use +the broken-cd property for the Pine64-LTS this time. That should avoid +regressions and should work for everyone, even allowing SD card changes +now. +The SOPine card detect has proven to be working, so let's keep that +GPIO in place. + +Fixes: 941432d00768 ("arm64: dts: allwinner: Drop non-removable from SoPine/LTS SD card") +Reported-by: Michael Weiser +Reported-by: Daniel Kulesz +Suggested-by: Chen-Yu Tsai +Signed-off-by: Andre Przywara +Tested-by: Michael Weiser +Signed-off-by: Maxime Ripard +Link: https://lore.kernel.org/r/20210414104740.31497-1-andre.przywara@arm.com +Signed-off-by: Sasha Levin +--- + arch/arm64/boot/dts/allwinner/sun50i-a64-pine64-lts.dts | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64-lts.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64-lts.dts +index 8d15164f2a3c..7eb252adf9f0 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64-lts.dts ++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64-lts.dts +@@ -13,5 +13,5 @@ + }; + + &mmc0 { +- cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 push-push switch */ ++ broken-cd; /* card detect is broken on *some* boards */ + }; +-- +2.30.2 + diff --git a/queue-5.4/gpio-omap-save-and-restore-sysconfig.patch b/queue-5.4/gpio-omap-save-and-restore-sysconfig.patch new file mode 100644 index 00000000000..cd23801033a --- /dev/null +++ b/queue-5.4/gpio-omap-save-and-restore-sysconfig.patch @@ -0,0 +1,118 @@ +From 9ec4462f01add77004f893a74d6583b7681d0c11 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sat, 17 Apr 2021 11:38:39 +0300 +Subject: gpio: omap: Save and restore sysconfig + +From: Tony Lindgren + +[ Upstream commit ddd8d94ca31e768c76cf8bfe34ba7b10136b3694 ] + +As we are using cpu_pm to save and restore context, we must also save and +restore the GPIO sysconfig register. This is needed because we are not +calling PM runtime functions at all with cpu_pm. + +We need to save the sysconfig on idle as it's value can get reconfigured by +PM runtime and can be different from the init time value. Device specific +flags like "ti,no-idle-on-init" can affect the init value. + +Fixes: b764a5863fd8 ("gpio: omap: Remove custom PM calls and use cpu_pm instead") +Cc: Aaro Koskinen +Cc: Adam Ford +Cc: Andreas Kemnade +Cc: Grygorii Strashko +Cc: Peter Ujfalusi +Signed-off-by: Tony Lindgren +Acked-by: Grygorii Strashko +Signed-off-by: Bartosz Golaszewski +Signed-off-by: Sasha Levin +--- + drivers/gpio/gpio-omap.c | 9 +++++++++ + include/linux/platform_data/gpio-omap.h | 3 +++ + 2 files changed, 12 insertions(+) + +diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c +index d0f27084a942..ce6954390cfd 100644 +--- a/drivers/gpio/gpio-omap.c ++++ b/drivers/gpio/gpio-omap.c +@@ -29,6 +29,7 @@ + #define OMAP4_GPIO_DEBOUNCINGTIME_MASK 0xFF + + struct gpio_regs { ++ u32 sysconfig; + u32 irqenable1; + u32 irqenable2; + u32 wake_en; +@@ -1058,6 +1059,7 @@ static void omap_gpio_init_context(struct gpio_bank *p) + const struct omap_gpio_reg_offs *regs = p->regs; + void __iomem *base = p->base; + ++ p->context.sysconfig = readl_relaxed(base + regs->sysconfig); + p->context.ctrl = readl_relaxed(base + regs->ctrl); + p->context.oe = readl_relaxed(base + regs->direction); + p->context.wake_en = readl_relaxed(base + regs->wkup_en); +@@ -1077,6 +1079,7 @@ static void omap_gpio_restore_context(struct gpio_bank *bank) + const struct omap_gpio_reg_offs *regs = bank->regs; + void __iomem *base = bank->base; + ++ writel_relaxed(bank->context.sysconfig, base + regs->sysconfig); + writel_relaxed(bank->context.wake_en, base + regs->wkup_en); + writel_relaxed(bank->context.ctrl, base + regs->ctrl); + writel_relaxed(bank->context.leveldetect0, base + regs->leveldetect0); +@@ -1104,6 +1107,10 @@ static void omap_gpio_idle(struct gpio_bank *bank, bool may_lose_context) + + bank->saved_datain = readl_relaxed(base + bank->regs->datain); + ++ /* Save syconfig, it's runtime value can be different from init value */ ++ if (bank->loses_context) ++ bank->context.sysconfig = readl_relaxed(base + bank->regs->sysconfig); ++ + if (!bank->enabled_non_wakeup_gpios) + goto update_gpio_context_count; + +@@ -1259,6 +1266,7 @@ static int gpio_omap_cpu_notifier(struct notifier_block *nb, + + static const struct omap_gpio_reg_offs omap2_gpio_regs = { + .revision = OMAP24XX_GPIO_REVISION, ++ .sysconfig = OMAP24XX_GPIO_SYSCONFIG, + .direction = OMAP24XX_GPIO_OE, + .datain = OMAP24XX_GPIO_DATAIN, + .dataout = OMAP24XX_GPIO_DATAOUT, +@@ -1282,6 +1290,7 @@ static const struct omap_gpio_reg_offs omap2_gpio_regs = { + + static const struct omap_gpio_reg_offs omap4_gpio_regs = { + .revision = OMAP4_GPIO_REVISION, ++ .sysconfig = OMAP4_GPIO_SYSCONFIG, + .direction = OMAP4_GPIO_OE, + .datain = OMAP4_GPIO_DATAIN, + .dataout = OMAP4_GPIO_DATAOUT, +diff --git a/include/linux/platform_data/gpio-omap.h b/include/linux/platform_data/gpio-omap.h +index 8b30b14b47d3..f377817ce75c 100644 +--- a/include/linux/platform_data/gpio-omap.h ++++ b/include/linux/platform_data/gpio-omap.h +@@ -85,6 +85,7 @@ + * omap2+ specific GPIO registers + */ + #define OMAP24XX_GPIO_REVISION 0x0000 ++#define OMAP24XX_GPIO_SYSCONFIG 0x0010 + #define OMAP24XX_GPIO_IRQSTATUS1 0x0018 + #define OMAP24XX_GPIO_IRQSTATUS2 0x0028 + #define OMAP24XX_GPIO_IRQENABLE2 0x002c +@@ -108,6 +109,7 @@ + #define OMAP24XX_GPIO_SETDATAOUT 0x0094 + + #define OMAP4_GPIO_REVISION 0x0000 ++#define OMAP4_GPIO_SYSCONFIG 0x0010 + #define OMAP4_GPIO_EOI 0x0020 + #define OMAP4_GPIO_IRQSTATUSRAW0 0x0024 + #define OMAP4_GPIO_IRQSTATUSRAW1 0x0028 +@@ -148,6 +150,7 @@ + #ifndef __ASSEMBLER__ + struct omap_gpio_reg_offs { + u16 revision; ++ u16 sysconfig; + u16 direction; + u16 datain; + u16 dataout; +-- +2.30.2 + diff --git a/queue-5.4/pinctrl-lewisburg-update-number-of-pins-in-community.patch b/queue-5.4/pinctrl-lewisburg-update-number-of-pins-in-community.patch new file mode 100644 index 00000000000..436f13ce8f1 --- /dev/null +++ b/queue-5.4/pinctrl-lewisburg-update-number-of-pins-in-community.patch @@ -0,0 +1,40 @@ +From 5316bb0e2d8325a613e57fe6d84bc865d935ba79 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 12 Apr 2021 17:17:59 -0600 +Subject: pinctrl: lewisburg: Update number of pins in community + +From: Yuanyuan Zhong + +[ Upstream commit 196d941753297d0ca73c563ccd7d00be049ec226 ] + +When updating pin names for Intel Lewisburg, the numbers of pins were +left behind. Update them accordingly. + +Fixes: e66ff71fd0db ("pinctrl: lewisburg: Update pin list according to v1.1v6") +Signed-off-by: Yuanyuan Zhong +Signed-off-by: Andy Shevchenko +Signed-off-by: Sasha Levin +--- + drivers/pinctrl/intel/pinctrl-lewisburg.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/drivers/pinctrl/intel/pinctrl-lewisburg.c b/drivers/pinctrl/intel/pinctrl-lewisburg.c +index 7fdf4257df1e..ad4b446d588e 100644 +--- a/drivers/pinctrl/intel/pinctrl-lewisburg.c ++++ b/drivers/pinctrl/intel/pinctrl-lewisburg.c +@@ -299,9 +299,9 @@ static const struct pinctrl_pin_desc lbg_pins[] = { + static const struct intel_community lbg_communities[] = { + LBG_COMMUNITY(0, 0, 71), + LBG_COMMUNITY(1, 72, 132), +- LBG_COMMUNITY(3, 133, 144), +- LBG_COMMUNITY(4, 145, 180), +- LBG_COMMUNITY(5, 181, 246), ++ LBG_COMMUNITY(3, 133, 143), ++ LBG_COMMUNITY(4, 144, 178), ++ LBG_COMMUNITY(5, 179, 246), + }; + + static const struct intel_pinctrl_soc_data lbg_soc_data = { +-- +2.30.2 + diff --git a/queue-5.4/series b/queue-5.4/series index 3fd3cfa461b..65fc731a03a 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -1 +1,4 @@ s390-ptrace-return-enosys-when-invalid-syscall-is-supplied.patch +gpio-omap-save-and-restore-sysconfig.patch +pinctrl-lewisburg-update-number-of-pins-in-community.patch +arm64-dts-allwinner-revert-sd-card-cd-gpio-for-pine6.patch