linux-stable/drivers/pinctrl
Joel Stanley 606d4ef492 pinctrl: aspeed: Revert "Force to disable the function's signal"
This reverts commit cf517fef60.

The commit cf517fef60 ("pinctrl: aspeed: Force to disable the
function's signal") exposed a problem with fetching the regmap for
reading the GFX register.

The Romulus machine the device tree contains a gpio hog for GPIO S7.
With the patch applied:

  Muxing pin 151 for GPIO
  Disabling signal VPOB9 for VPO
  aspeed-g5-pinctrl 1e6e2080.pinctrl: Failed to acquire regmap for IP block 1
  aspeed-g5-pinctrl 1e6e2080.pinctrl: request() failed for pin 151

The code path is aspeed-gpio -> pinmux-g5 -> regmap -> clk, and the
of_clock code returns an error as it doesn't have a valid struct clk_hw
pointer. The regmap call happens because pinmux wants to check the GFX
node (IP block 1) to query bits there.

For reference, before the offending patch:

  Muxing pin 151 for GPIO
  Disabling signal VPOB9 for VPO
  Want SCU8C[0x00000080]=0x1, got 0x0 from 0x00000000
  Disabling signal VPOB9 for VPOOFF1
  Want SCU8C[0x00000080]=0x1, got 0x0 from 0x00000000
  Disabling signal VPOB9 for VPOOFF2
  Want SCU8C[0x00000080]=0x1, got 0x0 from 0x00000000
  Enabling signal GPIOS7 for GPIOS7
  Muxed pin 151 as GPIOS7
  gpio-943 (seq_cont): hogged as output/low

We can't skip the clock check to allow pinmux to proceed, because the
write to disable VPOB9 will try to set a bit in the GFX register space
which will not stick when the IP is in reset. However, we do not want to
enable the IP just so pinmux can do a disable-enable dance for the pin.

For now, revert the offending patch while a correct solution is found.

Fixes: cf517fef60 ("pinctrl: aspeed: Force to disable the function's signal")
Link: https://github.com/openbmc/linux/issues/218
Signed-off-by: Joel Stanley <joel@jms.id.au>
Link: https://lore.kernel.org/r/20230130220845.917985-1-joel@jms.id.au
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2023-01-30 23:51:03 +01:00
..
actions intel-pinctrl for v6.1-2 2022-10-26 09:58:29 +02:00
aspeed pinctrl: aspeed: Revert "Force to disable the function's signal" 2023-01-30 23:51:03 +01:00
bcm pinctrl: bcm: Add missing header(s) 2022-10-24 12:53:33 +03:00
berlin pinctrl: berlin: fix spelling typo in comment 2022-09-05 14:10:14 +02:00
cirrus pinctrl: lochnagar: Add missing header(s) 2022-10-24 17:06:46 +03:00
freescale pinctrl: freescale: Fix i.MXRT1050 pad names 2022-11-10 09:19:43 +01:00
intel Pin control changes for the v6.2 kernel cycle: 2022-12-13 13:03:06 -08:00
mediatek pinctrl: mediatek: Fix the drive register definition of some Pins 2023-01-26 14:41:51 +01:00
meson pinctrl: meson: Switch to use fwnode instead of of_node 2022-09-08 10:35:30 +02:00
mvebu pinctrl: mvebu: Add missing header(s) 2022-10-24 17:06:46 +03:00
nomadik pinctrl: nomadik: Add missing header(s) 2023-01-04 02:36:47 +01:00
nuvoton pinctrl: nuvoton: wpcm450: Fix handling of inverted MFSEL bits 2022-11-10 09:19:42 +01:00
pxa drivers/pinctrl: remove redundant ret variable 2022-01-24 01:12:54 +01:00
qcom Pin control changes for the v6.2 kernel cycle: 2022-12-13 13:03:06 -08:00
ralink pinctrl: ralink: Check for null return of devm_kcalloc 2022-07-11 14:40:17 +02:00
renesas pinctrl: renesas: Updates for v6.2 2022-11-20 23:34:45 +01:00
samsung pinctrl: samsung: Add missing header(s) 2022-10-24 17:06:46 +03:00
spear pinctrl: spear: Add missing header(s) 2022-10-24 17:06:47 +03:00
sprd pinctrl: sprd: Add missing header(s) 2022-10-24 17:06:47 +03:00
starfive pinctrl: starfive: Use existing variable gpio 2022-11-22 09:25:30 +01:00
stm32 pinctrl: stm32: Remove check for pins-are-numbered 2022-12-03 10:18:55 +01:00
sunplus pinctrl: sp7021: fix unused function warning 2022-12-29 02:07:25 +01:00
sunxi pinctrl: sunxi: d1: Add CAN bus pinmuxes 2022-11-26 22:57:50 +01:00
tegra pinctrl: tegra: Separate Tegra194 instances 2022-11-14 14:16:46 +01:00
ti pinctrl: ti-iodelay: Add missing header(s) 2022-10-24 17:06:47 +03:00
uniphier pinctrl: uniphier: Add missing header(s) 2022-10-24 17:06:47 +03:00
visconti
vt8500 pinctrl: Get rid of duplicate of_node assignment in the drivers 2021-12-16 04:18:30 +01:00
core.c pinctrl: Move for_each_maps() to namespace and hide iterator inside 2022-11-14 14:19:33 +01:00
core.h pinctrl: Move for_each_maps() to namespace and hide iterator inside 2022-11-14 14:19:33 +01:00
devicetree.c pinctrl: devicetree: fix null pointer dereferencing in pinctrl_dt_to_map 2022-11-10 12:26:18 +01:00
devicetree.h pinctrl: Clean up headers 2022-10-24 17:06:48 +03:00
Kconfig pinctrl: pinctrl-loongson2: fix Kconfig dependency 2022-11-21 14:36:03 +01:00
Makefile pinctrl: pinctrl-loongson2: add pinctrl driver support 2022-11-17 10:24:08 +01:00
pinconf-generic.c pinctrl: pinconf-generic: add missing of_node_put() 2022-11-25 10:49:28 +01:00
pinconf.c
pinconf.h pinctrl: Clean up headers 2022-10-24 17:06:48 +03:00
pinctrl-amd.c pinctrl: amd: Fix debug output for debounce time 2023-01-27 13:40:29 +01:00
pinctrl-amd.h pinctrl: amd: Implement pinmux functionality 2022-06-15 15:54:20 +02:00
pinctrl-apple-gpio.c pinctrl: apple-gpio: Add missing header(s) 2022-10-24 12:31:17 +03:00
pinctrl-artpec6.c
pinctrl-as3722.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_318.RULE 2022-06-10 14:51:36 +02:00
pinctrl-at91-pio4.c intel-pinctrl for v6.1-2 2022-10-26 09:58:29 +02:00
pinctrl-at91.c pinctrl: at91: Add missing header(s) 2022-10-24 12:31:33 +03:00
pinctrl-at91.h
pinctrl-axp209.c pinctrl: axp209: Add missing header(s) 2022-10-24 12:31:55 +03:00
pinctrl-bm1880.c pinctrl: bm1880: Add missing header(s) 2022-10-24 12:53:33 +03:00
pinctrl-cy8c95x0.c intel-pinctrl for v6.1-2 2022-10-26 09:58:29 +02:00
pinctrl-da850-pupd.c
pinctrl-da9062.c pinctrl: Propagate firmware node from a parent device 2021-12-22 03:09:56 +01:00
pinctrl-digicolor.c pinctrl: Get rid of duplicate of_node assignment in the drivers 2021-12-16 04:18:30 +01:00
pinctrl-equilibrium.c pinctrl: equilibrium: Switch to use fwnode instead of of_node 2022-05-09 13:46:51 +02:00
pinctrl-equilibrium.h pinctrl: equilibrium: Switch to use fwnode instead of of_node 2022-05-09 13:46:51 +02:00
pinctrl-falcon.c pinctrl: lantiq: Add missing header(s) 2022-10-24 17:06:46 +03:00
pinctrl-gemini.c pinctrl: gemini: Add missing header(s) 2022-10-24 17:06:45 +03:00
pinctrl-ingenic.c Pin control changes for the v6.2 kernel cycle: 2022-12-13 13:03:06 -08:00
pinctrl-k210.c pinctrl: k210: call of_node_put() 2022-11-22 09:35:27 +01:00
pinctrl-keembay.c pinctrl: keembay: rework loops looking for groups names 2021-12-22 02:57:27 +01:00
pinctrl-lantiq.c pinctrl: lantiq: Add missing header(s) 2022-10-24 17:06:46 +03:00
pinctrl-lantiq.h pinctrl: lantiq: Add missing header(s) 2022-10-24 17:06:46 +03:00
pinctrl-loongson2.c pinctrl: loongson2: Fix some const correctness 2022-11-25 11:41:01 +01:00
pinctrl-lpc18xx.c pinctrl: lpc18xx: Add missing header(s) 2022-10-24 17:06:46 +03:00
pinctrl-max77620.c pinctrl: max77620: drop unneeded MODULE_ALIAS 2022-04-22 22:56:46 +02:00
pinctrl-mcp23s08.c pinctrl: mcp23s08: Drop assignment of default number of OF cells 2022-09-03 00:17:35 +02:00
pinctrl-mcp23s08.h
pinctrl-mcp23s08_i2c.c
pinctrl-mcp23s08_spi.c
pinctrl-microchip-sgpio.c pinctrl: microchip-sgpio: Add missing header(s) 2022-10-24 17:06:46 +03:00
pinctrl-ocelot.c Pin control changes for the v6.2 kernel cycle: 2022-12-13 13:03:06 -08:00
pinctrl-oxnas.c pinctrl: Get rid of duplicate of_node assignment in the drivers 2021-12-16 04:18:30 +01:00
pinctrl-palmas.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_318.RULE 2022-06-10 14:51:36 +02:00
pinctrl-pic32.c pinctrl: Get rid of duplicate of_node assignment in the drivers 2021-12-16 04:18:30 +01:00
pinctrl-pic32.h
pinctrl-pistachio.c pinctrl: pistachio: Correct the fwnode_irq_get() return value check 2022-09-08 15:18:58 +02:00
pinctrl-rk805.c pinctrl: Propagate firmware node from a parent device 2021-12-22 03:09:56 +01:00
pinctrl-rockchip.c pinctrl: rockchip: fix mux route data for rk3568 2023-01-17 14:16:45 +01:00
pinctrl-rockchip.h pinctrl: rockchip: Add RV1126 pinctrl support 2022-08-22 09:51:08 +02:00
pinctrl-single.c pinctrl: single: fix potential NULL dereference 2023-01-27 13:43:55 +01:00
pinctrl-st.c intel-pinctrl for v6.1-2 2022-10-26 09:58:29 +02:00
pinctrl-stmfx.c pinctrl: stmfx: Add missing header(s) 2022-10-24 17:06:47 +03:00
pinctrl-sx150x.c pinctrl: Get rid of duplicate of_node assignment in the drivers 2021-12-16 04:18:30 +01:00
pinctrl-tb10x.c
pinctrl-thunderbay.c pinctrl: thunderbay: fix possible memory leak in thunderbay_build_functions() 2022-12-06 15:28:14 +01:00
pinctrl-utils.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_318.RULE 2022-06-10 14:51:36 +02:00
pinctrl-utils.h pinctrl: Clean up headers 2022-10-24 17:06:48 +03:00
pinctrl-xway.c pinctrl: Get rid of duplicate of_node assignment in the drivers 2021-12-16 04:18:30 +01:00
pinctrl-zynq.c pinctrl: zynq: use module_platform_driver to simplify the code 2022-03-15 01:46:13 +01:00
pinctrl-zynqmp.c Pin control changes for the v6.2 kernel cycle: 2022-12-13 13:03:06 -08:00
pinmux.c pinctrl: Clean up headers 2022-10-24 17:06:48 +03:00
pinmux.h pinctrl: Clean up headers 2022-10-24 17:06:48 +03:00