diff options
author | James Hogan <james.hogan@imgtec.com> | 2013-06-20 05:26:29 -0400 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2013-06-24 11:21:38 -0400 |
commit | b58f0273f0858214da2ee4e1675221e56f7712ec (patch) | |
tree | 4b271facfd342bde65323cf0d37cf5ca6841b728 /Documentation/devicetree/bindings/pinctrl | |
parent | d5025f9f535108ba44c7f00573a2a34c18a3ea2b (diff) |
pinctrl-tz1090-pdc: add TZ1090 PDC pinctrl driver
Add a pin control driver for the TZ1090's low power pins via the
powerdown controller SOC_GPIO_CONTROL registers.
These pins have individually controlled pull-up, and group controlled
schmitt, slew-rate, drive-strength, and power-on-start (pos).
The pdc_gpio0 and pdc_gpio1 pins can also be muxed onto the
ir_mod_stable_out and ir_mod_power_out functions respectively. If no
function is set they remain in GPIO mode. These muxes can be overridden
by requesting them as GPIOs.
Signed-off-by: James Hogan <james.hogan@imgtec.com>
Cc: Grant Likely <grant.likely@linaro.org>
Cc: Rob Herring <rob.herring@calxeda.com>
Cc: Rob Landley <rob@landley.net>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: linux-doc@vger.kernel.org
Cc: devicetree-discuss@lists.ozlabs.org
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'Documentation/devicetree/bindings/pinctrl')
-rw-r--r-- | Documentation/devicetree/bindings/pinctrl/img,tz1090-pdc-pinctrl.txt | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/Documentation/devicetree/bindings/pinctrl/img,tz1090-pdc-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/img,tz1090-pdc-pinctrl.txt new file mode 100644 index 000000000000..9f7a85bb8fca --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/img,tz1090-pdc-pinctrl.txt | |||
@@ -0,0 +1,130 @@ | |||
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 | |||
12 | TZ1090-PDC's pin configuration nodes act as a container for an abitrary number | ||
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 | ||
47 | - slew-rate: Integer, control slew rate of pins. | ||
48 | 0: slow (half frequency) | ||
49 | 1: fast | ||
50 | - drive-strength: Integer, control drive strength of pins in mA. | ||
51 | 2: 2mA | ||
52 | 4: 4mA | ||
53 | 8: 8mA | ||
54 | 12: 12mA | ||
55 | - low-power-enable: Flag, power-on-start weak pull-down for invalid power. | ||
56 | - low-power-disable: Flag, power-on-start weak pull-down disabled. | ||
57 | |||
58 | Note that many of these properties are only valid for certain specific pins | ||
59 | or groups. See the TZ1090 TRM for complete details regarding which groups | ||
60 | support which functionality. The Linux pinctrl driver may also be a useful | ||
61 | reference. | ||
62 | |||
63 | Valid values for pin and group names are: | ||
64 | |||
65 | pins: | ||
66 | |||
67 | These all support bias-high-impediance, bias-pull-up, bias-pull-down, and | ||
68 | bias-bus-hold (which can also be provided to any of the groups below to set | ||
69 | it for all gpio pins in that group). | ||
70 | |||
71 | gpio0, gpio1, sys_wake0, sys_wake1, sys_wake2, ir_data, ext_power. | ||
72 | |||
73 | mux groups: | ||
74 | |||
75 | These all support function. | ||
76 | |||
77 | gpio0 | ||
78 | pins: gpio0. | ||
79 | function: ir_mod_stable_out. | ||
80 | gpio1 | ||
81 | pins: gpio1. | ||
82 | function: ir_mod_power_out. | ||
83 | |||
84 | drive groups: | ||
85 | |||
86 | These support input-schmitt-enable, input-schmitt-disable, slew-rate, | ||
87 | drive-strength, low-power-enable, and low-power-disable. | ||
88 | |||
89 | pdc | ||
90 | pins: gpio0, gpio1, sys_wake0, sys_wake1, sys_wake2, ir_data, | ||
91 | ext_power. | ||
92 | |||
93 | Example: | ||
94 | |||
95 | pinctrl_pdc: pinctrl@02006500 { | ||
96 | #gpio-range-cells = <3>; | ||
97 | compatible = "img,tz1090-pdc-pinctrl"; | ||
98 | reg = <0x02006500 0x100>; | ||
99 | }; | ||
100 | |||
101 | Example board file extracts: | ||
102 | |||
103 | &pinctrl_pdc { | ||
104 | pinctrl-names = "default"; | ||
105 | pinctrl-0 = <&syswake_default>; | ||
106 | |||
107 | syswake_default: syswakes { | ||
108 | syswake_cfg { | ||
109 | tz1090,pins = "sys_wake0", | ||
110 | "sys_wake1", | ||
111 | "sys_wake2"; | ||
112 | pull-up; | ||
113 | }; | ||
114 | }; | ||
115 | irmod_default: irmod { | ||
116 | gpio0_cfg { | ||
117 | tz1090,pins = "gpio0"; | ||
118 | tz1090,function = "ir_mod_stable_out"; | ||
119 | }; | ||
120 | gpio1_cfg { | ||
121 | tz1090,pins = "gpio1"; | ||
122 | tz1090,function = "ir_mod_power_out"; | ||
123 | }; | ||
124 | }; | ||
125 | }; | ||
126 | |||
127 | ir: ir@02006200 { | ||
128 | pinctrl-names = "default"; | ||
129 | pinctrl-0 = <&irmod_default>; | ||
130 | }; | ||