111 lines
3.0 KiB
Plaintext
111 lines
3.0 KiB
Plaintext
*ST pin controller.
|
|
|
|
Each multi-function pin is controlled, driven and routed through the
|
|
PIO multiplexing block. Each pin supports GPIO functionality (ALT0)
|
|
and multiple alternate functions(ALT1 - ALTx) that directly connect
|
|
the pin to different hardware blocks.
|
|
|
|
When a pin is in GPIO mode, Output Enable (OE), Open Drain(OD), and
|
|
Pull Up (PU) are driven by the related PIO block.
|
|
|
|
ST pinctrl driver controls PIO multiplexing block and also interacts with
|
|
gpio driver to configure a pin.
|
|
|
|
Required properties: (PIO multiplexing block)
|
|
- compatible : should be "st,<SOC>-<pio-block>-pinctrl"
|
|
like st,stih415-sbc-pinctrl, st,stih415-front-pinctrl and so on.
|
|
- gpio-controller : Indicates this device is a GPIO controller
|
|
- #gpio-cells : Should be one. The first cell is the pin number.
|
|
- st,retime-pin-mask : Should be mask to specify which pins can be retimed.
|
|
If the property is not present, it is assumed that all the pins in the
|
|
bank are capable of retiming. Retiming is mainly used to improve the
|
|
IO timing margins of external synchronous interfaces.
|
|
- st,bank-name : Should be a name string for this bank as
|
|
specified in datasheet.
|
|
- st,syscfg : Should be a phandle of the syscfg node.
|
|
|
|
Example:
|
|
pin-controller-sbc {
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
compatible = "st,stih415-sbc-pinctrl";
|
|
st,syscfg = <&syscfg_sbc>;
|
|
ranges = <0 0xfe610000 0x5000>;
|
|
PIO0: gpio@fe610000 {
|
|
gpio-controller;
|
|
#gpio-cells = <1>;
|
|
reg = <0 0x100>;
|
|
st,bank-name = "PIO0";
|
|
};
|
|
...
|
|
pin-functions nodes follow...
|
|
};
|
|
|
|
|
|
Contents of function subnode node:
|
|
----------------------
|
|
Required properties for pin configuration node:
|
|
- st,pins : Child node with list of pins with configuration.
|
|
|
|
Below is the format of how each pin conf should look like.
|
|
|
|
<bank offset mux mode rt_type rt_delay rt_clk>
|
|
|
|
Every PIO is represented with 4-7 parameters depending on retime configuration.
|
|
Each parameter is explained as below.
|
|
|
|
-bank : Should be bank phandle to which this PIO belongs.
|
|
-offset : Offset in the PIO bank.
|
|
-mux : Should be alternate function number associated this pin.
|
|
Use same numbers from datasheet.
|
|
-mode :pin configuration is selected from one of the below values.
|
|
IN
|
|
IN_PU
|
|
OUT
|
|
BIDIR
|
|
BIDIR_PU
|
|
|
|
-rt_type Retiming Configuration for the pin.
|
|
Possible retime configuration are:
|
|
|
|
------- -------------
|
|
value args
|
|
------- -------------
|
|
NICLK <delay> <clk>
|
|
ICLK_IO <delay> <clk>
|
|
BYPASS <delay>
|
|
DE_IO <delay> <clk>
|
|
SE_ICLK_IO <delay> <clk>
|
|
SE_NICLK_IO <delay> <clk>
|
|
|
|
- delay is retime delay in pico seconds as mentioned in data sheet.
|
|
|
|
- rt_clk :clk to be use for retime.
|
|
Possible values are:
|
|
CLK_A
|
|
CLK_B
|
|
CLK_C
|
|
CLK_D
|
|
|
|
Example of mmcclk pin which is a bi-direction pull pu with retime config
|
|
as non inverted clock retimed with CLK_B and delay of 0 pico seconds:
|
|
|
|
pin-controller {
|
|
...
|
|
mmc0 {
|
|
pinctrl_mmc: mmc {
|
|
st,pins {
|
|
mmcclk = <&PIO13 4 ALT4 BIDIR_PU NICLK 0 CLK_B>;
|
|
...
|
|
};
|
|
};
|
|
...
|
|
};
|
|
};
|
|
|
|
sdhci0:sdhci@fe810000{
|
|
...
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_mmc>;
|
|
};
|