137 lines
3.9 KiB
YAML
137 lines
3.9 KiB
YAML
# 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 <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 */
|
|
};
|
|
};
|
|
|
|
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 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
|