mirror of
https://github.com/torvalds/linux.git
synced 2024-12-28 13:51:44 +00:00
154 lines
4.6 KiB
Plaintext
154 lines
4.6 KiB
Plaintext
|
Renesas RZ/N1 SoC Pinctrl node description.
|
||
|
|
||
|
Pin controller node
|
||
|
-------------------
|
||
|
Required properties:
|
||
|
- compatible: SoC-specific compatible string "renesas,<soc-specific>-pinctrl"
|
||
|
followed by "renesas,rzn1-pinctrl" as fallback. The SoC-specific compatible
|
||
|
strings must be one of:
|
||
|
"renesas,r9a06g032-pinctrl" for RZ/N1D
|
||
|
"renesas,r9a06g033-pinctrl" for RZ/N1S
|
||
|
- reg: Address base and length of the memory area where the pin controller
|
||
|
hardware is mapped to.
|
||
|
- clocks: phandle for the clock, see the description of clock-names below.
|
||
|
- clock-names: Contains the name of the clock:
|
||
|
"bus", the bus clock, sometimes described as pclk, for register accesses.
|
||
|
|
||
|
Example:
|
||
|
pinctrl: pin-controller@40067000 {
|
||
|
compatible = "renesas,r9a06g032-pinctrl", "renesas,rzn1-pinctrl";
|
||
|
reg = <0x40067000 0x1000>, <0x51000000 0x480>;
|
||
|
clocks = <&sysctrl R9A06G032_HCLK_PINCONFIG>;
|
||
|
clock-names = "bus";
|
||
|
};
|
||
|
|
||
|
Sub-nodes
|
||
|
---------
|
||
|
|
||
|
The child nodes of the pin controller node describe a pin multiplexing
|
||
|
function.
|
||
|
|
||
|
- Pin multiplexing sub-nodes:
|
||
|
A pin multiplexing sub-node describes how to configure a set of
|
||
|
(or a single) pin in some desired alternate function mode.
|
||
|
A single sub-node may define several pin configurations.
|
||
|
Please refer to pinctrl-bindings.txt to get to know more on generic
|
||
|
pin properties usage.
|
||
|
|
||
|
The allowed generic formats for a pin multiplexing sub-node are the
|
||
|
following ones:
|
||
|
|
||
|
node-1 {
|
||
|
pinmux = <PIN_ID_AND_MUX>, <PIN_ID_AND_MUX>, ... ;
|
||
|
GENERIC_PINCONFIG;
|
||
|
};
|
||
|
|
||
|
node-2 {
|
||
|
sub-node-1 {
|
||
|
pinmux = <PIN_ID_AND_MUX>, <PIN_ID_AND_MUX>, ... ;
|
||
|
GENERIC_PINCONFIG;
|
||
|
};
|
||
|
|
||
|
sub-node-2 {
|
||
|
pinmux = <PIN_ID_AND_MUX>, <PIN_ID_AND_MUX>, ... ;
|
||
|
GENERIC_PINCONFIG;
|
||
|
};
|
||
|
|
||
|
...
|
||
|
|
||
|
sub-node-n {
|
||
|
pinmux = <PIN_ID_AND_MUX>, <PIN_ID_AND_MUX>, ... ;
|
||
|
GENERIC_PINCONFIG;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
node-3 {
|
||
|
pinmux = <PIN_ID_AND_MUX>, <PIN_ID_AND_MUX>, ... ;
|
||
|
GENERIC_PINCONFIG;
|
||
|
|
||
|
sub-node-1 {
|
||
|
pinmux = <PIN_ID_AND_MUX>, <PIN_ID_AND_MUX>, ... ;
|
||
|
GENERIC_PINCONFIG;
|
||
|
};
|
||
|
|
||
|
...
|
||
|
|
||
|
sub-node-n {
|
||
|
pinmux = <PIN_ID_AND_MUX>, <PIN_ID_AND_MUX>, ... ;
|
||
|
GENERIC_PINCONFIG;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
Use the latter two formats when pins part of the same logical group need to
|
||
|
have different generic pin configuration flags applied. Note that the generic
|
||
|
pinconfig in node-3 does not apply to the sub-nodes.
|
||
|
|
||
|
Client sub-nodes shall refer to pin multiplexing sub-nodes using the phandle
|
||
|
of the most external one.
|
||
|
|
||
|
Eg.
|
||
|
|
||
|
client-1 {
|
||
|
...
|
||
|
pinctrl-0 = <&node-1>;
|
||
|
...
|
||
|
};
|
||
|
|
||
|
client-2 {
|
||
|
...
|
||
|
pinctrl-0 = <&node-2>;
|
||
|
...
|
||
|
};
|
||
|
|
||
|
Required properties:
|
||
|
- pinmux:
|
||
|
integer array representing pin number and pin multiplexing configuration.
|
||
|
When a pin has to be configured in alternate function mode, use this
|
||
|
property to identify the pin by its global index, and provide its
|
||
|
alternate function configuration number along with it.
|
||
|
When multiple pins are required to be configured as part of the same
|
||
|
alternate function they shall be specified as members of the same
|
||
|
argument list of a single "pinmux" property.
|
||
|
Integers values in the "pinmux" argument list are assembled as:
|
||
|
(PIN | MUX_FUNC << 8)
|
||
|
where PIN directly corresponds to the pl_gpio pin number and MUX_FUNC is
|
||
|
one of the alternate function identifiers defined in:
|
||
|
<include/dt-bindings/pinctrl/rzn1-pinctrl.h>
|
||
|
These identifiers collapse the IO Multiplex Configuration Level 1 and
|
||
|
Level 2 numbers that are detailed in the hardware reference manual into a
|
||
|
single number. The identifiers for Level 2 are simply offset by 10.
|
||
|
Additional identifiers are provided to specify the MDIO source peripheral.
|
||
|
|
||
|
Optional generic pinconf properties:
|
||
|
- bias-disable - disable any pin bias
|
||
|
- bias-pull-up - pull up the pin with 50 KOhm
|
||
|
- bias-pull-down - pull down the pin with 50 KOhm
|
||
|
- bias-high-impedance - high impedance mode
|
||
|
- drive-strength - sink or source at most 4, 6, 8 or 12 mA
|
||
|
|
||
|
Example:
|
||
|
A serial communication interface with a TX output pin and an RX input pin.
|
||
|
|
||
|
&pinctrl {
|
||
|
pins_uart0: pins_uart0 {
|
||
|
pinmux = <
|
||
|
RZN1_PINMUX(103, RZN1_FUNC_UART0_I) /* UART0_TXD */
|
||
|
RZN1_PINMUX(104, RZN1_FUNC_UART0_I) /* UART0_RXD */
|
||
|
>;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
Example 2:
|
||
|
Here we set the pull up on the RXD pin of the UART.
|
||
|
|
||
|
&pinctrl {
|
||
|
pins_uart0: pins_uart0 {
|
||
|
pinmux = <RZN1_PINMUX(103, RZN1_FUNC_UART0_I)>; /* TXD */
|
||
|
|
||
|
pins_uart6_rx {
|
||
|
pinmux = <RZN1_PINMUX(104, RZN1_FUNC_UART0_I)>; /* RXD */
|
||
|
bias-pull-up;
|
||
|
};
|
||
|
};
|
||
|
};
|