This is the documentation for the latest (main) development branch of Zephyr. If you are looking for the documentation of previous releases, use the drop-down menu on the left and select the desired version.

silabs,gecko-pinctrl

Vendor: Silicon Laboratories

Description

The Silabs 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 usart0 device, default state */
    usart0_default: usart0_default {
      /* group 1 ('group1' name is arbitrary) */
      group1 {
        /* configure P0.1 as UART_TX and P0.2 as UART_RTS */
        psels = <GECKO_PSEL(UART_TX, A, 1)>, <GECKO_PSEL(UART_RTS, A, 2)>;
      };
      /* group 2 */
      group2 {
        /* configure P0.3 as UART_RX and P0.4 as UART_CTS */
        psels = <GECKO_PSEL(UART_RX, A, 3)>, <GECKO_PSEL(UART_CTS, A, 4)>;
      };
    };
  };

The 'usart0_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 GECKO_PSEL macro is used to specify a pin function selection.
Available pin functions can be found in the
include/dt-bindings/pinctrl/gecko-pinctrl.h header file.

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"

   &usart0 {
         pinctrl-0 = <&usart0_default>;
         pinctrl-names = "default";
   };

Properties

Top level properties

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

Properties not inherited from the base binding file.

(None)

Child node properties

Name

Type

Details

bias-disable

boolean

disable any pin bias

bias-high-impedance

boolean

high impedance mode ("third-state", "floating")

bias-bus-hold

boolean

latch weakly

bias-pull-up

boolean

enable pull-up resistor

bias-pull-down

boolean

enable pull-down resistor

bias-pull-pin-default

boolean

use pin's default pull state

drive-push-pull

boolean

drive actively high and low

drive-open-drain

boolean

drive with open drain (hardware AND)

drive-open-source

boolean

drive with open source (hardware OR)

drive-strength

int

maximum sink or source current in mA

drive-strength-microamp

int

maximum sink or source current in μA

input-enable

boolean

enable input on pin (no effect on output, such as enabling an input
buffer)

input-disable

boolean

disable input on pin (no effect on output, such as disabling an input
buffer)

input-schmitt-enable

boolean

enable schmitt-trigger mode

input-schmitt-disable

boolean

disable schmitt-trigger mode

input-debounce

int

Takes the debounce time in μsec, as argument or 0 to disable debouncing

power-source

int

select between different power supplies

low-power-enable

boolean

enable low power mode

low-power-disable

boolean

disable low power mode

output-disable

boolean

disable output on a pin (such as disable an output buffer)

output-enable

boolean

enable output on a pin without actively driving it (such as enabling
an output buffer)

output-low

boolean

set the pin to output mode with low level

output-high

boolean

set the pin to output mode with high level

sleep-hardware-state

boolean

indicate this is sleep related state which will be programmed into
the registers for the sleep state

slew-rate

int

set the slew rate

skew-delay

int

This affects the expected clock skew on input pins and the delay
before latching a value to an output pin. Typically indicates how
  many double-inverters are used to delay the signal.

Grandchild node properties

Name

Type

Details

psels

array

An array of pins sharing the same group properties. The pins should
be defined using the GECKO_PSEL utility macro that encodes the port,
pin and function.

This property is required.