summaryrefslogtreecommitdiff
path: root/drivers/pinctrl
AgeCommit message (Collapse)Author
2025-07-14pinctrl-uclass: update comment to reflect codePhilip Molloy
The logic was updated without modifying the comment above it Fixes: 72b8c6d1ebf ("pinctrl: don't fall back to pinctrl_select_state_simple()") Signed-off-by: Philip Molloy <[email protected]>
2025-07-03pinctrl: Port pin controller driver for T-Head TH1520 SoCYao Zi
The SoC pads of TH1520 are separated into three groups (AP 1, AP 2 and AON) controlled by independent pin controllers. This patch ports their driver from Linux kernel with most code for setting pinconf and pinmux kept as is. The dt-binding of TH1520 pin controller uses a schema where pins to configure are specfied as strings and looked up at runtime, which the generic pinctrl helpers of U-Boot cannot parse, thus a customized set_state() callback is implemented to parse pinconfig nodes and setup the configuration. Signed-off-by: Yao Zi <[email protected]> Acked-by: Leo Yu-Chi Liang <[email protected]>
2025-06-29arm: pinctrl: Define .mux_mask field for NXP's SoCLukasz Majewski
The commit e8a9521e649f ("vf500/vf610: synchronise device trees with linux") has synchronized U-Boot's DTS with v5.19 Linux kernel. It turned out that in Linux's upstream iomuxc node description the 'fsl,mux_mask' was missing, so the U-Boot's pinctrl driver for NXP's Vybrid SoC was not working properly. As by default the mux mask was set to 0, for example the vf610 based boards (like BK4) were bricked, due to misconfiguration of gpio at early boot stage. The fix for all NXP eligible boards is to define .mux_mask field for soc specific *pinctrl_soc_info structure and use it directly in pinctrl MMIO driver, without the need to read the "fsl,mux_mask" property from device tree. This change brings the NXP's pinctrl driver in U-Boot closer to Linux upstream one. Signed-off-by: Lukasz Majewski <[email protected]> Reviewed-by: Peng Fan <[email protected]> #for i.MX8ULP
2025-06-23pinctrl: qcom: Add ipq5424 pinctrl driverVaradarajan Narayanan
Add pinctrl driver for the TLMM block found in the ipq5424 SoC. Signed-off-by: Varadarajan Narayanan <[email protected]> Reviewed-by: Casey Connolly <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Casey Connolly <[email protected]>
2025-06-03pinctrl: gpio: sx150x: add Semtech SX150x I2C GPIO expander and pinctrl driverAnis Chali
implement a driver to use semtech pinctrl and gpio expander, this driver is adapted from a existent linux driver that is written by Gregory Bean <[email protected]>. Signed-off-by: Anis Chali <[email protected]>
2025-05-06pinctrl: rockchip: constify rockchip_pin_ctrl for RV1108Quentin Schulz
There's no need to modify private data from the controller, so let's make that struct const. Signed-off-by: Quentin Schulz <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2025-05-06pinctrl: rockchip: constify rockchip_pin_ctrl for RK3399Quentin Schulz
There's no need to modify private data from the controller, so let's make that struct const. Signed-off-by: Quentin Schulz <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2025-05-06pinctrl: rockchip: constify rockchip_pin_ctrl for RK3368Quentin Schulz
There's no need to modify private data from the controller, so let's make that struct const. Signed-off-by: Quentin Schulz <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2025-05-06pinctrl: rockchip: constify rockchip_pin_ctrl for RK3328Quentin Schulz
There's no need to modify private data from the controller, so let's make that struct const. Signed-off-by: Quentin Schulz <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2025-05-06pinctrl: rockchip: constify rockchip_pin_ctrl for RK3308Quentin Schulz
There's no need to modify private data from the controller, so let's make that struct const. Signed-off-by: Quentin Schulz <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2025-05-06pinctrl: rockchip: constify rockchip_pin_ctrl for RK3288Quentin Schulz
There's no need to modify private data from the controller, so let's make that struct const. Signed-off-by: Quentin Schulz <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2025-05-06pinctrl: rockchip: constify rockchip_pin_ctrl for RK3228Quentin Schulz
There's no need to modify private data from the controller, so let's make that struct const. Signed-off-by: Quentin Schulz <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2025-05-06pinctrl: rockchip: constify rockchip_pin_ctrl for RK3188Quentin Schulz
There's no need to modify private data from the controller, so let's make that struct const. Signed-off-by: Quentin Schulz <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2025-05-06pinctrl: rockchip: constify rockchip_pin_ctrl for RK3128Quentin Schulz
There's no need to modify private data from the controller, so let's make that struct const. Signed-off-by: Quentin Schulz <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2025-05-06pinctrl: rockchip: constify rockchip_pin_ctrl for RK3066Quentin Schulz
There's no need to modify private data from the controller, so let's make that struct const. Signed-off-by: Quentin Schulz <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2025-05-06pinctrl: rockchip: constify rockchip_pin_ctrl for RK3036Quentin Schulz
There's no need to modify private data from the controller, so let's make that struct const. Signed-off-by: Quentin Schulz <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2025-05-06pinctrl: rockchip: constify rockchip_pin_ctrl for PX30Quentin Schulz
There's no need to modify private data from the controller, so let's make that struct const. Signed-off-by: Quentin Schulz <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2025-05-06pinctrl: rockchip: fix bank's pin_base computingQuentin Schulz
The logic in the core reads the nr_pins of the controller and uses it as the index of the first pin in the bank (pin_base) it currently parses. It then increments the number of pins in the controller before going to the next bank. This works "fine" for controllers where nr_pins isn't defined in their rockchip_pin_ctrl struct as it defaults to 0. However, when it is already set, it'll make the index pin of each bank offset by the number in nr_pins declared in the struct at initialization, and it'll keep growing while adding banks, which means the total number of pins in the controller will be misrepresented. Additionally, U-Boot proper may probe this driver twice (pre-reloc and true proper) and not reset nr_pins of the controller in-between meaning the second probe will have an offset of the actual correct nr_pins. Instead, let's just store locally the number of pins in the controller and make sure it's reset between probes. Finally, this stops modifying a const struct which will soon be triggering a CPU abort at runtime. Signed-off-by: Quentin Schulz <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2025-05-03firmware: scmi_agent: add SCMI pin control protocol supportAlice Guo
This patch adds SCMI pin control protocol support to make the pin controller driver based on SCMI, such as drivers/pinctrl/nxp/pinctrl-imx-scmi.c, can be bound to the SCMI agent device whose protocol id is 0x19. Signed-off-by: Alice Guo <[email protected]>
2025-05-03pinctrl: nxp: add a pin controller driver based on SCMI pin control protocolAlice Guo
This patch provides a pinctrl driver based on SCMI pin control protocol. Currently, only the PINCTRL_CONFIG_SET command is implemented. Signed-off-by: Ranjani Vaidyanathan <[email protected]> Signed-off-by: Peng Fan <[email protected]> Signed-off-by: Alice Guo <[email protected]> Reviewed-by: Ye Li <[email protected]>
2025-05-02Merge patch series "Qualcomm: cleanup OF_LIVE fixup and fix RB1/2"Tom Rini
Caleb Connolly <[email protected]> says: Introduce a new event to signal that the live tree has been built, allowing boards to perform fixups on the tree before devices are bound. Crucially this allows for devices to be enabled or disabled, but also allows for properties that are parsed during the bind stage to be modified (such as dr_mode for dwc3). With this in place, mach-snapdragon is switched over to use the event and some hacky U-Boot specific DT overrides (which had to be undone prior to booting an image) are removed in favour of fixing up the livetree (which is not passed on to further boot stages). Finally, some minor fixes are made for the QCM2290 RB1 board, the sdcard is enabled and it now uses USB host mode in U-Boot like it's bigger sibling the RB2. Link: https://lore.kernel.org/r/[email protected]
2025-05-02pinctrl: qcom: qcm2290: fix off by 1 in pin_countCaleb Connolly
There are 134 pins not 133, oops! This fixes the sdcard on the RB1 as the pins now all get configured correctly. Fixes: 0ecb8cfcb930 ("pinctrl: qcom: add qcm2290 pinctrl driver") Reviewed-by: Sumit Garg <[email protected]> Reviewed-by: Neil Armstrong <[email protected]> Tested-by: Sumit Garg <[email protected]> Signed-off-by: Caleb Connolly <[email protected]>
2025-04-23pinctrl: rockchip: support rk3576 pinctrlSteven Liu
Add support for the rk3576 variant of pinctrl. Signed-off-by: Steven Liu <[email protected]> [adapted to mainline u-boot] Signed-off-by: Heiko Stuebner <[email protected]> Reviewed-by: Jonas Karlman <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2025-04-23pinctrl: rockchip: Add support for RK3528Steven Liu
Add pinctrl driver for RK3528. Imported from vendor U-Boot linux-6.1-stan-rkr5 tag with adjustments to use regmap_update_bits(). Signed-off-by: Steven Liu <[email protected]> Signed-off-by: Jonas Karlman <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2025-04-12ARM: tegra20: add funcmux for exposing UART over uSD slot on Tegra 20Artur Kowalski
UART-A can be exposed through uSD, this was tested on Transformer T20 but should work on all Ventana-based boards. TX is exported on SDD pingroup corresponding to uSD CLK pin RX is exported on SDB which is CMD pin in uSD slot Signed-off-by: Artur Kowalski <[email protected]> Reviewed-by: Svyatoslav Ryhel <[email protected]> Signed-off-by: Svyatoslav Ryhel <[email protected]>
2025-04-12pinctrl: tegra: detect unknown/invalid pin/func configurationsSvyatoslav Ryhel
Applies same logic to general Tegra pincontrol driver as is done to Tegra20 by commit: a35bf832d70 ("pinctrl: tegra20: detect unknown/invalid pin/func configurations") Suggested-by: Artur Kowalski <[email protected]> Signed-off-by: Svyatoslav Ryhel <[email protected]>
2025-04-12pinctrl: tegra20: detect unknown/invalid pin/func configurationsArtur Kowalski
Tegra20 driver doesn't know about some pin configurations and even about some pins. In case when pin configuration is unknown the pin would be muxed to whatever is under function 0, in case when pin itself is unknown, it could cause out-of-bounds array access in pinmux_set_func and pinmux_set_pullupdown. Signed-off-by: Artur Kowalski <[email protected]> Reviewed-by: Svyatoslav Ryhel <[email protected]> Signed-off-by: Svyatoslav Ryhel <[email protected]>
2025-04-11Merge patch series "Switch to using $(PHASE_) in Makefiles"Tom Rini
Tom Rini <[email protected]> says: This series switches to always using $(PHASE_) in Makefiles when building rather than $(PHASE_) or $(XPL_). It also starts on documenting this part of the build, but as a follow-up we need to rename doc/develop/spl.rst and expand on explaining things a bit. Link: https://lore.kernel.org/r/[email protected]
2025-04-11Kbuild: Always use $(PHASE_)Tom Rini
It is confusing to have both "$(PHASE_)" and "$(XPL_)" be used in our Makefiles as part of the macros to determine when to do something in our Makefiles based on what phase of the build we are in. For consistency, bring this down to a single macro and use "$(PHASE_)" only. Signed-off-by: Tom Rini <[email protected]>
2025-04-11pinctrl: qcom: handle reserved rangesCaleb Connolly
Some Qualcomm boards feature reserved ranges of pins which are protected by firmware. Attempting to read or write any registers associated with these pins results the board resetting. Add support for parsing these ranges from devicetree and ensure that the pinctrl and GPIO drivers don't try to interact with these pins. Signed-off-by: Neil Armstrong <[email protected]> Reviewed-by: Sumit Garg <[email protected]> Link: https://lore.kernel.org/r/20250410-topic-sm8x50-pinctrl-reserved-ranges-v2-1-654488392b9a@linaro.org Signed-off-by: Caleb Connolly <[email protected]>
2025-04-11drivers: pinctrl: Add Qualcomm SDM630/660 TLMM driverAlexey Minnekhanov
Add support for TLMM pin controller block (Top Level Mode Multiplexer) on SDM630/660 SoCs, with support for special pins. Correct pin configuration is required for working debug UART and eMMC/SD cards. SDM630 and SDM660 TLMM blocks are the same. Signed-off-by: Alexey Minnekhanov <[email protected]> Reviewed-by: Caleb Connolly <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Caleb Connolly <[email protected]>
2025-04-10pinctrl: qcom: add driver for SA8775P SoCVaradarajan Narayanan
Add pinctrl and GPIO driver for SA8775P. Driver code is based on the similar U-Boot and Linux drivers. Signed-off-by: Varadarajan Narayanan <[email protected]> Reviewed-by: Caleb Connolly <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Caleb Connolly <[email protected]>
2025-04-01Kconfig: Fix "warning: style: quotes recommended" warningsTom Rini
We have three warnings about needing to use quotes around some strings in Kconfig files today. In two of these cases we can just add the missing strings. In the case of INTEL_PINCTRL_PADCFG_PADTOL the symbol is never referenced and should be dropped. Signed-off-by: Tom Rini <[email protected]>
2025-03-27Merge branch 'next' of https://source.denx.de/u-boot/custodians/u-boot-sunxi ↵Tom Rini
into next Assorted fixes, refactorings and additions that are ready, and shave off some load from upcoming series'. Improves MMC performance on D1/T113 (missed clock divider), enables eMMC access on the H616 family (never worked, many thanks to Jernej for the fix!), DRAM detection fixes for the H616 (now reportedly stable). Some patches for the upcoming Allwinner A133 SoC support: a few refactorings, plus the DM clock and pinctrl driver. The DRAM init routines work, but need some more polishing, that also holds back the actual enablement patch, which will hopefully follow for v2025.07 still. Also some preparatory patches for the Allwinner A523 SoC support, for now just to improve the FEL save/restore code. There will be more patches coming up for this, ideally also in the coming cycle still. Gitlab CI passed, and I booted that briefly on some boards.
2025-03-27pinctrl: sunxi: add Allwinner A100/A133 pinctrl descriptionAndre Przywara
The Allwinner A100 SoC has been around for a while, and has now seemingly been replaced with its close sibling A133. Add the required mapping between the pinmux group strings and their respective mux value, as far as used by U-Boot proper. Linux has some basic (clock and pinctrl) support for a while, so we can build on the names already used there. Signed-off-by: Andre Przywara <[email protected]> Acked-by: Jernej Skrabec <[email protected]>
2025-03-26Merge branch 'staging' of ↵Tom Rini
https://source.denx.de/u-boot/custodians/u-boot-tegra into next - More Tegra video improvements
2025-03-19pinctrl: tegra: adjust default values of pinsSvyatoslav Ryhel
The current default pin and drive values were more of temporary placeholders. They have to be replaced with accurate default values as specified in the TRM and header file. Signed-off-by: Svyatoslav Ryhel <[email protected]>
2025-03-17pinctrl/qcom: fix kconfig option namesCaleb Connolly
A copy-paste error is starting to get out of hand... Fix all these so they don't look like clock drivers in menuconfig. Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Caleb Connolly <[email protected]>
2025-03-17pinctrl: qcom: add sc7280 pinctrl driverCaleb Connolly
Introduce a pinctrl driver for SC7280/QCM6490, this is used by the RB3 Gen 2, FairPhone 5 and other devices. Tested-by: Christopher Obbard <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Caleb Connolly <[email protected]>
2025-03-17pinctrl: qcom: Add ipq9574 pinctrl driverVaradarajan Narayanan
Add pinctrl driver for the TLMM block found in the ipq9574 SoC. Reviewed-by: Caleb Connolly <[email protected]> Signed-off-by: Varadarajan Narayanan <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Caleb Connolly <[email protected]>
2025-03-17pinctrl: qcom: Handle get_function_mux failureVaradarajan Narayanan
Presently, get_function_mux returns an unsigned int and cannot differentiate between failure and correct function value. Change its return type to int and check for failure in the caller. Additionally, updated drivers/pinctrl/qcom/pinctrl-*.c to accommodate the above return type change. Only compile test done. Signed-off-by: Varadarajan Narayanan <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Caleb Connolly <[email protected]>
2025-03-12Merge patch series "drivers: Driver support for ADI SC5xx SoCs"Tom Rini
Greg Malysa <[email protected]> says: This series adds all of the supported peripheral drivers for the sc5xx series of SoCs from Analog Devices and other drivers that are used by the evaluation kits, such as a GPIO expander used by the EZLITE carrier boards. This series passes gitlab CI tests. Link: https://lore.kernel.org/r/[email protected]
2025-03-12pinctrl: Add support for ADI SC5XX-family pinctrlGreg Malysa
This adds support for pin configuration on the Analog Devices SC5XX SoC family. This commit is largely a port of the Linux driver, which has not yet been submitted upstream. Co-developed-by: Nathan Barrett-Morrison <[email protected]> Signed-off-by: Nathan Barrett-Morrison <[email protected]> Co-developed-by: Ian Roberts <[email protected]> Signed-off-by: Ian Roberts <[email protected]> Signed-off-by: Vasileios Bimpikas <[email protected]> Signed-off-by: Utsav Agarwal <[email protected]> Signed-off-by: Arturs Artamonovs <[email protected]> Signed-off-by: Oliver Gaskell <[email protected]> Signed-off-by: Greg Malysa <[email protected]>
2025-03-12Merge branch 'staging' of ↵Tom Rini
https://source.denx.de/u-boot/custodians/u-boot-tegra into next
2025-03-11pinctrl: renesas: Drop special RZN1 entry from MakefileMarek Vasut
The RZN1 symbol name is CONFIG_RZN1, there is no CONFIG_ARCH_RZN1. Since RZN1 enables CONFIG_ARCH_RENESAS as well, remove the special RZN1 entry from Makefile, the RZN1 pinctrl driver will still be pulled in via CONFIG_ARCH_RENESAS. Fixes: e4aea57fa773 ("pinctrl: renesas: add R906G032 driver") Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Paul Barker <[email protected]>
2025-03-10Merge tag 'v2025.04-rc4' into nextTom Rini
This uses Heinrich's merge of lib/efi_loader/efi_net.c which results in no changes.
2025-02-26pinctrl: qcom: sm8250: fix pin countCaleb Connolly
The pin count wasn't updated when the special pins were added, as a result it was never possible to configure the special pins on SM8250 boards. Fix the pin count and allow the special pins to be configured. This fixes sdcard support on the RB5. Fixes: 58fa52042471 ("pinctr: qcom: sm8250: add special pins pins configuration data") Reviewed-by: Neil Armstrong <[email protected]> Tested-by: Amit Pundir <[email protected]> Signed-off-by: Caleb Connolly <[email protected]>
2025-02-26pinctrl: tegra: add Tegra K1 supportSvyatoslav Ryhel
Tegra 124 is fully compatible with existing Tegra pincontrol driver, but it needs a specific MIPI PAD control pinconfig. Signed-off-by: Svyatoslav Ryhel <[email protected]>
2025-02-24Merge tag 'v2025.04-rc3' into nextTom Rini
Prepare v2025.04-rc3
2025-02-19pinctrl: rockchip: rk3328: Fix pinmux for GPIO2-B and GPIO3-B pinsJonas Karlman
The pinmux bits for GPIO2-B0 to GPIO2-B6 actually have 2 bits width, correct the bank flag for GPIO2-B. The pinmux bits for GPIO2-B7 is recalculated so it remain unchanged. Add missing GPIO3-B1 to GPIO3-B7 pinmux data to rk3328_mux_recalced_data as mux register offset for these pins does not follow rockchip convention. This matches changes in following Linux commits: - e8448a6c817c ("pinctrl: rockchip: fix pinmux bits for RK3328 GPIO2-B pins") - 5ef6914e0bf5 ("pinctrl: rockchip: fix pinmux bits for RK3328 GPIO3-B pins") - 128f71fe014f ("pinctrl: rockchip: correct RK3328 iomux width flag for GPIO2-B pins") Signed-off-by: Jonas Karlman <[email protected]> Reviewed-by: Kever Yang <[email protected]>