ti,cc13xx-cc26xx-pinctrl

Vendor: Texas Instruments

Note

An implementation of a driver matching this compatible is available in drivers/pinctrl/pinctrl_cc13xx_cc26xx.c.

Description

TI SimpleLink CC13xx / CC26xx pinctrl node.

Device pin configuration should be placed in the child nodes of this node.
Populate the 'pinmux' field with a pair consisting of a pin number and its IO
functions.

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 in the i2c0 example shown at the end.

Here is a list of
supported standard pin properties:

- bias-disable: Disable pull-up/down.
- bias-pull-down: Enable pull-down resistor.
- bias-pull-up: Enable pull-up resistor.
- drive-open-drain: Output driver is open-drain.
- drive-open-drain: Output driver is open-source.
- drive-strength: Minimum current that can be sourced from the pin.
- input-enable: enable input.
- input-schmitt-enable: enable input schmitt circuit.
- ti,input-edge-detect: enable and configure edge detection interrupts

An example for CC13XX family, include the chip level pinctrl
DTSI file in the board level DTS:

  #include <dt-bindings/pinctrl/cc13xx_cc26xx-pinctrl.h>

We want to configure the I2C pins to open drain, with pullup enabled
and input enabled.

To change a pin's pinctrl default properties add a reference to the
pin in the board's DTS file and set the properties.

  &i2c0 {
    pinctrl-0 = <&i2c0_scl_default &i2c0_sda_default>;
    pinctrl-1 = <&i2c0_scl_sleep &i2c0_sda_sleep>;
    pinctrl-names = "default", "sleep";
  }

The i2c0_scl_default corresponds to the following in the board dts file:

  &pinctrl {
    i2c0_scl_default: i2c0_scl_default {
      pinmux = <4 IOC_PORT_MCU_I2C_MSSCL>;
      bias-pull-up;
      drive-open-drain;
      input-enable;
    };
  };

To configure an input pin with edge detection (e.g. to count pulses):

  &pinctrl {
    gpt0_edge_counter: gpt0_edge_counter {
      pinmux = <15 IOC_PORT_MCU_PORT_EVENT0>;
      input-enable;
      bias-pull-up;
      ti,input-edge-detect = <IOC_RISING_EDGE>;
    };
  };

To configure an output pin (e.g. for PWM output):

  &pinctrl {
    gpt0_pwm: gpt0_pwm {
      pinmux = <16 IOC_PORT_MCU_PORT_EVENT1>;
      bias-disable;
      drive-strength = <8>; /* in mA */
    };
  };

Properties

Top level properties

These property descriptions apply to “ti,cc13xx-cc26xx-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-pull-up

boolean

enable pull-up resistor

bias-pull-down

boolean

enable pull-down resistor

drive-open-drain

boolean

drive with open drain (hardware AND)

drive-open-source

boolean

drive with open source (hardware OR)

drive-strength

int

The drive strength controls the minimum output driver strength of an I/O pin
configured as an output.
  2: min 2 mA (SoC default)
  4: min 4 mA
  8: min 8 mA for double drive strength IOs, min 4 mA for normal IOs

Default value: 2

Legal values: 2, 4, 8

input-enable

boolean

enable input on pin (e.g. enable an input buffer, no effect on output)

input-schmitt-enable

boolean

enable schmitt-trigger mode

pinmux

array

CC13XX/CC26XX pin's configuration (IO pin, IO function).

This property is required.

ti,input-edge-detect

int

Enables or disables the edge detection interrupt and configures it:
  IOC_NO_EDGE: No edge detection (SoC default)
  IOC_FALLING_EDGE: Edge detection on falling edge
  IOC_RISING_EDGE: Edge detection on rising edge
  IOC_BOTH_EDGES: Edge detection on both edges