162306a36Sopenharmony_ciST Ericsson Nomadik pinmux controller
262306a36Sopenharmony_ci
362306a36Sopenharmony_ciRequired properties:
462306a36Sopenharmony_ci- compatible: "stericsson,db8500-pinctrl", "stericsson,db8540-pinctrl",
562306a36Sopenharmony_ci              "stericsson,stn8815-pinctrl"
662306a36Sopenharmony_ci- nomadik-gpio-chips: array of phandles to the corresponding GPIO chips
762306a36Sopenharmony_ci              (these have the register ranges used by the pin controller).
862306a36Sopenharmony_ci- prcm: phandle to the PRCMU managing the back end of this pin controller
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ciPlease refer to pinctrl-bindings.txt in this directory for details of the
1162306a36Sopenharmony_cicommon pinctrl bindings used by client devices, including the meaning of the
1262306a36Sopenharmony_ciphrase "pin configuration node".
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ciST Ericsson's pin configuration nodes act as a container for an arbitrary number of
1562306a36Sopenharmony_cisubnodes. Each of these subnodes represents some desired configuration for a
1662306a36Sopenharmony_cipin, a group, or a list of pins or groups. This configuration can include the
1762306a36Sopenharmony_cimux function to select on those pin(s)/group(s), and various pin configuration
1862306a36Sopenharmony_ciparameters, such as input, output, pull up, pull down...
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ciThe name of each subnode is not important; all subnodes should be enumerated
2162306a36Sopenharmony_ciand processed purely based on their content. The subnodes use the generic
2262306a36Sopenharmony_cipin multiplexing node layout from the standard pin control bindings
2362306a36Sopenharmony_ci(see pinctrl-bindings.txt):
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ciRequired pin multiplexing subnode properties:
2662306a36Sopenharmony_ci- function: A string containing the name of the function to mux to the
2762306a36Sopenharmony_ci  pin or group.
2862306a36Sopenharmony_ci- groups : An array of strings. Each string contains the name of a pin
2962306a36Sopenharmony_ci  group that will be combined with the function to form a multiplexing
3062306a36Sopenharmony_ci  set-up.
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ciRequired pin configuration subnode properties:
3362306a36Sopenharmony_ci- pins: A string array describing the pins affected by the configuration
3462306a36Sopenharmony_ci  in the node.
3562306a36Sopenharmony_ci- ste,config: Handle of pin configuration node
3662306a36Sopenharmony_ci  (e.g. ste,config = <&slpm_in_wkup_pdis>)
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci- ste,input : <0/1/2>
3962306a36Sopenharmony_ci	0: input with no pull
4062306a36Sopenharmony_ci	1: input with pull up,
4162306a36Sopenharmony_ci	2: input with pull down,
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci- ste,output: <0/1/2>
4462306a36Sopenharmony_ci	0: output low,
4562306a36Sopenharmony_ci	1: output high,
4662306a36Sopenharmony_ci	2: output (value is not specified).
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci- ste,sleep: <0/1>
4962306a36Sopenharmony_ci	0: sleep mode disable,
5062306a36Sopenharmony_ci	1: sleep mode enable.
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci- ste,sleep-input: <0/1/2/3>
5362306a36Sopenharmony_ci	0: sleep input with no pull,
5462306a36Sopenharmony_ci	1: sleep input with pull up,
5562306a36Sopenharmony_ci	2: sleep input with pull down.
5662306a36Sopenharmony_ci	3: sleep input and keep last input configuration (no pull, pull up or pull down).
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ci- ste,sleep-output: <0/1/2>
5962306a36Sopenharmony_ci	0: sleep output low,
6062306a36Sopenharmony_ci	1: sleep output high,
6162306a36Sopenharmony_ci	2: sleep output (value is not specified).
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci- ste,sleep-gpio: <0/1>
6462306a36Sopenharmony_ci	0: disable sleep gpio mode,
6562306a36Sopenharmony_ci	1: enable sleep gpio mode.
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci- ste,sleep-wakeup: <0/1>
6862306a36Sopenharmony_ci	0: wake-up detection enabled,
6962306a36Sopenharmony_ci	1: wake-up detection disabled.
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ci- ste,sleep-pull-disable: <0/1>
7262306a36Sopenharmony_ci	0: GPIO pull-up or pull-down resistor is enabled, when pin is an input,
7362306a36Sopenharmony_ci	1: GPIO pull-up and pull-down resistor are disabled.
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ciExample board file extract:
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ci	pinctrl@80157000 {
7862306a36Sopenharmony_ci		compatible = "stericsson,db8500-pinctrl";
7962306a36Sopenharmony_ci		nomadik-gpio-chips = <&gpio0>, <&gpio1>, <&gpio2>, <&gpio3>;
8062306a36Sopenharmony_ci		prcm = <&prcmu>;
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ci		pinctrl-names = "default";
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ci		slpm_in_wkup_pdis: slpm_in_wkup_pdis {
8562306a36Sopenharmony_ci			ste,sleep = <1>;
8662306a36Sopenharmony_ci			ste,sleep-input = <3>;
8762306a36Sopenharmony_ci			ste,sleep-wakeup = <1>;
8862306a36Sopenharmony_ci			ste,sleep-pull-disable = <0>;
8962306a36Sopenharmony_ci		};
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_ci		slpm_out_hi_wkup_pdis: slpm_out_hi_wkup_pdis {
9262306a36Sopenharmony_ci			ste,sleep = <1>;
9362306a36Sopenharmony_ci			ste,sleep-output = <1>;
9462306a36Sopenharmony_ci			ste,sleep-wakeup = <1>;
9562306a36Sopenharmony_ci			ste,sleep-pull-disable = <0>;
9662306a36Sopenharmony_ci		};
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ci		slpm_out_wkup_pdis: slpm_out_wkup_pdis {
9962306a36Sopenharmony_ci			ste,sleep = <1>;
10062306a36Sopenharmony_ci			ste,sleep-output = <2>;
10162306a36Sopenharmony_ci			ste,sleep-wakeup = <1>;
10262306a36Sopenharmony_ci			ste,sleep-pull-disable = <0>;
10362306a36Sopenharmony_ci		};
10462306a36Sopenharmony_ci
10562306a36Sopenharmony_ci		uart0 {
10662306a36Sopenharmony_ci			uart0_default_mux: uart0_mux {
10762306a36Sopenharmony_ci				u0_default_mux {
10862306a36Sopenharmony_ci					function = "u0";
10962306a36Sopenharmony_ci					pins = "u0_a_1";
11062306a36Sopenharmony_ci				};
11162306a36Sopenharmony_ci			};
11262306a36Sopenharmony_ci			uart0_default_mode: uart0_default {
11362306a36Sopenharmony_ci				uart0_default_cfg1 {
11462306a36Sopenharmony_ci					pins = "GPIO0", "GPIO2";
11562306a36Sopenharmony_ci					ste,input = <1>;
11662306a36Sopenharmony_ci				};
11762306a36Sopenharmony_ci
11862306a36Sopenharmony_ci				uart0_default_cfg2 {
11962306a36Sopenharmony_ci					pins = "GPIO1", "GPIO3";
12062306a36Sopenharmony_ci					ste,output = <1>;
12162306a36Sopenharmony_ci				};
12262306a36Sopenharmony_ci			};
12362306a36Sopenharmony_ci			uart0_sleep_mode: uart0_sleep {
12462306a36Sopenharmony_ci				uart0_sleep_cfg1 {
12562306a36Sopenharmony_ci					pins = "GPIO0", "GPIO2";
12662306a36Sopenharmony_ci					ste,config = <&slpm_in_wkup_pdis>;
12762306a36Sopenharmony_ci				};
12862306a36Sopenharmony_ci				uart0_sleep_cfg2 {
12962306a36Sopenharmony_ci					pins = "GPIO1";
13062306a36Sopenharmony_ci					ste,config = <&slpm_out_hi_wkup_pdis>;
13162306a36Sopenharmony_ci				};
13262306a36Sopenharmony_ci				uart0_sleep_cfg3 {
13362306a36Sopenharmony_ci					pins = "GPIO3";
13462306a36Sopenharmony_ci					ste,config = <&slpm_out_wkup_pdis>;
13562306a36Sopenharmony_ci				};
13662306a36Sopenharmony_ci			};
13762306a36Sopenharmony_ci		};
13862306a36Sopenharmony_ci	};
13962306a36Sopenharmony_ci
14062306a36Sopenharmony_ci	uart@80120000 {
14162306a36Sopenharmony_ci		compatible = "arm,pl011", "arm,primecell";
14262306a36Sopenharmony_ci		reg = <0x80120000 0x1000>;
14362306a36Sopenharmony_ci		interrupts = <0 11 0x4>;
14462306a36Sopenharmony_ci
14562306a36Sopenharmony_ci		pinctrl-names = "default","sleep";
14662306a36Sopenharmony_ci		pinctrl-0 = <&uart0_default_mux>, <&uart0_default_mode>;
14762306a36Sopenharmony_ci		pinctrl-1 = <&uart0_sleep_mode>;
14862306a36Sopenharmony_ci	};
149