kernel_samsung_a53x/drivers/pinctrl
Chen-Yu Tsai 9f159928fe pinctrl: mediatek: paris: Rework support for PIN_CONFIG_{INPUT,OUTPUT}_ENABLE
[ Upstream commit c5d3b64c568a344e998830e0e94a7c04e372f89b ]

There is a misinterpretation of some of the PIN_CONFIG_* options in this
driver library. PIN_CONFIG_OUTPUT_ENABLE should refer to a buffer or
switch in the output direction of the electrical path. The MediaTek
hardware does not have such a thing. The driver incorrectly maps this
option to the GPIO function's direction.

Likewise, PIN_CONFIG_INPUT_ENABLE should refer to a buffer or switch in
the input direction. The hardware does have such a mechanism, and is
mapped to the IES bit. The driver however sets the direction in addition
to the IES bit, which is incorrect. On readback, the IES bit isn't even
considered.

Ironically, the driver does not support readback for PIN_CONFIG_OUTPUT,
while its readback of PIN_CONFIG_{INPUT,OUTPUT}_ENABLE is what it should
be doing for PIN_CONFIG_OUTPUT.

Rework support for these three options, so that PIN_CONFIG_OUTPUT_ENABLE
is completely removed, PIN_CONFIG_INPUT_ENABLE is only linked to the IES
bit, and PIN_CONFIG_OUTPUT is linked to the GPIO function's direction
and output level.

Fixes: 805250982bb5 ("pinctrl: mediatek: add pinctrl-paris that implements the vendor dt-bindings")
Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Message-ID: <20240327091336.3434141-3-wenst@chromium.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-11-19 11:32:41 +01:00
..
actions Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
aspeed pinctrl: pinctrl-aspeed-g6: Fix register offset for pinconf of GPIOR-T 2024-11-19 11:32:41 +01:00
bcm Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
berlin Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cirrus pinctrl: lochnagar: Don't build on MIPS 2024-11-18 12:12:11 +01:00
freescale Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
intel Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mediatek pinctrl: mediatek: paris: Rework support for PIN_CONFIG_{INPUT,OUTPUT}_ENABLE 2024-11-19 11:32:41 +01:00
meson pinctrl/meson: fix typo in PDM's pin name 2024-11-19 11:32:41 +01:00
mvebu Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
nomadik Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
nuvoton Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pxa Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
qcom Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
renesas pinctrl: renesas: checker: Limit cfg reg enum checks to provided IDs 2024-11-19 09:23:14 +01:00
samsung Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sirf Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
spear Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sprd Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
stm32 Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sunxi Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
tegra Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ti Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
uniphier Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
visconti Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
vt8500 Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
zte Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
core.c pinctrl: core: delete incorrect free in pinctrl_enable() 2024-11-19 11:32:41 +01:00
core.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
devicetree.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
devicetree.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Kconfig Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinconf-generic.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinconf.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinconf.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-amd.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-amd.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-artpec6.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-as3722.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-at91-pio4.c pinctrl: at91-pio4: use dedicated lock class for IRQ 2024-11-18 12:11:59 +01:00
pinctrl-at91.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-at91.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-axp209.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-bm1880.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-coh901.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-coh901.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-da850-pupd.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-da9062.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-digicolor.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-equilibrium.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-equilibrium.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-falcon.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-gemini.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-ingenic.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-lantiq.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-lantiq.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-lpc18xx.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-max77620.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-mcp23s08.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-mcp23s08.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-mcp23s08_i2c.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-mcp23s08_spi.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-ocelot.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-oxnas.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-palmas.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-pic32.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-pic32.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-pistachio.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-rk805.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-rockchip.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-samsung-s2mpm07.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-samsung-s2mps26.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-samsung-s2mpu13.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-samsung-s2mpu14.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-single.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-st.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-stmfx.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-sx150x.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-tb10x.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-u300.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-utils.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-utils.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-xway.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinctrl-zynq.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinmux.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pinmux.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00