blob: f88e37822d2eecc74a7eb24f4c48a7b6525666c9 [file] [log] [blame]
# Copyright (c) 2021 IoT.bzh
# SPDX-License-Identifier: Apache-2.0
description: |
Renesas R-Car Pin Function Controller node
This binding gives a base representation of the R-Car pins configuration.
The R-Car pin controller is a singleton node responsible for controlling
pin function selection and pin properties. For example, you can use this
node to route CAN0 TX A to pin 'RD', and enable pull-up resistor as well
as driving ability.
The node has the 'pfc' node label set in your SoC's devicetree, so you can
modify it like this:
&pfc {
/* your modifications go here */
};
All device pin configurations should be placed in child nodes of the
'pfc' 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/renesas/pinctrl-r8a77951.h>
&pfc {
/* configuration for can0 data a tx default state */
can0_data_a_tx_default: can0_data_a_tx_default {
/* configure PIN_RD as FUNC_CAN0_TX_A */
pin = <PIN_RD FUNC_CAN0_TX_A>;
};
/* configuration for can0 data a rx default state */
can0_data_a_rx_default: can0_data_a_rx_default {
/* configure PIN_RD_WR as FUNC_CAN0_RX_A */
pin = <PIN_RD_WR FUNC_CAN0_RX_A>;
};
};
The 'can0_data_a_tx_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
- drive-strength
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"
&can0 {
pinctrl-0 = <&can0_data_a_tx_default &can0_data_a_rx_default>;
pinctrl-1 = <&can0_data_a_tx_sleep &can0_data_a_rx_sleep>;
pinctrl-names = "default", "sleep";
};
compatible: "renesas,rcar-pfc"
include:
- name: base.yaml
- name: pincfg-node.yaml
child-binding:
property-allowlist:
- bias-disable
- bias-pull-down
- bias-pull-up
- drive-strength
properties:
reg:
required: true
child-binding:
description: |
This binding gives a base representation of the R-Car pins configuration.
properties:
pin:
type: array
required: true
description: |
The array is expected to have up to two elements. The first element is
the pin the second optional element is the pin function.
drive-strength:
enum: [ 3, 6, 9, 12, 15, 18, 21, 24 ]