mirror of https://gitee.com/openkylin/linux.git
85 lines
2.8 KiB
Plaintext
85 lines
2.8 KiB
Plaintext
* ZTE ZX Pin Controller
|
|
|
|
The pin controller on ZTE ZX platforms is kinda of hybrid. It consists of
|
|
a main controller and an auxiliary one. For example, on ZX296718 SoC, the
|
|
main controller is TOP_PMM and the auxiliary one is AON_IOCFG. Both
|
|
controllers work together to control pin multiplexing and configuration in
|
|
the way illustrated as below.
|
|
|
|
|
|
GMII_RXD3 ---+
|
|
|
|
|
DVI1_HS ---+----------------------------- GMII_RXD3 (TOP pin)
|
|
|
|
|
BGPIO16 ---+ ^
|
|
| pinconf
|
|
^ |
|
|
| pinmux |
|
|
| |
|
|
|
|
TOP_PMM (main) AON_IOCFG (aux)
|
|
|
|
| | |
|
|
| pinmux | |
|
|
| pinmux v |
|
|
v | pinconf
|
|
KEY_ROW2 ---+ v
|
|
PORT1_LCD_TE ---+ |
|
|
| AGPIO10 ---+------ KEY_ROW2 (AON pin)
|
|
I2S0_DOUT3 ---+ |
|
|
|-----------------------+
|
|
PWM_OUT3 ---+
|
|
|
|
|
VGA_VS1 ---+
|
|
|
|
|
|
For most of pins like GMII_RXD3 in the figure, the pinmux function is
|
|
controlled by TOP_PMM block only, and this type of pins are meant by term
|
|
'TOP pins'. For pins like KEY_ROW2, the pinmux is controlled by both
|
|
TOP_PMM and AON_IOCFG blocks, as the available multiplexing functions for
|
|
the pin spread in both controllers. This type of pins are called 'AON pins'.
|
|
Though pinmux implementation is quite different, pinconf is same for both
|
|
types of pins. Both are controlled by auxiliary controller, i.e. AON_IOCFG
|
|
on ZX296718.
|
|
|
|
Required properties:
|
|
- compatible: should be "zte,zx296718-pmm".
|
|
- reg: the register physical address and length.
|
|
- zte,auxiliary-controller: phandle to the auxiliary pin controller which
|
|
implements pinmux for AON pins and pinconf for all pins.
|
|
|
|
The following pin configuration are supported. Please refer to
|
|
pinctrl-bindings.txt in this directory for more details of the common
|
|
pinctrl bindings used by client devices.
|
|
|
|
- bias-pull-up
|
|
- bias-pull-down
|
|
- drive-strength
|
|
- input-enable
|
|
- slew-rate
|
|
|
|
Examples:
|
|
|
|
iocfg: pin-controller@119000 {
|
|
compatible = "zte,zx296718-iocfg";
|
|
reg = <0x119000 0x1000>;
|
|
};
|
|
|
|
pmm: pin-controller@1462000 {
|
|
compatible = "zte,zx296718-pmm";
|
|
reg = <0x1462000 0x1000>;
|
|
zte,auxiliary-controller = <&iocfg>;
|
|
};
|
|
|
|
&pmm {
|
|
vga_pins: vga {
|
|
pins = "KEY_COL1", "KEY_COL2", "KEY_ROW1", "KEY_ROW2";
|
|
function = "VGA";
|
|
};
|
|
};
|
|
|
|
&vga {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&vga_pins>;
|
|
};
|