88 lines
2.9 KiB
Plaintext
88 lines
2.9 KiB
Plaintext
Renesas RZ/A2 combined Pin and GPIO controller
|
|
|
|
The Renesas SoCs of the RZ/A2 series feature a combined Pin and GPIO controller.
|
|
Pin multiplexing and GPIO configuration is performed on a per-pin basis.
|
|
Each port features up to 8 pins, each of them configurable for GPIO
|
|
function (port mode) or in alternate function mode.
|
|
Up to 8 different alternate function modes exist for each single pin.
|
|
|
|
Pin controller node
|
|
-------------------
|
|
|
|
Required properties:
|
|
- compatible: shall be:
|
|
- "renesas,r7s9210-pinctrl": for RZ/A2M
|
|
- reg
|
|
Address base and length of the memory area where the pin controller
|
|
hardware is mapped to.
|
|
- gpio-controller
|
|
This pin controller also controls pins as GPIO
|
|
- #gpio-cells
|
|
Must be 2
|
|
- gpio-ranges
|
|
Expresses the total number of GPIO ports/pins in this SoC
|
|
|
|
Example: Pin controller node for RZ/A2M SoC (r7s9210)
|
|
|
|
pinctrl: pin-controller@fcffe000 {
|
|
compatible = "renesas,r7s9210-pinctrl";
|
|
reg = <0xfcffe000 0x1000>;
|
|
|
|
gpio-controller;
|
|
#gpio-cells = <2>;
|
|
gpio-ranges = <&pinctrl 0 0 176>;
|
|
};
|
|
|
|
Sub-nodes
|
|
---------
|
|
|
|
The child nodes of the pin controller designate pins to be used for
|
|
specific peripheral functions or as GPIO.
|
|
|
|
- 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.
|
|
The values for the pinmux properties are a combination of port name, pin
|
|
number and the desired function index. Use the RZA2_PINMUX macro located
|
|
in include/dt-bindings/pinctrl/r7s9210-pinctrl.h to easily define these.
|
|
For assigning GPIO pins, use the macro RZA2_PIN also in r7s9210-pinctrl.h
|
|
to express the desired port pin.
|
|
|
|
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.
|
|
Helper macros to ease assembling the pin index from its position
|
|
(port where it sits on and pin number) and alternate function identifier
|
|
are provided by the pin controller header file at:
|
|
<dt-bindings/pinctrl/r7s9210-pinctrl.h>
|
|
Integers values in "pinmux" argument list are assembled as:
|
|
((PORT * 8 + PIN) | MUX_FUNC << 16)
|
|
|
|
Example: Board specific pins configuration
|
|
|
|
&pinctrl {
|
|
/* Serial Console */
|
|
scif4_pins: serial4 {
|
|
pinmux = <RZA2_PINMUX(PORT9, 0, 4)>, /* TxD4 */
|
|
<RZA2_PINMUX(PORT9, 1, 4)>; /* RxD4 */
|
|
};
|
|
};
|
|
|
|
Example: Assigning a GPIO:
|
|
|
|
leds {
|
|
status = "okay";
|
|
compatible = "gpio-leds";
|
|
|
|
led0 {
|
|
/* P6_0 */
|
|
gpios = <&pinctrl RZA2_PIN(PORT6, 0) GPIO_ACTIVE_HIGH>;
|
|
};
|
|
};
|