aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/devicetree/bindings/pinctrl
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-07-24 17:05:46 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2012-07-24 17:05:46 -0400
commit914311c9fb9bc01a215de9d848b72b5449c0e342 (patch)
treee130f41c9c721bae03d6e293ffe0039d1a9018ea /Documentation/devicetree/bindings/pinctrl
parent5dedb9f3bd5bcb186313ea0c0cff8f2c525d4122 (diff)
parent8b8b091bf07fa7ef7f13c1ac40b30bcf74050b60 (diff)
Merge tag 'pinctrl-for-v3.6' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl
Pull pin control changes from Linus Walleij: "These are the accumulated pin control patches for v3.6: - Various cleanups to the U300 driver - Refactor the pin control core to automatically remove any GPIO ranges when the drivers are removed, instead of having the drivers do this explicitly. - Add a function for registering a batch of GPIO ranges. - Fix a number of incorrect but non-regressive error checks. - Incremental improvements to the COH901, i.MX and Nomadik drivers - Add a one-register-per-pin entirely Device Tree-based pin control driver from Tony Lindgren." * tag 'pinctrl-for-v3.6' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl: pinctrl: Add one-register-per-pin type device tree based pinctrl driver pinctrl/nomadik: add spi2_oc1_2 pin group pinctrl/nomadik: kerneldoc fix pinctrl/nomadik: use devm_* allocators for gpio probe pinctrl/nomadik: add pin group to mco function pinctrl/nomadik: add hsit_a_2 pin group pinctrl/nomadik: add pin group smcs1 and smps0 pinctrl/nomadik: fix hsir_a_1_pins pin list pinctrl: pinctrl-imx: fix map setting problem if NO_PAD_CTL is set pinctrl/coh901: use clk_prepare_[en|dis]able() pinctrl/pinctrl-tegra: remove IS_ERR checking of pmx->pctl pinctrl/pinctrl-spear: remove IS_ERR checking of pmx->pctl pinctrl/u300: drop unused variable pinctrl: select the proper symbol pinctrl: add pinctrl_add_gpio_ranges function pinctrl: remove pinctrl_remove_gpio_range pinctrl/pinctrl-core: cleanup pinctrl_register pinctrl/u300: delete pointless debug print pinctrl/pinctrl-u300: remove devm_kfree at driver unload
Diffstat (limited to 'Documentation/devicetree/bindings/pinctrl')
-rw-r--r--Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt93
1 files changed, 93 insertions, 0 deletions
diff --git a/Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt b/Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt
new file mode 100644
index 000000000000..5187f0dd8b28
--- /dev/null
+++ b/Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt
@@ -0,0 +1,93 @@
1One-register-per-pin type device tree based pinctrl driver
2
3Required properties:
4- compatible : "pinctrl-single"
5
6- reg : offset and length of the register set for the mux registers
7
8- pinctrl-single,register-width : pinmux register access width in bits
9
10- pinctrl-single,function-mask : mask of allowed pinmux function bits
11 in the pinmux register
12
13Optional properties:
14- pinctrl-single,function-off : function off mode for disabled state if
15 available and same for all registers; if not specified, disabling of
16 pin functions is ignored
17
18This driver assumes that there is only one register for each pin,
19and uses the common pinctrl bindings as specified in the pinctrl-bindings.txt
20document in this directory.
21
22The pin configuration nodes for pinctrl-single are specified as pinctrl
23register offset and value pairs using pinctrl-single,pins. Only the bits
24specified in pinctrl-single,function-mask are updated. For example, setting
25a pin for a device could be done with:
26
27 pinctrl-single,pins = <0xdc 0x118>;
28
29Where 0xdc is the offset from the pinctrl register base address for the
30device pinctrl register, and 0x118 contains the desired value of the
31pinctrl register. See the device example and static board pins example
32below for more information.
33
34Example:
35
36/* SoC common file */
37
38/* first controller instance for pins in core domain */
39pmx_core: pinmux@4a100040 {
40 compatible = "pinctrl-single";
41 reg = <0x4a100040 0x0196>;
42 #address-cells = <1>;
43 #size-cells = <0>;
44 pinctrl-single,register-width = <16>;
45 pinctrl-single,function-mask = <0xffff>;
46};
47
48/* second controller instance for pins in wkup domain */
49pmx_wkup: pinmux@4a31e040 {
50 compatible = "pinctrl-single;
51 reg = <0x4a31e040 0x0038>;
52 #address-cells = <1>;
53 #size-cells = <0>;
54 pinctrl-single,register-width = <16>;
55 pinctrl-single,function-mask = <0xffff>;
56};
57
58
59/* board specific .dts file */
60
61&pmx_core {
62
63 /*
64 * map all board specific static pins enabled by the pinctrl driver
65 * itself during the boot (or just set them up in the bootloader)
66 */
67 pinctrl-names = "default";
68 pinctrl-0 = <&board_pins>;
69
70 board_pins: pinmux_board_pins {
71 pinctrl-single,pins = <
72 0x6c 0xf
73 0x6e 0xf
74 0x70 0xf
75 0x72 0xf
76 >;
77 };
78
79 /* map uart2 pins */
80 uart2_pins: pinmux_uart2_pins {
81 pinctrl-single,pins = <
82 0xd8 0x118
83 0xda 0
84 0xdc 0x118
85 0xde 0
86 >;
87 };
88};
89
90&uart2 {
91 pinctrl-names = "default";
92 pinctrl-0 = <&uart2_pins>;
93};