driver: pinctrl: adapt for mcxe31x series
- add binding files: nxp,mcxe31x-siul2-pinctrl.yaml
- Enable PINCTRL_NXP_SIUL2 when nxp,mcxe31x-siul2-pinctrl is ok
Signed-off-by: Lucien Zhao <lucien.zhao@nxp.com>
diff --git a/drivers/pinctrl/Kconfig.nxp_siul2 b/drivers/pinctrl/Kconfig.nxp_siul2
index e60391f..1650f9d 100644
--- a/drivers/pinctrl/Kconfig.nxp_siul2
+++ b/drivers/pinctrl/Kconfig.nxp_siul2
@@ -4,6 +4,7 @@
config PINCTRL_NXP_SIUL2
bool "Pin controller driver for NXP SIUL2"
default y
- depends on DT_HAS_NXP_S32ZE_SIUL2_PINCTRL_ENABLED || DT_HAS_NXP_S32K3_SIUL2_PINCTRL_ENABLED
+ depends on DT_HAS_NXP_S32ZE_SIUL2_PINCTRL_ENABLED || DT_HAS_NXP_S32K3_SIUL2_PINCTRL_ENABLED || \
+ DT_HAS_NXP_MCXE31X_SIUL2_PINCTRL_ENABLED
help
Enable pin controller driver for NXP SIUL2.
diff --git a/dts/bindings/pinctrl/nxp,mcxe31x-siul2-pinctrl.yaml b/dts/bindings/pinctrl/nxp,mcxe31x-siul2-pinctrl.yaml
new file mode 100644
index 0000000..43b24d7
--- /dev/null
+++ b/dts/bindings/pinctrl/nxp,mcxe31x-siul2-pinctrl.yaml
@@ -0,0 +1,115 @@
+# Copyright 2025 NXP
+# SPDX-License-Identifier: Apache-2.0
+
+description: |
+ NXP SIUL2 Pin Controller for MCXE31X SoCs
+
+ The NXP SIUL2 pin controller is a singleton node responsible for controlling
+ the pin function selection and pin properties. This node, labeled 'pinctrl' in
+ the SoC's devicetree, will define pin configurations in pin groups. Each group
+ within the pin configuration defines the pin configuration for a peripheral,
+ and each numbered subgroup in the pin group defines all the pins for that
+ peripheral with the same configuration properties. The 'pinmux' property in
+ a group selects the pins to be configured, and the remaining properties set
+ configuration values for those pins.
+
+ For example, to configure the pinmux for UART0, modify the 'pinctrl' from your
+ board or application devicetree overlay as follows:
+
+ /* Include the SoC package header containing the predefined pins definitions */
+ #include <nxp/mcx/MCXE31BMPB-pinctrl.h>
+
+ &pinctrl {
+ uart0_default: uart0_default {
+ group1 {
+ pinmux = <PTA3_LPUART0_TX_O>;
+ output-enable;
+ };
+ group2 {
+ pinmux = <PTA28_LPUART0_RX>;
+ input-enable;
+ };
+ };
+ };
+
+ The 'uart0_default' node contains the pin configurations for a particular state
+ of a device. The 'default' state is the active state. Other states for the same
+ device can be specified in separate child nodes of 'pinctrl'.
+
+ In addition to 'pinmux' property, each group can contain other properties such as
+ 'bias-pull-up' or 'slew-rate' that will be applied to all the pins defined in
+ 'pinmux' array. To enable the input buffer use 'input-enable' and to enable the
+ output buffer use 'output-enable'.
+
+ To link the pin configurations with UART0 device, use pinctrl-N property in the
+ device node, where 'N' is the zero-based state index (0 is the default state).
+ Following previous example:
+
+ &uart0 {
+ pinctrl-0 = <&uart0_default>;
+ pinctrl-names = "default";
+ status = "okay";
+ };
+
+ If only the required properties are supplied, the pin configuration register
+ will be assigned the following values:
+ - input and output buffers disabled
+ - internal pull not enabled
+ - slew rate "fastest"
+ - invert disabled
+ - drive strength disabled.
+
+ Additionally, following settings are currently not supported and default to
+ the values indicated below:
+ - Safe Mode Control (disabled)
+ - Pad Keeping (disabled)
+ - Input Filter (disabled).
+
+compatible: "nxp,mcxe31x-siul2-pinctrl"
+
+include: base.yaml
+
+child-binding:
+ description: NXP SIUL2 pin controller pin group.
+ child-binding:
+ description: NXP SIUL2 pin controller pin configuration node.
+
+ include:
+ - name: pincfg-node.yaml
+ property-allowlist:
+ - bias-disable
+ - bias-pull-down
+ - bias-pull-up
+ - input-enable
+ - output-enable
+
+ properties:
+ pinmux:
+ required: true
+ type: array
+ description: |
+ An array of pins sharing the same group properties. The pins must be
+ defined using the macros from the SoC package header. These macros
+ encode all the pin muxing information in a 32-bit value.
+
+ slew-rate:
+ type: string
+ enum:
+ - "fastest"
+ - "slowest"
+ default: "fastest"
+ description: |
+ Slew rate control. Can be either slowest or fastest setting.
+ See the SoC reference manual for applicability of this setting.
+
+ nxp,invert:
+ type: boolean
+ description: |
+ Invert the signal selected by Source Signal Selection (SSS) before
+ transmitting it to the associated destination (chip pin or module port).
+
+ nxp,drive-strength:
+ type: boolean
+ description: |
+ Drive strength enable.
+ See the SoC reference manual for applicability of this setting.