Commit Graph

1367390 Commits

Author SHA1 Message Date
Bartosz Golaszewski
cc154c00a6 pinctrl: equilibrium: use pinmux_generic_add_pinfunction()
Instead of passing individual fields of struct pinfunction to
pinmux_generic_add_function(), use pinmux_generic_add_pinfunction() and
pass the entire structure directly.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Link: https://lore.kernel.org/20250709-pinctrl-gpio-pinfuncs-v2-3-b6135149c0d9@linaro.org
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-07-19 17:59:57 +02:00
Bartosz Golaszewski
431b68ae73 pinctrl: provide pinmux_generic_add_pinfunction()
Several drivers call pinmux_generic_add_function() passing it the
contents of struct pinfunction as first three arguments. We can make
this shorter by simply providing an interface allowing to pass the
address of struct pinfunction directly when adding a new function.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Link: https://lore.kernel.org/20250709-pinctrl-gpio-pinfuncs-v2-2-b6135149c0d9@linaro.org
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-07-19 17:59:48 +02:00
Bartosz Golaszewski
dd47155a0e pinctrl: pinmux: open-code PINCTRL_FUNCTION_DESC()
This macro is only used in one place and pin function descriptors should
only be created by pinmux core so there's no point in exposing it to
other pinctrl users. Remove the macro and hand-code its functionality.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Reviewed-by: Bjorn Andersson <andersson@kernel.org>
Link: https://lore.kernel.org/20250709-pinctrl-gpio-pinfuncs-v2-1-b6135149c0d9@linaro.org
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-07-19 17:59:35 +02:00
Bartosz Golaszewski
63149542dc pinctrl: ma35: use new GPIO line value setter callbacks
struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Link: https://lore.kernel.org/20250717125758.53141-1-brgl@bgdev.pl
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-07-19 17:36:40 +02:00
Linus Walleij
cc43eea3e1 Samsung pinctrl drivers changes for v6.17
Add support for programming wake up for Google GS101 SoC pin
 controllers, so the SoC can be properly woken up from low power states.
 -----BEGIN PGP SIGNATURE-----
 
 iQJEBAABCgAuFiEE3dJiKD0RGyM7briowTdm5oaLg9cFAmh2J2YQHGtyemtAa2Vy
 bmVsLm9yZwAKCRDBN2bmhouD18b9EACI+oLvIg7RrMvJLd08XvCWyZfxP10tZ6Ip
 vqasV4BoVTkBFmPu52NWc+HdJ+8enm3Hq62qD1J7f7ryyeZ+L8iPNiDR12cwvZEB
 xAmXyYjnGlu7h68Zso60miNERoqYxLqmxLcMAgPuaGgh9nd/bG7PJB5xgzzA/9Lt
 9RqwOLQozSXQkTc2YY8U9QUS2WVt08OltMamTzr6mNnYhVSEfEHpSW868FUL+/zk
 cA6zi4ooe3ushZ8NJFLjmLBuXw8x+BMrplg+pSg8xBUireSpFqyd+Kiv57914Arr
 +zN3ij+uxGANkaKSvwIEiLRB50fmhK0OzEL4qmDPUeK+W0WC/mYjeJ6iE5ZDCB8r
 Pt/xqvmzeS+7XMRWeyH2nsIP/RtJP2yDZYC+7mi7mpqQ3BmcBs3TOe1cXP6vp1WU
 z9888xEepbNUD1NvYvSdydgVPjHeFCPNmHkTo1fgOyTLibK9ZR8QD6HVc4UsVyP9
 z9wWcWJ39HybtzE2ukkI+Cu3VPOiQv+O0BsCeL+Yjdi0c2X/xZ0vbKOSBfJXiE0A
 WBxJDCylRWHG7aA2hHjKrz00V4YqmtD7QMbmQlqjBKJRPl+CDJrmtSIIgo7x68vh
 awmKkD2sjaj0P8yNQTN7B5wpRMJNOWILHGOuTEn3EZ1jlVdREkdXKaqhR+8q0R45
 TALsa5M0IQ==
 =CXPA
 -----END PGP SIGNATURE-----

Merge tag 'samsung-pinctrl-6.17' of https://git.kernel.org/pub/scm/linux/kernel/git/pinctrl/samsung into devel

Samsung pinctrl drivers changes for v6.17

Add support for programming wake up for Google GS101 SoC pin
controllers, so the SoC can be properly woken up from low power states.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-07-15 15:59:48 +02:00
Linus Walleij
2427d69c3d intel-pinctrl for v6.16-1
* Use new GPIO line value setter callbacks (Bartosz Golaszewski)
 * Add missed export.h to the main driver
 
 The following is an automated git shortlog grouped by driver:
 
 baytrail:
  -  use new GPIO line value setter callbacks
 
 cherryview:
  -  use new GPIO line value setter callbacks
 
 intel:
  -  fix build warnings about export.h
  -  use new GPIO line value setter callbacks
 
 lynxpoint:
  -  use new GPIO line value setter callbacks
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEqaflIX74DDDzMJJtb7wzTHR8rCgFAmh0vkUACgkQb7wzTHR8
 rChJog//d7qFpQgZt0oDNAmiFJDThWf+Fb+AwFyDWogu1Q4k9YHpQUcUbyuvBlHk
 6U2ORV4iHBt2Elo1lcPvXwtyGzY+z3zGPR2/sFbTV1jPhxBNWtc0QF8xZZ9lrTCr
 EgRLsQrDD+JngUVtwQ8EWrLNfu+2g6MDVBTnMJ6cLWXbzIjIyCClE5tyPp2Ro9kZ
 f+XTuW1BB6qzDCNk+XURd5mflfw2YI/ZNYfWsx7+/6YT5tPqWvmAnc4xgX0samLw
 XQShZcV3a4SFiN+K5+tix1YhUcEu3hudL9RaeSw3HfXHPruCTvW+p4UFy7aO9Vf0
 CsNupQ2OV6VVPFJq1upvZKoJ1W1DKQ7faq4FuftrYaKQ2sTgRvTTWthUf1y7sCDV
 MVghTv4Qh4HKwfD2me50CgHfwx9ElgwSi+NQcccVXBBaVJDxXFibr01qElaZ54g2
 BUa80wQ70btP3IWQwsNfobxlHEljRyUjydfbxGMwOMLzOYYlU3TlTev8bhb647ne
 VQHwQtgHi6Xwqg1ZzBLWyccdJoLepJcq1z1po4hcR5tZ3aor306T+14ad8LCIvRg
 qnCazp+/+Nff/2xNg8hx+wRZmTduJsc4379qzGyfRCMWPqi2kzAENz8VxqKl7R6f
 mmUGoL8ojwJ6wvWcA87EAAyWFxoQmXv5+TQQ0hWyRkpe+dMzUUg=
 =bbK4
 -----END PGP SIGNATURE-----

Merge tag 'intel-pinctrl-v6.16-1' of git://git.kernel.org/pub/scm/linux/kernel/git/pinctrl/intel into devel

intel-pinctrl for v6.16-1

* Use new GPIO line value setter callbacks (Bartosz Golaszewski)
* Add missed export.h to the main driver

The following is an automated git shortlog grouped by driver:

baytrail:
 -  use new GPIO line value setter callbacks

cherryview:
 -  use new GPIO line value setter callbacks

intel:
 -  fix build warnings about export.h
 -  use new GPIO line value setter callbacks

lynxpoint:
 -  use new GPIO line value setter callbacks

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-07-14 17:55:30 +02:00
Clément Le Goffic
ebbe8bfe07 MAINTAINERS: add Clément Le Goffic as STM32 HDP maintainer
Add Clément Le Goffic as STM32 HDP maintainer.

Signed-off-by: Clément Le Goffic <clement.legoffic@foss.st.com>
Link: https://lore.kernel.org/20250711-hdp-upstream-v7-3-faeecf7aaee1@foss.st.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-07-14 17:50:58 +02:00
Clément Le Goffic
8eabf5ddbb pinctrl: stm32: Introduce HDP driver
This patch introduce the driver for the Hardware Debug Port available on
STM32MP platforms. The HDP allows the observation of internal SoC
signals by using multiplexers. Each HDP port can provide up to 16
internal signals (one of them can be software controlled as a GPO).

Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Clément Le Goffic <clement.legoffic@foss.st.com>
Link: https://lore.kernel.org/20250711-hdp-upstream-v7-2-faeecf7aaee1@foss.st.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-07-14 17:50:58 +02:00
Clément Le Goffic
912275c325 dt-bindings: pinctrl: stm32: Introduce HDP
'HDP' stands for Hardware Debug Port, it is an hardware block in
STMicrolectronics' MPUs that let the user decide which internal SoC's
signal to observe.
It provides 8 ports and for each port there is up to 16 different
signals that can be output.
Signals are different for each MPU.

Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Clément Le Goffic <clement.legoffic@foss.st.com>
Link: https://lore.kernel.org/20250711-hdp-upstream-v7-1-faeecf7aaee1@foss.st.com
[Fixed up Clement's new email address]
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-07-14 17:50:58 +02:00
Luca Weiss
620d3d1025 pinctrl: qcom: Add Milos pinctrl driver
Add pinctrl driver for TLMM block found in the Milos SoC.

Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
Reviewed-by: Bjorn Andersson <andersson@kernel.org>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Link: https://lore.kernel.org/20250702-sm7635-pinctrl-v2-2-c138624b9924@fairphone.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-07-14 17:50:58 +02:00
Luca Weiss
fd7dac34fd dt-bindings: pinctrl: document the Milos Top Level Mode Multiplexer
Document the Top Level Mode Multiplexer on the Milos Platform.

Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
Link: https://lore.kernel.org/20250702-sm7635-pinctrl-v2-1-c138624b9924@fairphone.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-07-11 20:26:08 +02:00
Luca Weiss
52e06d25bd pinctrl: qcom: spmi: Add PM7550
PM7550 is a PMIC, featuring 12 GPIOs. Describe it.

Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
Link: https://lore.kernel.org/20250709-sm7635-pmxr2230-v2-4-09777dab0a95@fairphone.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-07-11 20:22:53 +02:00
Luca Weiss
2feab53ac4 dt-bindings: pinctrl: qcom,pmic-gpio: Add PM7550 support
Update the Qualcomm Technologies, Inc. PMIC GPIO binding documentation
to include the compatible string for the PM7550 PMICs.

Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
Acked-by: Rob Herring (Arm) <robh@kernel.org>
Link: https://lore.kernel.org/20250709-sm7635-pmxr2230-v2-3-09777dab0a95@fairphone.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-07-11 20:22:09 +02:00
Luca Weiss
19dca764db pinctrl: qcom: spmi: Add PMIV0104
PMIV0104 is a PMIC, featuring 10 GPIOs. Describe it.

Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
Link: https://lore.kernel.org/20250709-sm7635-pmiv0104-v2-3-ebf18895edd6@fairphone.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-07-11 20:20:19 +02:00
Luca Weiss
ac6242b7ba dt-bindings: pinctrl: qcom,pmic-gpio: Add PMIV0104 support
Update the Qualcomm Technologies, Inc. PMIC GPIO binding documentation
to include the compatible string for the PMIV0104 PMICs.

Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
Link: https://lore.kernel.org/20250709-sm7635-pmiv0104-v2-2-ebf18895edd6@fairphone.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-07-11 20:20:10 +02:00
Mukesh Ojha
0b075c0110 pinmux: fix race causing mux_owner NULL with active mux_usecount
commit 5a3e85c3c397 ("pinmux: Use sequential access to access
desc->pinmux data") tried to address the issue when two client of the
same gpio calls pinctrl_select_state() for the same functionality, was
resulting in NULL pointer issue while accessing desc->mux_owner.
However, issue was not completely fixed due to the way it was handled
and it can still result in the same NULL pointer.

The issue occurs due to the following interleaving:

     cpu0 (process A)                   cpu1 (process B)

      pin_request() {                   pin_free() {

                                         mutex_lock()
                                         desc->mux_usecount--; //becomes 0
                                         ..
                                         mutex_unlock()

  mutex_lock(desc->mux)
  desc->mux_usecount++; // becomes 1
  desc->mux_owner = owner;
  mutex_unlock(desc->mux)

                                         mutex_lock(desc->mux)
                                         desc->mux_owner = NULL;
                                         mutex_unlock(desc->mux)

This sequence leads to a state where the pin appears to be in use
(`mux_usecount == 1`) but has no owner (`mux_owner == NULL`), which can
cause NULL pointer on next pin_request on the same pin.

Ensure that updates to mux_usecount and mux_owner are performed
atomically under the same lock. Only clear mux_owner when mux_usecount
reaches zero and no new owner has been assigned.

Fixes: 5a3e85c3c397 ("pinmux: Use sequential access to access desc->pinmux data")
Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
Link: https://lore.kernel.org/20250708-pinmux-race-fix-v2-1-8ae9e8a0d1a1@oss.qualcomm.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-07-11 20:19:55 +02:00
Linus Walleij
ac51d04144 pinctrl: renesas: Updates for v6.17 (take two)
- Sort Kconfig symbols and improve their descriptions,
   - Simplify PINCTRL_RZV2M logic.
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYKAB0WIQQ9qaHoIs/1I4cXmEiKwlD9ZEnxcAUCaG7GzwAKCRCKwlD9ZEnx
 cLgyAP9IpmujuerAZwm69lRk+Qt+M/dRfiZi8TLOHtX1Q6tbYwD/XcishsjL+K21
 PsuNIlkkD3ColkYsK07ZrJeX/8LNHwc=
 =6d7L
 -----END PGP SIGNATURE-----

Merge tag 'renesas-pinctrl-for-v6.17-tag2' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers into devel

pinctrl: renesas: Updates for v6.17 (take two)

  - Sort Kconfig symbols and improve their descriptions,
  - Simplify PINCTRL_RZV2M logic.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-07-11 20:12:20 +02:00
Peter Griffin
683d532dfc pinctrl: samsung: Fix gs101 irq chip
When adding the dedicated gs101_wkup_irq_chip struct to support the eint
wakeup mask the .eint_con, eint_mask and .eint_pend fields were missed. The
result is that irqs on gs101 for the buttons etc are broken.

Reported-by: André Draszik <andre.draszik@linaro.org>
Fixes: 2642f55d44ce ("pinctrl: samsung: add support for gs101 wakeup mask programming")
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Tested-by: André Draszik <andre.draszik@linaro.org>
Link: https://lore.kernel.org/r/20250702-fix-gs101-irqchip-v1-1-ccc84b44ad72@linaro.org
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
2025-07-05 09:35:22 +02:00
Paul Kocialkowski
64daf13494 pinctrl: sunxi: v3s: Fix wrong comment about UART2 pinmux
The original comment doesn't match the pin attribution, probably due
to a hasty copy/paste.

Signed-off-by: Paul Kocialkowski <paulk@sys-base.io>
Reviewed-by: Icenowy Zheng <uwu@icenowy.me>
Link: https://lore.kernel.org/20250701201124.812882-2-paulk@sys-base.io
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-07-04 10:00:35 +02:00
Linus Walleij
eaa655c2e5 pinctrl: renesas: Updates for v6.17
- Use the new GPIO line value setter callbacks,
   - Validate pins before setting a mux function on RZ/G2L.
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYKAB0WIQQ9qaHoIs/1I4cXmEiKwlD9ZEnxcAUCaF6QNQAKCRCKwlD9ZEnx
 cJjJAQDzUIMw+lGaXLyV7V06tjD9uwgLzGWfqi0RjZcZJdDm6gEAjv9Uc8MCxnD+
 DpX7WfhOOU4dLOdAvwkywB+c21SwygA=
 =v6A6
 -----END PGP SIGNATURE-----

Merge tag 'renesas-pinctrl-for-v6.17-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers into devel

pinctrl: renesas: Updates for v6.17

  - Use the new GPIO line value setter callbacks,
  - Validate pins before setting a mux function on RZ/G2L.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-07-04 00:22:48 +02:00
Jack Ping CHNG
b306791037 pinctrl: equilibrium: Add request and free hooks
Add request and free gpio_chip hooks to support
gpio allocation and release in the driver.

Signed-off-by: Jack Ping CHNG <jchng@maxlinear.com>
Link: https://lore.kernel.org/20250627005419.3124660-1-jchng@maxlinear.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-07-04 00:16:33 +02:00
Antonio Borneo
b838fb5f16 dt-bindings: pinctrl: stm32: Add missing blank lines
Separate the properties through a blank line.

Signed-off-by: Antonio Borneo <antonio.borneo@foss.st.com>
Acked-by: Rob Herring (Arm) <robh@kernel.org>
Link: https://lore.kernel.org/20250610151837.299244-6-antonio.borneo@foss.st.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-07-04 00:03:55 +02:00
Frank Li
d3eed11b9c dt-bindings: pinctrl: convert nxp,lpc1850-scu.txt to yaml format
Convert nxp,lpc1850-scu.txt to yaml format.

Additional changes:
- keep child name *_cfg to align legancy very old platform dts file.
- remove label in examples.
- just keep one examples.

Signed-off-by: Frank Li <Frank.Li@nxp.com>
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
Link: https://lore.kernel.org/20250606160359.1356555-1-Frank.Li@nxp.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-07-04 00:00:03 +02:00
Yuanjie Yang
56ffb63749 pinctrl: qcom: add multi TLMM region option parameter
Add support for selecting multiple TLMM regions using the
tlmm-test tool.
The current implementation only selects the TLMM Node region
0, which can lead to incorrect region selection.

QCS 615 TLMM Node dts reg:
	tlmm: pinctrl@3100000 {
		compatible = "qcom,qcs615-tlmm";
		reg = <0x0 0x03100000 0x0 0x300000>,
		      <0x0 0x03500000 0x0 0x300000>,
		      <0x0 0x03d00000 0x0 0x300000>;
		reg-names = "east",
			    "west",
			    "south";

QCS615 gpio57 is in the south region with an offset of 0x39000,
and its address is 0x3d39000. However, the default region selection
is region 0 (east region), resulting in a wrong calculated address
of 0x3139000.

Add a tlmm option parameter named tlmm_reg_name to select the region.
If the user does not input the parameter, the default region is 0.

Signed-off-by: Yuanjie Yang <quic_yuanjiey@quicinc.com>
Link: https://lore.kernel.org/20250624090600.91063-1-quic_yuanjiey@quicinc.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-07-03 23:44:21 +02:00
Geert Uytterhoeven
7000167796 pinctrl: renesas: Simplify PINCTRL_RZV2M logic
PINCTRL_RZV2M is selected by ARCH_R9A09G011, hence there is no need to
depend on the latter.  Move the dependency on COMPILE_TEST to the symbol
prompt, like is done for all other auto-selected pin control symbols.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Link: https://lore.kernel.org/d74843e06f73cd4c6e822d65f606e6042a50a0b7.1750945516.git.geert+renesas@glider.be
2025-07-02 20:16:45 +02:00
Kuninori Morimoto
8ca43e41fc pinctrl: renesas: Unify config naming
Renesas SoC has chip number / chip name. Some SoC is using chip number,
and some SoC is using chip name on current Renesas pincontrol Kconfig.
Let's unify "pin control support for ${CHIP_NUMBER} (${CHIP_NAME}).

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/87bjqdraf1.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
2025-07-02 20:14:47 +02:00
Kuninori Morimoto
93e20e2b7a pinctrl: renesas: Sort Renesas Kconfig configs
Current Renesas Kconfig is randomly arranged. Let's sort it by
alphabetical/number order, same as Makefile.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/87cyatrafh.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
2025-07-02 20:13:42 +02:00
Peter Griffin
2642f55d44 pinctrl: samsung: add support for gs101 wakeup mask programming
gs101 differs to other currently supported SoCs in that it has 3 wakeup
mask registers for the 67 external wakeup interrupt pins in alive and
far_alive.

EINT_WAKEUP_MASK  0x3A80 EINT[31:0]
EINT_WAKEUP_MASK2 0x3A84 EINT[63:32]
EINT_WAKEUP_MASK3 0x3A88 EINT[66:64]

Add gs101 specific callbacks and a dedicated gs101_wkup_irq_chip struct to
handle these differences.

The current wakeup mask with upstream is programmed as
WAKEUP_MASK0[0x3A80] value[0xFFFFFFFF]
WAKEUP_MASK1[0x3A84] value[0xF2FFEFFF]
WAKEUP_MASK2[0x3A88] value[0xFFFFFFFF]

Which corresponds to the following wakeup sources:
gpa7-3  vol down
gpa8-1  vol up
gpa10-1 power
gpa8-2  typec-int

Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Link: https://lore.kernel.org/r/20250619-gs101-eint-mask-v1-2-89438cfd7499@linaro.org
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
2025-06-25 16:17:05 +02:00
Peter Griffin
c8edb80494 pinctrl: samsung: rename exynosautov920_retention_data to no_retention_data
To avoid having an exact copy of this struct for gs101 rename it and use it
for both SoCs for eint banks.

The purpose of this for exynosautov920 and gs101 is to obtain the PMU
syscon for writing the calculated WAKEUP_MASK register(s).

Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Link: https://lore.kernel.org/r/20250619-gs101-eint-mask-v1-1-89438cfd7499@linaro.org
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
2025-06-25 16:17:05 +02:00
Linus Walleij
4ab401099d pinctrl: amlogic: Staticize some local structs
Sparse complains:

sparse warnings: (new ones prefixed by >>)
>> drivers/pinctrl/meson/pinctrl-amlogic-a4.c:126:24: sparse: sparse:
   symbol 'multi_mux_s7' was not declared. Should it be static?
>> drivers/pinctrl/meson/pinctrl-amlogic-a4.c:135:28: sparse: sparse:
   symbol 's7_priv_data' was not declared. Should it be static?
>> drivers/pinctrl/meson/pinctrl-amlogic-a4.c:140:24: sparse: sparse:
   symbol 'multi_mux_s6' was not declared. Should it be static?
>> drivers/pinctrl/meson/pinctrl-amlogic-a4.c:154:28: sparse: sparse:
   symbol 's6_priv_data' was not declared. Should it be static?

Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202506122145.wWAtKBoy-lkp@intel.com/
Cc: Xianwei Zhao <xianwei.zhao@amlogic.com>
Fixes: 1f8e5dfddaa7 ("pinctrl: meson: support amlogic S6/S7/S7D SoC")
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/20250624-amlogic-a4-fix-v1-1-03f0856d10cb@linaro.org
2025-06-24 21:51:57 +02:00
Colin Ian King
6cb0e9da94 pinctrl: eswin: Fix unsigned comparison to less than zero issue
The u32 variable voltage is being compared to less than zero and
this can never be true. Fix this by making voltage an int type which
is the same type as the return from the call to regulator_get_voltage.

Fixes: 5b797bcc00ef ("pinctrl: eswin: Add EIC7700 pinctrl driver")
Signed-off-by: Colin Ian King <colin.i.king@gmail.com>
Link: https://lore.kernel.org/20250623222004.280928-1-colin.i.king@gmail.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-06-24 21:37:49 +02:00
Ze Huang
d94a32ac68 pinctrl: canaan: k230: Fix order of DT parse and pinctrl register
Move DT parse before pinctrl register. This ensures that device tree
parsing is done before calling devm_pinctrl_register() to prevent using
uninitialized pin resources.

Fixes: 545887eab6f6 ("pinctrl: canaan: Add support for k230 SoC")
Reported-by: Yao Zi <ziyao@disroot.org>
Signed-off-by: Ze Huang <huangze@whut.edu.cn>
Link: https://lore.kernel.org/20250624-k230-return-check-v1-2-6b4fc5ba0c41@whut.edu.cn
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-06-24 21:36:15 +02:00
Ze Huang
65bd0be486 pinctrl: canaan: k230: add NULL check in DT parse
Add a NULL check for the return value of of_get_property() when
retrieving the "pinmux" property in the group parser. This avoids
a potential NULL pointer dereference if the property is missing
from the device tree node.

Also fix a typo ("sintenel") in the device ID match table comment,
correcting it to "sentinel".

Fixes: 545887eab6f6 ("pinctrl: canaan: Add support for k230 SoC")
Reported-by: Yao Zi <ziyao@disroot.org>
Signed-off-by: Ze Huang <huangze@whut.edu.cn>
Link: https://lore.kernel.org/20250624-k230-return-check-v1-1-6b4fc5ba0c41@whut.edu.cn
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-06-24 21:36:14 +02:00
Da Xue
b58ea88d30 pinctrl: meson-g12a: add g12b pwm groups
G12B and SM1 have additional PWM pinmuxes for b, c, and d.

Signed-off-by: Da Xue <da@libre.computer>
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://lore.kernel.org/20250619022337.43900-1-da@libre.computer
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-06-24 21:28:46 +02:00
Arnd Bergmann
c0d03cdfac pinctrl: zynq: add CONFIG_OF dependency
The zynq driver can be enabled for compile-testing on builds without
CONFIG_OF, leading to a link error:

ld.lld-21: error: undefined symbol: pinconf_generic_dt_node_to_map
 referenced by pinconf-generic.h:231 (/home/arnd/arm-soc/include/linux/pinctrl/pinconf-generic.h:231)
          drivers/pinctrl/pinctrl-zynq.o:(pinconf_generic_dt_node_to_map_all) in archive vmlinux.a

Prevent this with the proper compile time dependency.

Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202506212021.deAhuaWr-lkp@intel.com/
Fixes: 1982621decaf ("pinctrl: Allow compile testing for K210, TB10X and ZYNQ")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Link: https://lore.kernel.org/20250620130814.2580678-1-arnd@kernel.org
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-06-24 21:23:50 +02:00
Yuan Chen
8f6f303551 pinctrl: berlin: fix memory leak in berlin_pinctrl_build_state()
In the original implementation, krealloc() failure handling incorrectly
assigned the original memory pointer to NULL after kfree(), causing a
memory leak when reallocation failed.

Fixes: de845036f997 ("pinctrl: berlin: fix error return code of berlin_pinctrl_build_state()")
Signed-off-by: Yuan Chen <chenyuan@kylinos.cn>
Link: https://lore.kernel.org/20250620015343.21494-1-chenyuan_fl@163.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-06-24 21:17:11 +02:00
Yuan Chen
e3507c56cb pinctrl: sunxi: Fix memory leak on krealloc failure
In sunxi_pctrl_dt_node_to_map(), when krealloc() fails to resize
the pinctrl_map array, the function returns -ENOMEM directly
without freeing the previously allocated *map buffer. This results
in a memory leak of the original kmalloc_array allocation.

Fixes: e11dee2e98f8 ("pinctrl: sunxi: Deal with configless pins")
Signed-off-by: Yuan Chen <chenyuan@kylinos.cn>
Link: https://lore.kernel.org/20250620012708.16709-1-chenyuan_fl@163.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-06-24 21:17:01 +02:00
Bartosz Golaszewski
b4102e3524 pinctrl: aw9523: fix mutex unlock in error path
We must unlock the mutex *after* the `out` label or we'd trigger a
deadlock in error path.

Fixes: dffe286e2428 ("pinctrl: aw9523: use new GPIO line value setter callbacks")
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Closes: https://lore.kernel.org/r/202506191952.A03cvn22-lkp@intel.com/
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Link: https://lore.kernel.org/20250619173537.64298-1-brgl@bgdev.pl
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-06-24 21:11:02 +02:00
Shiji Yang
4b443bbcd1 pinctrl: falcon: mark pinctrl_falcon_init() as static
Fix the following missing-prototypes build warning:

drivers/pinctrl/pinctrl-falcon.c:508:12: error: no previous prototype for 'pinctrl_falcon_init' [-Werror=missing-prototypes]
  508 | int __init pinctrl_falcon_init(void)
      |            ^~~~~~~~~~~~~~~~~~~

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://lore.kernel.org/OSBPR01MB167014AF54EF9818CB98C83BBC72A@OSBPR01MB1670.jpnprd01.prod.outlook.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-06-24 21:01:31 +02:00
Lad Prabhakar
5216103557 pinctrl: renesas: rzg2l: Validate pins before setting mux function
Ensure only valid pins are configured by validating pin mappings before
setting the mux function.

Rename rzg2l_validate_gpio_pin() to rzg2l_validate_pin() to reflect its
broader purpose validating both GPIO pins and muxed pins. This helps
avoid invalid configurations.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/20250616132750.216368-1-prabhakar.mahadev-lad.rj@bp.renesas.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
2025-06-19 19:25:20 +02:00
Linus Walleij
62be3d6e48 Immutable tag for the pinctrl tree to pull from
Add the BGPIOF_NO_INPUT to the gpio-mmio API.
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEFp3rbAvDxGAT0sefEacuoBRx13IFAmhTt7kACgkQEacuoBRx
 13JzeRAAhaeYWyA3bTrCnurSdWjjdaAwNTA1O5uaJZsLQAikFJW/oXGoLOx+qQQj
 bO5wyzqDHnjuY1ye1cuQ4vEUBUTCGqU/IqdndGJAPcLWT0yFfwLr6OjcyCCfBz0J
 elZsNxo9LEe6VrAnb+fFr8QoZl/0t4QdWUx4Er8ka/tWWFDf0/OqH0J6JzqCIiNx
 4YTW2WFlPtr767qzNoU0dLsnk/FIPHh8aIuw3uPmR0SKPT/+att2mjzekkzsgyiI
 iR2qzr2rK5YKi4lf7QWCAiTYpn+kTUpxn2420QoVNDpTjr2YWkxkmLCrK1VZt98F
 exZDsoCFFEmVP/PnYJrb8BhPFR1/hYhFk31RGIyzFzI34lQ821svrg70VcU0k6we
 83iNKh/ChZMDE79S9aF+2sJ+3wfMYCbHjDm+4eMbG+8c8qwP9Bsb8MsSDKN0ohqw
 Ky9KETmckyFkJrCN85wlEP/9sQDRTh8AkP2WE/ozDp0O+6M7koqDDaJ0ekJiGnGi
 ojVPfmlpmCpQXE99+owEOpWEWMUqGFZhML4PeLGsizmiGPA9kI5V40S/jIBk2Ck+
 mgcEGZ1QlrUJI8aG1DQ91AKKWMyp79SEgEGYelgOWbdiTh8Nn3esSH2lPavOEjYV
 ReF27dHtkOg8uwhdQ7tHvAW7ZLxoclSIV9yhDfzf65qkETZ6Pfg=
 =9ylk
 -----END PGP SIGNATURE-----

Merge tag 'gpio-mmio-bgpiof-no-input-flag-for-v6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux into devel

Immutable tag for the pinctrl tree to pull from

Add the BGPIOF_NO_INPUT to the gpio-mmio API.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-06-19 09:17:10 +02:00
Clément Le Goffic
deefc70834 gpio: mmio: add BGPIOF_NO_INPUT flag for GPO gpiochip
When using bgpio_init with a gpiochip acting as a GPO (output only), the
gpiochip ops `direction_input` was set to `bgpio_simple_dir_in` by
default but we have no input ability.

Adding this flag allows to set a valid ops for the `direction_output`
ops without setting a valid ops for `direction_input` by default.

Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Clément Le Goffic <clement.legoffic@foss.st.com>
Link: https://lore.kernel.org/r/20250613-hdp-upstream-v5-1-6fd6f0dc527c@foss.st.com
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
2025-06-19 09:05:33 +02:00
Bartosz Golaszewski
9a40347181 pinctrl: amdisp: use new GPIO line value setter callbacks
struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Link: https://lore.kernel.org/20250612-gpiochip-set-rv-pinctrl-remaining-v1-16-556b0a530cd4@linaro.org
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-06-18 14:08:38 +02:00
Bartosz Golaszewski
b8cd87c0e9 pinctrl: as3722: use new GPIO line value setter callbacks
struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Link: https://lore.kernel.org/20250612-gpiochip-set-rv-pinctrl-remaining-v1-15-556b0a530cd4@linaro.org
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-06-18 14:08:38 +02:00
Bartosz Golaszewski
5956a3a973 pinctrl: sunxi: use new GPIO line value setter callbacks
struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Link: https://lore.kernel.org/20250612-gpiochip-set-rv-pinctrl-remaining-v1-14-556b0a530cd4@linaro.org
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-06-18 14:08:38 +02:00
Bartosz Golaszewski
84b91ca38f pinctrl: keembay: use new GPIO line value setter callbacks
struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Link: https://lore.kernel.org/20250612-gpiochip-set-rv-pinctrl-remaining-v1-13-556b0a530cd4@linaro.org
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-06-18 14:08:38 +02:00
Bartosz Golaszewski
d9727b4851 pinctrl: spear: use new GPIO line value setter callbacks
struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Link: https://lore.kernel.org/20250612-gpiochip-set-rv-pinctrl-remaining-v1-12-556b0a530cd4@linaro.org
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-06-18 14:08:38 +02:00
Bartosz Golaszewski
dfdbce9649 pinctrl: pic32: use new GPIO line value setter callbacks
struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Link: https://lore.kernel.org/20250612-gpiochip-set-rv-pinctrl-remaining-v1-11-556b0a530cd4@linaro.org
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-06-18 14:08:37 +02:00
Bartosz Golaszewski
72c236f78e pinctrl: apple: use new GPIO line value setter callbacks
struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Reviewed-by: Janne Grunau <j@jannau.net>
Link: https://lore.kernel.org/20250612-gpiochip-set-rv-pinctrl-remaining-v1-10-556b0a530cd4@linaro.org
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-06-18 14:08:37 +02:00
Bartosz Golaszewski
66a0708111 pinctrl: digicolor: use new GPIO line value setter callbacks
struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Link: https://lore.kernel.org/20250612-gpiochip-set-rv-pinctrl-remaining-v1-9-556b0a530cd4@linaro.org
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-06-18 14:08:37 +02:00