2022-07-11 19:35:49 +08:00
|
|
|
# Copyright (c) 2022 Renesas Electronics Corporation
|
|
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
|
|
|
description: |
|
|
|
|
The SmartBond pin controller is a singleton node responsible for controlling
|
|
|
|
pin function selection and pin properties, such as routing a UART RX to pin
|
|
|
|
P1.8 and enabling the pullup resistor on that 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 definitions and utility macros for the SoC used by the board */
|
|
|
|
#include <dt-bindings/pinctrl/smartbond-pinctrl.h>
|
|
|
|
|
|
|
|
&pinctrl {
|
|
|
|
/* configuration for uart device, default state */
|
|
|
|
uart_default: uart_default {
|
|
|
|
/* group 1 */
|
|
|
|
group1 {
|
|
|
|
/* route UART TX to P0.9 */
|
|
|
|
pinmux = <SMARTBOND_PINMUX(UART_TX, 0, 9)>;
|
|
|
|
};
|
|
|
|
/* group 2 */
|
|
|
|
group2 {
|
|
|
|
/* route UART RX to P0.8 and enable pull-up */
|
|
|
|
pinmux = <SMARTBOND_PINMUX(UART_RX, 0, 8)>;
|
|
|
|
bias-pull-up;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
The 'uart0_default' child node encodes the pin configurations for a
|
|
|
|
particular state of a device; in this case, the default (that is, active)
|
|
|
|
state.
|
|
|
|
|
|
|
|
As shown, pin configurations are organized in groups within each child node.
|
|
|
|
Each group can specify a list of pin function selections in the 'pinmux'
|
|
|
|
property. Note that 'pinmux' property is an array so you can configure multiple
|
|
|
|
pins at once there. The SMARTBOND_PINMUX macro is used to create pinmux value.
|
|
|
|
|
|
|
|
A group can also specify shared pin properties common to all the specified
|
|
|
|
pins, such as the 'bias-pull-up' property in group 2. Here is a list of
|
|
|
|
supported standard pin properties:
|
|
|
|
|
|
|
|
- bias-pull-up: Enable pull-up resistor.
|
|
|
|
- bias-pull-down: Enable pull-down resistor.
|
|
|
|
|
|
|
|
Note that bias options are mutually exclusive.
|
|
|
|
|
|
|
|
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"
|
|
|
|
|
|
|
|
&uart {
|
|
|
|
pinctrl-0 = <&uart_default>;
|
|
|
|
pinctrl-names = "default";
|
|
|
|
};
|
|
|
|
|
|
|
|
compatible: "renesas,smartbond-pinctrl"
|
|
|
|
|
2022-11-14 23:37:42 +08:00
|
|
|
include: base.yaml
|
2022-07-11 19:35:49 +08:00
|
|
|
|
|
|
|
child-binding:
|
|
|
|
description: |
|
|
|
|
Definitions for a pinctrl state.
|
|
|
|
child-binding:
|
2022-11-14 23:37:42 +08:00
|
|
|
|
|
|
|
include:
|
|
|
|
- name: pincfg-node.yaml
|
|
|
|
property-allowlist:
|
|
|
|
- bias-pull-down
|
|
|
|
- bias-pull-up
|
2023-04-18 21:58:43 +08:00
|
|
|
- output-enable
|
|
|
|
- input-enable
|
2022-11-14 23:37:42 +08:00
|
|
|
|
2022-07-11 19:35:49 +08:00
|
|
|
properties:
|
|
|
|
pinmux:
|
|
|
|
required: true
|
|
|
|
type: array
|
|
|
|
description: |
|
|
|
|
An array of pins sharing the same group properties. The pins should
|
|
|
|
be defined using the SMARTBOND_PINMUX utility macro that encodes the port,
|
|
|
|
pin and function.
|