This is a good example of how the Zephyr project works:
opened 04:26PM - 26 Oct 21 UTC
closed 03:02PM - 21 Nov 22 UTC
Enhancement
area: Pinmux
Meta
area: Pinctrl
Deprecation
## Goals of the transition for each SoC family
- nRF
- Allow users to cont… inue using `<signal>-pin` properties during the transition period (when `CONFIG_PINCTRL=n`)
- No pre-defined combinations since almost every pin can take any function
- NXP
- i.MX
- Kinetis
- LPC
- STM32
- Existing Devicetree representation will be kept
- Pinmux driver will be kept in tree during the transition period, but will not be used by any driver
## Timeline
- Grace period between 2.7.99 and 3.1 where both pinctrl and pinmux coexist, no deprecation
- By 3.1 all in-tree boards must've switched to pinctrl:
- Pinctrl driver complete
- All peripheral drivers for the SoC family supporting pinctrl
- In-tree boards use the new pinctrl representation
- After 3.1 is released (3.1.99) we deprecate pinmux
- Zephyr 3.2 deprecates pinmux, Zephyr 3.4 removes pinmux
## Porting status
- [x] Telink B91
- Existing pinmux driver: https://github.com/zephyrproject-rtos/zephyr/blob/main/drivers/pinmux/pinmux_b91.c
- Proposal: https://github.com/zephyrproject-rtos/zephyr/pull/42773
- Assignee: @yurvyn
- [x] TI CC13xx/CC26xx
- Existing pinmux driver: https://github.com/zephyrproject-rtos/zephyr/blob/main/drivers/pinmux/pinmux_cc13xx_cc26xx.c
- Note: uses `<signal>-pin` DT properties
- Proposal: #44492
- Assignee: @vaishnavachath
- [x] ESP32
- Existing pinmux driver: https://github.com/zephyrproject-rtos/zephyr/blob/main/drivers/pinmux/pinmux_esp32.c
- Notes: uses `<signal>-pin` DT properties
- Proposal: https://github.com/zephyrproject-rtos/zephyr/pull/43589
- Assignee: @glaubermaroto
- [x] HSDK
- Existing pinmux driver: https://github.com/zephyrproject-rtos/zephyr/blob/main/drivers/pinmux/pinmux_hsdk.c
- Proposal: #45343
- Assignee: @evgeniy-paltsev
- [x] Intel S1000
- Existing pinmux driver: https://github.com/zephyrproject-rtos/zephyr/blob/main/drivers/pinmux/pinmux_intel_s1000.c
- Proposal: https://github.com/zephyrproject-rtos/zephyr/pull/46496
- Assignee: @nashif
- [x] ITE IT8xxx2
- Existing pinmux driver: https://github.com/zephyrproject-rtos/zephyr/blob/main/drivers/pinmux/pinmux_ite_it8xxx2.c
- Proposal: #44786
- Assignee: @GTLin08
- [x] NXP LPC11U6X
- Existing pinmux driver: https://github.com/zephyrproject-rtos/zephyr/blob/main/drivers/pinmux/pinmux_lpc11u6x.c
- Proposal: #44843
- Assignee: @danieldegrasse
- [x] Microchip MCHP XEC
- Existing pinmux driver: https://github.com/zephyrproject-rtos/zephyr/blob/main/drivers/pinmux/pinmux_mchp_xec.c
- Proposal: https://github.com/zephyrproject-rtos/zephyr/pull/43282
- Assignee: @jvasanth1
- Missing: MEC1501, e.g. https://github.com/zephyrproject-rtos/zephyr/tree/main/boards/arm/mec1501modular_assy6885 https://github.com/zephyrproject-rtos/zephyr/pull/48893
- [x] NXP Kinetis
- Existing pinmux driver: https://github.com/zephyrproject-rtos/zephyr/blob/main/drivers/pinmux/pinmux_mcux.c
- Proposal: #39743, #43033 #43560
- Assignee: @danieldegrasse
- [x] NXP iMX RT1xxx
- Existing pinmux driver: https://github.com/zephyrproject-rtos/zephyr/blob/main/boards/arm/mimxrt1060_evk/pinmux.c
- Proposal: #42238 #44150
- Assignee: @danieldegrasse
- [x] NXP MCUX LPC
- Existing pinmux driver: https://github.com/zephyrproject-rtos/zephyr/blob/main/drivers/pinmux/pinmux_mcux_lpc.c
- Proposal: #43454, #44907
- Assignee: @danieldegrasse
- [x] NXP iMX RT6xx/5xx
- Existing pinmux driver: N/A [(custom implementation)](https://github.com/zephyrproject-rtos/zephyr/blob/main/boards/arm/mimxrt685_evk/pinmux.c)
- Proposal: #44571
- Assignee: @danieldegrasse
- [x] NXP iMX8M
- Existing pinmux driver: N/A [(custom implementation)](https://github.com/zephyrproject-rtos/zephyr/blob/main/boards/arm/mimx8mm_evk/pinmux.c)
- Proposal: https://github.com/zephyrproject-rtos/zephyr/pull/45126
- Assignee: @danieldegrasse
- [x] RV32M1
- Existing pinmux driver: https://github.com/zephyrproject-rtos/zephyr/blob/main/drivers/pinmux/pinmux_rv32m1.c
- Proposal: #45274
- Assignee: @henrikbrixandersen
- [x] Atmel SAM/SAM0
- Existing pinmux driver: https://github.com/zephyrproject-rtos/zephyr/blob/main/drivers/pinmux/pinmux_sam0.c
- Proposal: (pending: multiple device drivers, board conversion)
- #35423
- #42512
- #43731
- Assignee: @nandojve
- [x] SiFive
- Existing pinmux driver: https://github.com/zephyrproject-rtos/zephyr/blob/main/drivers/pinmux/pinmux_sifive.c
- Proposal: https://github.com/zephyrproject-rtos/zephyr/pull/44068
- Assignee: @tgorochowik
- [x] nRF
- Existing pinmux driver: N/A (done at device drivers)
- Proposal: #39429 #43926
- Assignee: @anangl
- [x] STM32
- Existing pinmux driver: https://github.com/zephyrproject-rtos/zephyr/blob/main/drivers/pinmux/pinmux_stm32.c
- Proposal: #40194
- [x] Nuvoton NPCX
- Existing pinmux driver: N/A (custom implementation)
- Proposal: #43638
- Assignee: @MulinChao @ChiHuaL @WealianLiao
## Custom APIs
- [ ] SiLabs
- Existing pinmux driver: N/A (custom implementation)
- Proposal: #50352
- Assignee: @chrta
- [ ] Cypress psoc6
- Existing pinmux driver: N/A (custom implementation, see e.g. `dts/arm/cypress/psoc6-pinctrl.dtsi`)
- Assignee: @npal-cy (please confirm)
- Enhancement issue: https://github.com/zephyrproject-rtos/zephyr/issues/52434
- [ ] armv8-m/armv7-m
- Existing pinmux driver: N/A (board level C code)
- Assignee: @ithinuel
- https://github.com/zephyrproject-rtos/zephyr/blob/main/boards/arm/v2m_musca_b1/pinmux.c
- https://github.com/zephyrproject-rtos/zephyr/blob/main/boards/arm/mps2_an385/pinmux.c
- Enhancement issue: https://github.com/zephyrproject-rtos/zephyr/issues/52435
- [ ] ARC emsk
- Existing pinmux driver: N/A (board level C code)
- https://github.com/zephyrproject-rtos/zephyr/blob/main/boards/arc/em_starterkit/pmodmux.c
- Assignee: @ruuddw (please confirm: tbd, see #45771)
- Enhancement issue: https://github.com/zephyrproject-rtos/zephyr/issues/52436
- [ ] Xilinx ZynqMP
- Existing pinmux driver: N/A (board level C code)
- https://github.com/zephyrproject-rtos/zephyr/blob/main/boards/arm/mercury_xu/board.c
- Assignee: @wsipak (please confirm)
- Enhancement issue: https://github.com/zephyrproject-rtos/zephyr/issues/52437
## New drivers
List of new driver proposals for SoCs that did not have an existing pinmux driver.
- [X] GigaDevice
- Proposal: https://github.com/zephyrproject-rtos/zephyr/pull/39974
- [x] RaspberryPi Pico (RP2040)
- Proposal: https://github.com/zephyrproject-rtos/zephyr/pull/34835
- [X] Renesas R-Car
- Proposal: https://github.com/zephyrproject-rtos/zephyr/pull/40550
- [x] Bouffalo Lab
- Proposal: https://github.com/zephyrproject-rtos/zephyr/pull/37686
- [x] Xilinx Zynq-7000
- Proposal: https://github.com/zephyrproject-rtos/zephyr/pull/46648
When something changes, things move forward together. There is visibility. There is marketing value to making sure your product keeps up – you don’t want to be on the list as the one that does not have a checkbox. Everyone wins – first the user can always run the latest version of Zephyr on any MCU. MCU vendor developers have community help. There is energy and momentum to move forward.
Zephyr is an integrated project, where all the pieces are regularly integrated and tested. This appears to work so much better than the “develop the core and throw it over the wall” approach.