blob: dc0af310dc5586a4d7290524784c5a618a2dfb2e [file] [log] [blame]
# Copyright (c) 2022, Telink Semiconductor
# SPDX-License-Identifier: Apache-2.0
description: |
The Telink B91 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 TX to pin PB2 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.
*/
/* include pre-defined pins and functions for the SoC used by the board */
#include <dt-bindings/pinctrl/b91-pinctrl.h>
&pinctrl {
/* configuration for UART0 TX default state */
uart0_tx_pb2_default: uart0_tx_pb2_default {
/* configure PB2 as B91_FUNC_C */
pinmux = <B91_PINMUX_SET(B91_PORT_B, B91_PIN_2, B91_FUNC_C)>;
};
/* configuration for UART0 RX default state */
uart0_rx_pb3_default: uart0_rx_pb3_default {
/* configure PB2 as B91_FUNC_C */
pinmux = <B91_PINMUX_SET(B91_PORT_B, B91_PIN_3, B91_FUNC_C)>;
};
};
The 'uart0_tx_pb2_default' child node encodes the pin configurations
for a particular state of a device; in this case, the default
(that is, active) sate. You would specify the low-power configuration for
the same device in a separate child node.
A pin configuration can also specify pin properties such as the
'bias-pull-up' property. Here is a list of supported standard pin
properties:
- bias-disable
- bias-pull-down
- bias-pull-up
To link pin configurations 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_tx_pb2_default &uart0_rx_pb3_default>;
pinctrl-1 = <&uart0_tx_pb2_sleep &uart0_rx_pb3_sleep>;
pinctrl-names = "default", "sleep";
};
compatible: "telink,b91-pinctrl"
include: base.yaml
properties:
reg:
required: true
pad-mul-sel:
type: int
required: true
description: |
PinMux pad_mul_sel register value. Pin functions depend on it.
For instance:
Function C of PB2 configs the pin to UART0_TX if pad_mul_sel is set to <1>.
But, the same function configs the same pin to DAC_I_DAT2_I if pad_mul_sel is set to <0>.
Refer to the Telink TLSR9 specs to get more information about pins configuration.
child-binding:
description: |
This binding gives a base representation of the Telink B91 pins configration.
include:
- name: pincfg-node.yaml
property-allowlist:
- bias-disable
- bias-pull-down
- bias-pull-up
properties:
pinmux:
required: true
type: int
description: |
Telink B91 pin's configuration (port, pin and function).