James Hogan | b58f027 | 2013-06-20 10:26:29 +0100 | [diff] [blame] | 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 | |
Soren Brinkmann | a0e27f5 | 2014-11-06 07:38:51 -0800 | [diff] [blame^] | 12 | TZ1090-PDC's pin configuration nodes act as a container for an arbitrary number |
James Hogan | b58f027 | 2013-06-20 10:26:29 +0100 | [diff] [blame] | 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 |
James Hogan | b58f027 | 2013-06-20 10:26:29 +0100 | [diff] [blame] | 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 | |
Heiko Stübner | a7b3bf5 | 2013-06-25 14:56:36 +0200 | [diff] [blame] | 83 | These support input-schmitt-enable, input-schmitt-disable, |
James Hogan | b58f027 | 2013-06-20 10:26:29 +0100 | [diff] [blame] | 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 | }; |