| # Copyright 2022, 2024 NXP |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| description: | |
| NXP S32 pinctrl node for S32Z/E SoCs. |
| |
| The NXP S32 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/s32/S32Z27-BGA594-pinctrl.h> |
| |
| &pinctrl { |
| uart0_default: uart0_default { |
| group1 { |
| pinmux = <PB10_LIN_0_TX>; |
| output-enable; |
| }; |
| group2 { |
| pinmux = <PB11_LIN_0_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 reset values: |
| - input and output buffers disabled |
| - internal pull not enabled |
| - open drain disabled |
| - slew rate 4 (see description in property below). |
| - termination resistor disabled (affect LVDS pads only). |
| - current reference control disabled (affect LVDS pads only). |
| - Rx current boost disabled (affect LVDS pads only). |
| |
| Additionally: |
| - Safe Mode is always kept as reset value (disabled). |
| - Receiver Select is always kept as reset value (enables the differential vref based receiver). |
| |
| compatible: "nxp,s32ze-pinctrl" |
| |
| include: base.yaml |
| |
| child-binding: |
| description: NXP S32 pin controller pin group. |
| child-binding: |
| description: NXP S32 pin controller pin configuration node. |
| |
| include: |
| - name: pincfg-node.yaml |
| property-allowlist: |
| - bias-pull-down |
| - bias-pull-up |
| - drive-open-drain |
| - slew-rate |
| - 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: |
| enum: [0, 4, 5, 6, 7] |
| default: 4 |
| description: | |
| Slew rate control. Reset value is 4. |
| - For 3.3 V / 1.8 V FAST pads: |
| 0: FMAX_3318 = 208 MHz (at 1.8 V), 166 MHz (at 3.3 V) |
| 4: FMAX_3318 = 166 MHz (at 1.8 V), 150 MHz (at 3.3 V) |
| 5: FMAX_3318 = 150 MHz (at 1.8 V), 133 MHz (at 3.3 V) |
| 6: FMAX_3318 = 133 MHz (at 1.8 V), 100 MHz (at 3.3 V) |
| 7: FMAX_3318 = 100 MHz (at 1.8 V), 83 MHz (at 3.3 V) |
| - For 1.8 V GPIO pads: |
| 0: FMAX_18 = 208 MHz |
| 4: FMAX_18 = 150 MHz |
| 5: FMAX_18 = 133 MHz |
| 6: FMAX_18 = 100 MHz |
| 7: FMAX_18 = 50 MHz |
| - For 3.3 V GPIO pads: |
| 0: Reserved |
| 4: FMAX_33 = 50 MHz |
| 5: FMAX_33 = 50 MHz |
| 6: FMAX_33 = 50 MHz |
| 7: FMAX_33 = 1 MHz |
| |
| nxp,current-reference-control: |
| type: boolean |
| description: | |
| This configuration applies the current reference control to |
| the associated pin. It is only applicable to LVDS pads and |
| has no effect on other types of pads |
| |
| nxp,termination-resistor: |
| type: boolean |
| description: | |
| This configuration applies the termination resistor to |
| the associated pin. It is only applicable to LVDS pads and |
| has no effect on other types of pads |
| |
| nxp,rx-current-boost: |
| type: boolean |
| description: | |
| RX LVDS Current Boost |
| Boosts RX IO current. It is only applicable to LVDS pads and |
| has no effect on other types of pads |
| 0: Current reference is 200 μA; supports data rate up to 320 Mbaud |
| 1: Current reference is 1 mA; supports data rate up to 420 Mbaud |