# Copyright (c) 2022 Vaishnav Achath # SPDX-License-Identifier: Apache-2.0 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 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 = ; }; }; 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 */ }; }; compatible: "ti,cc13xx-cc26xx-pinctrl" include: base.yaml properties: reg: required: true child-binding: description: | This binding gives a base representation of the CC13XX/CC26XX pins configuration. include: - name: pincfg-node.yaml property-allowlist: - bias-disable - bias-pull-down - bias-pull-up - drive-open-drain - drive-open-source - drive-strength - input-enable - input-schmitt-enable properties: pinmux: required: true type: array description: | CC13XX/CC26XX pin's configuration (IO pin, IO function). drive-strength: enum: - 2 - 4 - 8 default: 2 description: | 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 ti,input-edge-detect: type: int default: 0 # no edge detection description: | 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