Commit | Line | Data |
---|---|---|
b58f0273 JH |
1 | ImgTec TZ1090 PDC pin controller |
2 | ||
3 | Required properties: | |
4 | - compatible: "img,tz1090-pdc-pinctrl" | |
5 | - reg: Should contain the register physical address and length of the | |
6 | SOC_GPIO_CONTROL registers in the PDC register region. | |
7 | ||
8 | Please refer to pinctrl-bindings.txt in this directory for details of the | |
9 | common pinctrl bindings used by client devices, including the meaning of the | |
10 | phrase "pin configuration node". | |
11 | ||
a0e27f51 | 12 | TZ1090-PDC's pin configuration nodes act as a container for an arbitrary number |
b58f0273 JH |
13 | of subnodes. Each of these subnodes represents some desired configuration for a |
14 | pin, a group, or a list of pins or groups. This configuration can include the | |
15 | mux function to select on those pin(s)/group(s), and various pin configuration | |
16 | parameters, such as pull-up, drive strength, etc. | |
17 | ||
18 | The name of each subnode is not important; all subnodes should be enumerated | |
19 | and processed purely based on their content. | |
20 | ||
21 | Each subnode only affects those parameters that are explicitly listed. In | |
22 | other words, a subnode that lists a mux function but no pin configuration | |
23 | parameters implies no information about any pin configuration parameters. | |
24 | Similarly, a pin subnode that describes a pullup parameter implies no | |
25 | information about e.g. the mux function. For this reason, even seemingly boolean | |
26 | values are actually tristates in this binding: unspecified, off, or on. | |
27 | Unspecified is represented as an absent property, and off/on are represented as | |
28 | integer values 0 and 1. | |
29 | ||
30 | Required subnode-properties: | |
31 | - tz1090,pins : An array of strings. Each string contains the name of a pin or | |
32 | group. Valid values for these names are listed below. | |
33 | ||
34 | Optional subnode-properties: | |
35 | - tz1090,function: A string containing the name of the function to mux to the | |
36 | pin or group. Valid values for function names are listed below, including | |
37 | which pingroups can be muxed to them. | |
38 | - supported generic pinconfig properties (for further details see | |
39 | Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt): | |
40 | - bias-disable | |
41 | - bias-high-impedance | |
42 | - bias-bus-hold | |
43 | - bias-pull-up | |
44 | - bias-pull-down | |
45 | - input-schmitt-enable | |
46 | - input-schmitt-disable | |
b58f0273 JH |
47 | - drive-strength: Integer, control drive strength of pins in mA. |
48 | 2: 2mA | |
49 | 4: 4mA | |
50 | 8: 8mA | |
51 | 12: 12mA | |
52 | - low-power-enable: Flag, power-on-start weak pull-down for invalid power. | |
53 | - low-power-disable: Flag, power-on-start weak pull-down disabled. | |
54 | ||
55 | Note that many of these properties are only valid for certain specific pins | |
56 | or groups. See the TZ1090 TRM for complete details regarding which groups | |
57 | support which functionality. The Linux pinctrl driver may also be a useful | |
58 | reference. | |
59 | ||
60 | Valid values for pin and group names are: | |
61 | ||
62 | pins: | |
63 | ||
64 | These all support bias-high-impediance, bias-pull-up, bias-pull-down, and | |
65 | bias-bus-hold (which can also be provided to any of the groups below to set | |
66 | it for all gpio pins in that group). | |
67 | ||
68 | gpio0, gpio1, sys_wake0, sys_wake1, sys_wake2, ir_data, ext_power. | |
69 | ||
70 | mux groups: | |
71 | ||
72 | These all support function. | |
73 | ||
74 | gpio0 | |
75 | pins: gpio0. | |
76 | function: ir_mod_stable_out. | |
77 | gpio1 | |
78 | pins: gpio1. | |
79 | function: ir_mod_power_out. | |
80 | ||
81 | drive groups: | |
82 | ||
a7b3bf55 | 83 | These support input-schmitt-enable, input-schmitt-disable, |
b58f0273 JH |
84 | drive-strength, low-power-enable, and low-power-disable. |
85 | ||
86 | pdc | |
87 | pins: gpio0, gpio1, sys_wake0, sys_wake1, sys_wake2, ir_data, | |
88 | ext_power. | |
89 | ||
90 | Example: | |
91 | ||
92 | pinctrl_pdc: pinctrl@02006500 { | |
93 | #gpio-range-cells = <3>; | |
94 | compatible = "img,tz1090-pdc-pinctrl"; | |
95 | reg = <0x02006500 0x100>; | |
96 | }; | |
97 | ||
98 | Example board file extracts: | |
99 | ||
100 | &pinctrl_pdc { | |
101 | pinctrl-names = "default"; | |
102 | pinctrl-0 = <&syswake_default>; | |
103 | ||
104 | syswake_default: syswakes { | |
105 | syswake_cfg { | |
106 | tz1090,pins = "sys_wake0", | |
107 | "sys_wake1", | |
108 | "sys_wake2"; | |
109 | pull-up; | |
110 | }; | |
111 | }; | |
112 | irmod_default: irmod { | |
113 | gpio0_cfg { | |
114 | tz1090,pins = "gpio0"; | |
115 | tz1090,function = "ir_mod_stable_out"; | |
116 | }; | |
117 | gpio1_cfg { | |
118 | tz1090,pins = "gpio1"; | |
119 | tz1090,function = "ir_mod_power_out"; | |
120 | }; | |
121 | }; | |
122 | }; | |
123 | ||
124 | ir: ir@02006200 { | |
125 | pinctrl-names = "default"; | |
126 | pinctrl-0 = <&irmod_default>; | |
127 | }; |