The latest development version of this page may be more current than this released 3.7.0 version.

nordic,nrf-pinctrl

Vendor: Nordic Semiconductor

Description

The nRF pin controller is a singleton node responsible for controlling
pin function selection and pin properties. For example, you can use this
node to route UART0 RX to pin P0.1 and enable the pull-up resistor on the
pin.

The node has the 'pinctrl' node label set in your SoC's devicetree,
so you can modify it like this:

  &pinctrl {
          /* your modifications go here */
  };

All device pin configurations should be placed in child nodes of the
'pinctrl' node, as shown in this example:

  /* You can put this in places like a board-pinctrl.dtsi file in
   * your board directory, or a devicetree overlay in your application.
   */
  &pinctrl {
    /* configuration for uart0 device, default state */
    uart0_default: uart0_default {
      /* group 1 ('group1' name is arbitrary) */
      group1 {
        /* configure P0.1 as UART_TX and P0.2 as UART_RTS */
        psels = <NRF_PSEL(UART_TX, 0, 1)>, <NRF_PSEL(UART_RTS, 0, 2)>;
      };
      /* group 2 */
      group2 {
        /* configure P0.3 as UART_RX and P0.4 as UART_CTS */
        psels = <NRF_PSEL(UART_RX, 0, 3)>, <NRF_PSEL(UART_CTS, 0, 4)>;
        /* both P0.3 and P0.4 are configured with pull-up */
        bias-pull-up;
      };
    };
  };

The 'uart0_default' child node encodes the pin configurations for a
particular state of a device; in this case, the default (that is, active)
state. You would specify the low-power configuration for the same device
in a separate child node.

As shown, pin configurations are organized in groups within each child node.
Each group can specify a list of pin function selections in the 'psels'
property. The NRF_PSEL macro is used to specify a pin function selection.
If a pin needs to be explicitly disconnected, there is also the
NRF_PSEL_DISCONNECTED macro.
Available pin functions can be found in the
include/zephyr/dt-bindings/pinctrl/nrf-pinctrl.h header file.

A group can also specify shared pin properties common to all the specified
pins, such as the 'bias-pull-up' property in group 2. Here is a list of
supported standard pin properties:

- bias-disable: Disable pull-up/down (default behavior, not required).
- bias-pull-up: Enable pull-up resistor.
- bias-pull-down: Enable pull-down resistor.
- low-power-enable: Configure pin as an input with input buffer
  disconnected.

Note that bias options are mutually exclusive.

To link this pin configuration with a device, use a pinctrl-N property
for some number N, like this example you could place in your board's DTS
file:

   #include "board-pinctrl.dtsi"

   &uart0 {
         pinctrl-0 = <&uart0_default>;
         pinctrl-names = "default";
   };

Properties

Top level properties

These property descriptions apply to “nordic,nrf-pinctrl” nodes themselves. This page also describes child node properties in the following sections.

Properties not inherited from the base binding file.

(None)

Grandchild node properties

Name

Type

Details

bias-disable

boolean

disable any pin bias

bias-pull-up

boolean

enable pull-up resistor

bias-pull-down

boolean

enable pull-down resistor

low-power-enable

boolean

enable low power mode

psels

array

An array of pins sharing the same group properties. The pins should
be defined using the NRF_PSEL utility macro that encodes the port,
pin and function. NRF_PSEL_DISCONNECTED is also available to explicitly
disconnect a pin.

This property is required.

nordic,drive-mode

int

Pin output drive mode. Available drive modes are pre-defined in
nrf-pinctrl.h. Note that extra modes may not be available on certain
devices. Defaults to standard mode for 0 and 1 (NRF_DRIVE_S0S1), the
SoC default, except for the "nordic,nrf-twi" and "nordic,nrf-twim"
nodes where NRF_DRIVE_S0S1 is always overridden with NRF_DRIVE_S0D1
(standard '0', disconnect '1').

nordic,invert

boolean

Invert pin polarity (set the active state to low).
Only valid for PWM channel output pins.