Commit graph

1,412,069 commits

Author SHA1 Message Date
Yixun Lan
0a4614fe85 dt-bindings: pinctrl: spacemit: fix drive-strength check warning
The problem is that one value from drive-strength may match to more than
two different enum groups which lead to DT complaint, switch to use 'anyOf'
to fix this kind warning.

Fixes: c3efac0592 ("dt-bindings: pinctrl: spacemit: convert drive strength to schema format")
Signed-off-by: Yixun Lan <dlan@kernel.org>
Acked-by: Conor Dooley <conor.dooley@microchip.com>
Reported-by: Conor Dooley <conor.dooley@microchip.com>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-02-03 01:04:51 +01:00
Conor Dooley
ea9975c221 pinctrl: fix kismet issues with GENERIC_PINCTRL
lkp reported that GENERIC_PINCTRL can be select when its dependencies
are not. Swap the "depends on" out for "select", as is used in other
parts of the pinctrl core that are expected to be selected by drivers.

Fixes: 43722575e5 ("pinctrl: add generic functions + pins mapper")
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202601271725.gqlQ8Jl7-lkp@intel.com/
Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-02-03 00:56:53 +01:00
Linus Walleij
1296611607 intel-pinctrl for v6.20-2
* Remove duplicate error messages when registering pin control
 * Miscellaneous changes
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEqaflIX74DDDzMJJtb7wzTHR8rCgFAml7gUIACgkQb7wzTHR8
 rCinkw//e83k7rJsLdyBuCdIfQoKDrIPUene6v/oyszj3oBAaWv2tGqEj4PWNkij
 1vtxdbK+T3QE7lLRt87+4t/RE0kmBDGYjrJ0VEmqE/UexYkOyFguhwAHV/Y18bQ9
 +25j1NWgTlfdmnkxQ+N0lTlaIUyq7yqaJ6TpMwv+7mDxDt+eBLsq5LBDAmuN6gaZ
 NPzFeOc+4wy5Gy1Y7qZMuxTJV49eL/8lBkay1BZ/yPlgaIjzU2ITE7DsFJVSMmMK
 lMJKdyDAbQ2ZfpZzPaAoeE9fv3jX6iyY0KhA4L0of9VVh5bMPHHf3gEdr4tBZxLX
 zBvF5X11ehIDFRNjKrrIxayab7b0gskMLY8ZQkve/IpKTaOjggqY0/uoNT6iGcw2
 +9wTe+vlPcnLCigI1R/dPGx4vgl6J2Rkgxelpb70w/PPMOyG9yBOH/ytGFfRoLp7
 JLu6YpH9LCCEAEOEFzrHvdsSQH4+jexAjxNc9Q0mnibp7z2SkUHrg1737bjhVGkj
 MANCEUUXXGQo0sIQeriTPDHLqU1SbVPdIAUwW9vUTKa74TmP9lNHUgaZD5pgFY7f
 /dqWQ2vbeh+vJsquLoRrv+l1kXG+eSB6qIJc41Avk5yVSkJFKu+4rXo1MTmPNGXg
 AC6Pc6o+V4lBS2t+bfWKK5oatJeU2LJIxNRLktsaNl6EKIw4PYQ=
 =0Fr+
 -----END PGP SIGNATURE-----

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

intel-pinctrl for v6.20-2

* Remove duplicate error messages when registering pin control
* Miscellaneous changes

Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-01-29 23:32:57 +01:00
Andy Shevchenko
8e03e6ecc2 pinctrl: tangier: Join tng_pinctrl_probe() into its wrapper
There is no clear sign why we have tng_pinctrl_probe() in the first
place when it has already been using managed calls. Join the function
into its devm_tng_pinctrl_probe() wrapper.

Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2026-01-28 14:32:23 +01:00
Andy Shevchenko
ae15231c49 pinctrl: tangier: Remove duplicate error messages
The pin control core is covered to report any error via message.
Since that it's not needed in the callers.

Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2026-01-28 14:32:23 +01:00
Andy Shevchenko
8a924c6bd0 pinctrl: lynxpoint: Remove duplicate error messages
The pin control core is covered to report any error via message.
Since that it's not needed in the callers.

Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2026-01-28 14:26:48 +01:00
Andy Shevchenko
04c15be548 pinctrl: cherryview: Remove duplicate error messages
The pin control core is covered to report any error via message.
Since that it's not needed in the callers.

Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2026-01-28 14:26:45 +01:00
Andy Shevchenko
bcdcd19e25 pinctrl: baytrail: Remove duplicate error messages
The pin control core is covered to report any error via message.
Since that it's not needed in the callers.

Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2026-01-28 14:26:31 +01:00
Andy Shevchenko
a887bcb4dc pinctrl: intel: Remove duplicate error messages
The pin control core is covered to report any error via message.
Since that it's not needed in the callers.

Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2026-01-28 14:26:27 +01:00
Felix Gu
c0b4a4feeb pinctrl: equilibrium: Fix device node reference leak in pinbank_init()
When calling of_parse_phandle_with_fixed_args(), the caller is
responsible to call of_node_put() to release the reference of device
node.

In pinbank_init(), the reference of the node obtained from the
"gpio-ranges" property is never released, resulting in a reference
count leak.

Add the missing of_node_put() call to fix the leak.

Fixes: 1948d5c51d ("pinctrl: Add pinmux & GPIO controller driver for a new SoC")
Signed-off-by: Felix Gu <ustc.gu@gmail.com>
Acked-by: Andy Shevchenko <andriy.shevchenko@intel.com>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-01-28 08:56:35 +01:00
Linus Walleij
ebd2f48dff intel-pinctrl for v6.20-1
* Add Nova Lake to the list of supported platforms by platform driver
 * Update Kconfig help text to clarify which drivers supports which platforms
 * Convert more Intel pin control drivers to use intel_gpio_add_pin_ranges()
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEqaflIX74DDDzMJJtb7wzTHR8rCgFAml3gcIACgkQb7wzTHR8
 rCgXHBAAnAvr6TINDxHl8ofSTSCNOsVy6yzdtRrVl9D6j/o0BqL8sqEgV0zfhHrN
 EEzbUA67SmE5qASiqalpwxQYDJ9Ej5SVdBM+HtFU0k88COMDyMy7itZEM/urhndC
 xx9x4hzWcTbiXacEDMdL2xAccnz31bQbJZXw5NW31k/283VobAO4IcjYslHZTXZ+
 Kg0H8JqRogT/CRbWFIKtJshBwevDJHcnbrobd9ZgliDYqg3crNntb0jJZi15GDS/
 WCU8LSKqvdN7x5it/ugMfmmlUUgHPOTVzNHgdjH6WYGqfqbi43BF4qFDehKXW5Rc
 04Z6Te8krXavajkWitc2B4NeSbvRoCQrDj0FDB10ejcNrWbEAxUEUMKptjfZwmJ1
 ktubDjQW7VBuuO307f6X5s0DqSC0xse9qfFnxHPDwoHnWn0k2xadLCP4EjKMriGm
 humJqjMlEQNgMrFsTBUs/Q8CYJ513ZPty1w/lN/IvS+NlLTsBYbWjIbEF1wLCSdJ
 Q1hOwk6Egx31Z3tDWekCKW6fgpQ0GV5pqSsix5xsxX09+sKH9sHGK2mwfESXnrke
 V0zMi2kgMhlGeLfDrlGDh+kGWiXeFHaSOjoWqw7dwOCgiSiRHaJjQJFTU6OYbHo2
 xWPJ3te85nfH9FmjXBImguVwyjX1gl+24DxAiV6L8J9mqZQ3HdM=
 =ReWs
 -----END PGP SIGNATURE-----

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

intel-pinctrl for v6.20-1

* Add Nova Lake to the list of supported platforms by platform driver
* Update Kconfig help text to clarify which drivers supports which platforms
* Convert more Intel pin control drivers to use intel_gpio_add_pin_ranges()

Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-01-27 10:53:41 +01:00
Robert Marko
a4cf8f9722 dt-bindings: pinctrl: pinctrl-microchip-sgpio: add LAN969x
Document LAN969x compatibles for SGPIO.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
Acked-by: Conor Dooley <conor.dooley@microchip.com>
Reviewed-by: Claudiu Beznea <claudiu.beznea@tuxon.dev>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-01-27 10:31:52 +01:00
Jens Emil Schulz Østergaard
b20d212f6c pinctrl: ocelot: Extend support for lan9645xf family
Extend pinctrl-ocelot driver to support the lan9645xf chip family.

Reviewed-by: Steen Hegelund <Steen.Hegelund@microchip.com>
Reviewed-by: Daniel Machon <daniel.machon@microchip.com>
Signed-off-by: Jens Emil Schulz Østergaard <jensemil.schulzostergaard@microchip.com>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-01-27 10:04:09 +01:00
Jens Emil Schulz Østergaard
96bfeba89e pinctrl: ocelot: Update alt mode reg addr calculation
Lan9645x is the first chip supported by this driver where the pin stride
is different from the alt mode stride. With 51 pins and up to 7 alt
modes, we have stride = 2 and alt_mode_stride = 3.

The current REG_ALT macro has the implicit assumption that these numbers
are equal, so it does not work for lan9645x.

The pin stride is the 'stride' variable in the driver. It is the size
of certain register groups which depends on the number of pins supported
by the device. Generally we have stride = DIV_ROUND_UP(npins, 32). E.g:

GPIO_OUT_SET0
GPIO_OUT_SET1
...
GPIO_OUT_SETn

The alt mode registers are further replicated by the number of bits
necessary to represent the alt mode. For instance if we need 3 bits to
represent the alt mode:

GPIO_ALT0[0-2]
GPIO_ALT1[0-2]

To set alt mode 3 on pin 12, it is necessary to perform writes

GPIO_ALT0[0] |= BIT(12)
GPIO_ALT0[1] |= BIT(12)
GPIO_ALT0[2] &= ~BIT(12)

The stride and alt mode stride are used by the REG_ALT macro to
calculate the alt mode register address for a given pin.

This adds the option to specify n_alt_modes, which is used to set
info->altm_stride. The default value is info->stride, to make sure
existing devices are unaffected by this change.

Reviewed-by: Steen Hegelund <Steen.Hegelund@microchip.com>
Reviewed-by: Daniel Machon <daniel.machon@microchip.com>
Signed-off-by: Jens Emil Schulz Østergaard <jensemil.schulzostergaard@microchip.com>
Reviewed-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-01-27 10:04:09 +01:00
Jens Emil Schulz Østergaard
cb07e60ba4 dt-bindings: pinctrl: ocelot: Add LAN9645x SoC support
Add documentation for the compatibles designated for the following SKUs
in the LAN9645x family:

lan96455f
lan96457f
lan96459f

with fallback a compatible for the smallest 5-ported SKUs lan96455f.

Reviewed-by: Steen Hegelund <Steen.Hegelund@microchip.com>
Reviewed-by: Daniel Machon <daniel.machon@microchip.com>
Signed-off-by: Jens Emil Schulz Østergaard <jensemil.schulzostergaard@microchip.com>
Acked-by: Rob Herring (Arm) <robh@kernel.org>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-01-27 10:04:09 +01:00
Shiji Yang
6da9f0cc27 pinctrl: mediatek: enable ies_present flag for MT798x
The MT798x series SoCs have IES regiter definitions. I think we
must enable the ies_present flag to correctly configure the pin
input mode.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-01-27 10:02:35 +01:00
Raag Jadav
fc32c5725f pinctrl: intel: Add code name documentation
Intel pinctrl drivers support large set of platforms and the IPs are
often reused by their different variants, but it's currently not possible
to figure out the exact driver that supports specific variant. Add user
friendly documentation for them.

Cc: stable@vger.kernel.org
Reported-by: Guido Trentalancia <guido@trentalancia.com>
Closes: https://bugzilla.kernel.org/show_bug.cgi?id=220056
Signed-off-by: Raag Jadav <raag.jadav@intel.com>
Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Acked-by: Guido Trentalancia <guido@trentalancia.com>
[andy: added Oxford comma]
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2026-01-24 10:56:22 +01:00
Conor Dooley
8ecfc7dfdf MAINTAINERS: add Microchip mpfs mssio driver/bindings to entry
Add the new mssio driver and bindings to the existing entry
for Microchip RISC-V devices.

Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-01-21 13:13:37 +01:00
Conor Dooley
488d704ed7 pinctrl: add polarfire soc mssio pinctrl driver
On Polarfire SoC, the Bank 2 and Bank 4 IOs connected to the
Multiprocessor Subsystem (MSS) are controlled by IOMUX_CRs 1 through 6,
which determine what function in routed to them, and
MSSIO_BANK#_IO_CFG_CRs, which determine the configuration of each pin.

Add a driver for this pin controller, including several custom
properties that reflect aspects of the MSS's configuration.

Reuse the Kconfig option for iomux0, since controlling MSSIOs without
iomux0 routing a function to the MSSIOs in question is pointless, and
routing a function to the MSSIOs is equally unhelpful if none of them
are configured to make use of that function.

Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-01-21 13:13:37 +01:00
Conor Dooley
6b324d1994 dt-bindings: pinctrl: document polarfire soc mssio pin controller
On Polarfire SoC, the Bank 2 and Bank 4 IOs connected to the
Multiprocessor Subsystem (MSS) are controlled by IOMUX_CRs 1 through 6,
which determine what function in routed to them, and
MSSIO_BANK#_IO_CFG_CRs, which determine the configuration of each pin.

Document it, including several custom configuration options that stem
from MSS Configurator options (the MSS Configurator is part of the FPGA
tooling for this device). "ibufmd" unfortunately is not a 1:1 mapping
with an MSS Configurator option, unlike clamp-diode or lockdown, and I
do not know the effect of any bits in the field. I have no been able to
find an explanation for these bits in documentation.

Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-01-21 13:13:37 +01:00
Conor Dooley
43722575e5 pinctrl: add generic functions + pins mapper
Add a generic function to allow creation of groups and functions at
runtime based on devicetree content, before setting up mux mappings.
It works similarly to pinconf_generic_dt_node_to_map(), and
therefore parses pinconf properties and maps those too, allowing it
to be used as the dt_node_to_map member of the pinctrl_ops struct.

Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-01-21 13:13:37 +01:00
Conor Dooley
95c1762aaf pinctrl: move microchip riscv pinctrl drivers to a folder
There's three of these drivers now for the same platforms, move them
together with other microchip drivers to follow.

Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-01-21 13:13:37 +01:00
Gopikrishna Garmidi
84340785fa pinctrl: qcom: glymur: Add Mahua TLMM support
Mahua TLMM block is identical to Glymur, but the PDC wake IRQ map
differs since PDC handles the interrupt for GPIO 155 instead of GPIO 143
as seen on Glymur. Hence add the Mahua-specific PDC map to the Glymur
TLMM driver.

Signed-off-by: Gopikrishna Garmidi <gopikrishna.garmidi@oss.qualcomm.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-01-21 13:11:56 +01:00
Gopikrishna Garmidi
84a3bc3373 dt-bindings: pinctrl: qcom,glymur-tlmm: Document Mahua TLMM block
Document the pinctrl compatible for the Mahua SoC, a 12-core variant
of Glymur. The PDC wake IRQ map differs since PDC handles the interrupt
for GPIO 155 instead of GPIO 143 as seen on Glymur.

Signed-off-by: Gopikrishna Garmidi <gopikrishna.garmidi@oss.qualcomm.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-01-21 13:11:56 +01:00
Andy Shevchenko
069bb6f69a pinctrl: intel: platform: Add Nova Lake to the list of supported
Intel Nova Lake is supported by the generic platform driver,
so add it to the list of supported in Kconfig.

Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Reviewed-by: Raag Jadav <raag.jadav@intel.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2026-01-20 09:35:41 +01:00
Troy Mitchell
450e2487d5 pinctrl: spacemit: support I/O power domain configuration
Dual-voltage GPIO banks default to 3.3V operation. Even when a bank is
externally supplied with 1.8V, the internal logic remains in the 3.3V
domain, leading to functional failures.

Add support for programming the IO domain power control registers to
allow explicit configuration for 1.8V operation.

These registers are secure due to hardware safety constraints.
Specifically, configuring the domain for 1.8V while externally supplying
3.3V causes back-powering and potential pin damage. Consequently, access
requires unlocking the AIB Secure Access Register (ASAR) in the APBC
block before any read or write operation.

Signed-off-by: Troy Mitchell <troy.mitchell@linux.spacemit.com>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-01-20 00:50:34 +01:00
Troy Mitchell
e817f0223d dt-bindings: pinctrl: spacemit: add syscon property
In order to access the protected IO power domain registers, a valid
unlock sequence must be performed by writing the required keys to the
AIB Secure Access Register (ASAR).

The ASAR register resides within the APBC register address space.
A corresponding syscon property is added to allow the pinctrl driver
to access this register.

Signed-off-by: Troy Mitchell <troy.mitchell@linux.spacemit.com>
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-01-20 00:50:18 +01:00
Krzysztof Kozlowski
76d415763b pinctrl: st: Annotate st_pinconf_dbg_show() as holding mutex
st_pinconf_dbg_show() unlocks and locks the pinctrl_dev mutex, so it
must be called by the pinctrl core with the mutex hold.  Annotate the
function with sparse __must_hold, so any changes in pinctrl locking will
be statically detected.

Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com>
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-01-19 01:11:47 +01:00
Krzysztof Kozlowski
e2c58cbe3a pinctrl: rockchip: Simplify locking with scoped_guard()
Simplify error handling by removing two mutex_unlock() calls with
scoped_guard().

Reviewed-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-01-19 01:11:47 +01:00
Krzysztof Kozlowski
160d686fbf pinctrl: tegra-xusb: Simplify locking with guard()
Simplify error handling (less gotos) over locks with guard().

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-01-19 01:11:47 +01:00
Krzysztof Kozlowski
0899bab9b2 pinctrl: tegra-xusb: Return void in padctl enable/disable functions
Make the padctl functions a bit simpler by returning void instead of
always '0'.  The callers - phy init/exit - still need to return 0, but
these are smaller function without if/branching.

Acked-by: Thierry Reding <treding@nvidia.com>
Reviewed-by: Jon Hunter <jonathanh@nvidia.com>
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-01-19 01:11:47 +01:00
Krzysztof Kozlowski
b339e1df67 pinctrl: tb10x: Simplify locking with guard()
Simplify error handling (less code in error case) over locks with
guard().

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-01-19 01:11:47 +01:00
Krzysztof Kozlowski
708adef80c pinctrl: microchip-sgpio: Simplify locking with guard()
Simplify error handling (less gotos) over locks with guard().

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-01-19 01:11:47 +01:00
Krzysztof Kozlowski
6fe3b96b05 pinctrl: aw9523: Simplify locking with guard()
Simplify error handling (less gotos) over locks with guard() which also
removes possibility (at least by reading the code) of returning
uninitialized rc/ret value in aw9523_pconf_set() and
aw9523_gpio_get_multiple() functions.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-01-19 01:11:46 +01:00
Krzysztof Kozlowski
b4b224ec05 pinctrl: amd: Cleanup header includes
Remove unused includes: no lists and mutexes.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-01-19 01:11:46 +01:00
Krzysztof Kozlowski
faf55ac9a4 pinctrl: sophgo: Cleanup header includes
Remove unused includes from internal headers, because they do not have
following: bit manipulations, mutexes, spinlocks and struct devices.
These headers are included by actual C files, which seem to have all
necessary includes.

Reviewed-by: Inochi Amaoto <inochiama@gmail.com>
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-01-19 01:11:46 +01:00
Krzysztof Kozlowski
17d41be3c7 pinctrl: starfive: jh7110-sys: Cleanup header includes
Remove unused includes: no clocks, mutexes and resets.

Reviewed-by: Hal Feng <hal.feng@starfivetech.com>
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-01-19 01:11:46 +01:00
Krzysztof Kozlowski
a7f7ee348d pinctrl: aspeed: Cleanup header includes
Remove unused includes (no mutexes, string functions, no OF functions)
and bring directly used mod_devicetable.h (previously pulled via of.h).

Reviewed-by: Andrew Jeffery <andrew@codeconstruct.com.au>
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-01-19 01:11:46 +01:00
Linus Walleij
badf64c1ed Samsung pinctrl drivers changes for v6.20
Add new pin controllers for Samsung Exynos9610 SoC.
 -----BEGIN PGP SIGNATURE-----
 
 iQJEBAABCgAuFiEE3dJiKD0RGyM7briowTdm5oaLg9cFAmlrz28QHGtyemtAa2Vy
 bmVsLm9yZwAKCRDBN2bmhouD1+UJD/9a+cAq5kshAharD9Vsvyu/49ZKWVJCjKG9
 krPIT/b8AxJ/zH4sEMa8Igkosxvm0myCONO58cYLZ+RWdsEf6AShP3bo9JLZuBM4
 absW6UwRyJ9YxylODpBnGVsxQiDxpC/eD7EyfZI9EBZuE8JnNR0MKLf1AoaaofLf
 Z1kAnJ6H81ZGEpIZHBN86YfADmhiHUtGdpVlW4DsZCqDEyO1ReFzg7VX1dESiInq
 vxiI+QWN90SCEp7o2N2XRMwel2MBqg02oKeSJs3d+owtW+mbKHb9j/wPC4t9hwtT
 nZIr7j1P9CFe0eD4KL2w1XVNYtiFxyFjG3P0B6HMGZQqg0PAsDGLb1mp5WuvZFb7
 /z3IQKB+2bWJZ5doT9OH0wvo0YFUJuUeO3XPQUxTAxaGFzbr1oKAGc5NdOz0XXMR
 As+NXpZO4lUzxk24y9VeQ9WQZRc2ljgdyCRlOL9bxCUb/NF1W1JXVFnZPwWp5vNY
 gm6OfYs64DTbXRbf/UJsileVZjkhUcZfYz5HRwAIJaB7o+BKG5j5h6wyXkcP0ewA
 q4CZ/95azyQyYtaWpkF0Kut+YXhJ6pFGAx4eIuUGt6VFkiUE9GsrE1KaamBJgyrx
 evel55elh3KP/prZBSzz7wqwo8CD1MJXN5+p4P4hLr4QMuR6vCT108DtEt8wWPFu
 QUisTVskRQ==
 =CEcZ
 -----END PGP SIGNATURE-----

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

Samsung pinctrl drivers changes for v6.20

Add new pin controllers for Samsung Exynos9610 SoC.

Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-01-19 00:45:43 +01:00
Bartosz Golaszewski
eb9eb4db98 driver core: make pinctrl_bind_pins() private
pinctrl_bind_pins() is only used by driver core (as it should). Move it
out of the public header into base.h.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Acked-by: Danilo Krummrich <dakr@kernel.org>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-01-19 00:34:44 +01:00
Linus Walleij
43519f5457 pinctrl: renesas: Updates for v6.20
- Add support for GPIO IRQs on RZ/T2H and RZ/N2H.
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYKAB0WIQQ9qaHoIs/1I4cXmEiKwlD9ZEnxcAUCaWoT+gAKCRCKwlD9ZEnx
 cEo+AP4qLfOTmmOU3TD2z5OHCUcoOczfGVtYTZWT2XD/w5Z67QEA0c8I5JbSaI0S
 zr6RbyfNx0QTyqEuuENnPzOVo5OrTQY=
 =2Zkc
 -----END PGP SIGNATURE-----

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

pinctrl: renesas: Updates for v6.20

  - Add support for GPIO IRQs on RZ/T2H and RZ/N2H.

Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-01-19 00:27:18 +01:00
Yixun Lan
ba7693014d dt-bindings: pinctrl: spacemit: k3: fix drive-strength doc
Fix a typo in DT documentation, it should describe the 3.3V drive strength
table of SpacemiT k3 SoC.

Fixes: 5adaa1a8c0 ("dt-bindings: pinctrl: spacemit: add K3 SoC support")
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Signed-off-by: Yixun Lan <dlan@gentoo.org>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-01-14 14:53:53 +01:00
Andy Shevchenko
bfec8ce11a pinctrl: lynxpoint: Convert to use intel_gpio_add_pin_ranges()
Driver is ready to use intel_gpio_add_pin_ranges() directly instead of
custom approach. Convert it now.

Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2026-01-13 21:46:40 +01:00
Andy Shevchenko
57db74bdaa pinctrl: baytrail: Convert to use intel_gpio_add_pin_ranges()
Driver is ready to use intel_gpio_add_pin_ranges() directly instead of
custom approach. Convert it now.

Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2026-01-13 21:46:03 +01:00
Linus Walleij
881238a852 pinctrl: apple: Implement GPIO func check callback
This function will check if the indicated function enumerator
i.e. the value set into bits 5 and 6 of the pin configuration
register, is zero and thus corresponds to the GPIO mode of the
pin.

This may be necessary to know since the pin controller is
flagged as "strict": once you set a pin *explicitly* to GPIO
mode using function 0, the core is unaware that this is
actually the GPIO mode, and clients may be denied to
retrieve the pin as a GPIO.

Currently none of the in-kernel device trees sets any pin to
GPIO mode, but this may happen any day.

Reviewed-by: Sven Peter <sven@kernel.org>
Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-01-13 11:22:21 +01:00
Linus Walleij
7b9a9cafc4 pinctrl: apple: Use unsigned int instead of unsigned
It is discouraged to use the ambiguous "unsigned" type, use
explicit unsigned int in the driver.

Reviewed-by: Sven Peter <sven@kernel.org>
Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-01-13 11:22:20 +01:00
Cosmin Tanislav
829dde3369 pinctrl: renesas: rzt2h: Add GPIO IRQ chip to handle interrupts
The Renesas RZ/T2H (R9A09G077) and Renesas RZ/N2H (R9A09G087) SoCs have
IRQ-capable pins handled by the ICU, which forwards them to the GIC.

The ICU supports 16 IRQ lines, the pins map to these lines arbitrarily,
and the mapping is not configurable.

Add a GPIO IRQ chip to the pin controller that can be used to configure
these pins as IRQ lines.

The pin controller places the requested pins into IRQ function,
disabling GPIO mode. A hierarchical IRQ domain is used to forward other
functionality to the parent IRQ domain, the ICU. The ICU does level
translation and then forwards other functionality to the GIC.

Wakeup capability is implemented by placing the entire pin controller on
the wakeup path if any pins are requested to be wakeup-capable.

Signed-off-by: Cosmin Tanislav <cosmin-gabriel.tanislav.xa@renesas.com>
Reviewed-by: Linus Walleij <linusw@kernel.org>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://patch.msgid.link/20260109143910.645628-2-cosmin-gabriel.tanislav.xa@renesas.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
2026-01-13 10:21:53 +01:00
Alexandru Chimac
8c483209a6 pinctrl: samsung: Add Exynos9610 pinctrl configuration
Add pinctrl configuration for Exynos9610. The bank types used are the
same as on Exynos850 and gs101, so we can reuse the macros.

Signed-off-by: Alexandru Chimac <alex@chimac.ro>
Link: https://patch.msgid.link/20260102-exynos9610-pinctrl-v3-3-3f21f2cfb651@chimac.ro
Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
2026-01-11 12:10:29 +01:00
Alexandru Chimac
2efbc4cf87 dt-bindings: pinctrl: samsung: Add exynos9610-wakeup-eint node
Add a dedicated compatible for the exynos9610-wakeup-eint node, which is
compatbile with Exynos850's implementation (and the Exynos7 fallback).

Signed-off-by: Alexandru Chimac <alex@chimac.ro>
Link: https://patch.msgid.link/20260102-exynos9610-pinctrl-v3-2-3f21f2cfb651@chimac.ro
Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
2026-01-11 12:10:24 +01:00
Alexandru Chimac
4ab3ec8baa dt-bindings: pinctrl: samsung: Add exynos9610-pinctrl compatible
Document pin controller support on Exynos9610-series SoCs.

Signed-off-by: Alexandru Chimac <alex@chimac.ro>
Link: https://patch.msgid.link/20260102-exynos9610-pinctrl-v3-1-3f21f2cfb651@chimac.ro
Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
2026-01-11 12:10:22 +01:00