# 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 &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 = ; }; /* 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 = ; }; }; 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 ]