diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-07-24 17:05:46 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-07-24 17:05:46 -0400 |
commit | 914311c9fb9bc01a215de9d848b72b5449c0e342 (patch) | |
tree | e130f41c9c721bae03d6e293ffe0039d1a9018ea /Documentation/devicetree/bindings/pinctrl | |
parent | 5dedb9f3bd5bcb186313ea0c0cff8f2c525d4122 (diff) | |
parent | 8b8b091bf07fa7ef7f13c1ac40b30bcf74050b60 (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.txt | 93 |
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 @@ | |||
1 | One-register-per-pin type device tree based pinctrl driver | ||
2 | |||
3 | Required 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 | |||
13 | Optional 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 | |||
18 | This driver assumes that there is only one register for each pin, | ||
19 | and uses the common pinctrl bindings as specified in the pinctrl-bindings.txt | ||
20 | document in this directory. | ||
21 | |||
22 | The pin configuration nodes for pinctrl-single are specified as pinctrl | ||
23 | register offset and value pairs using pinctrl-single,pins. Only the bits | ||
24 | specified in pinctrl-single,function-mask are updated. For example, setting | ||
25 | a pin for a device could be done with: | ||
26 | |||
27 | pinctrl-single,pins = <0xdc 0x118>; | ||
28 | |||
29 | Where 0xdc is the offset from the pinctrl register base address for the | ||
30 | device pinctrl register, and 0x118 contains the desired value of the | ||
31 | pinctrl register. See the device example and static board pins example | ||
32 | below for more information. | ||
33 | |||
34 | Example: | ||
35 | |||
36 | /* SoC common file */ | ||
37 | |||
38 | /* first controller instance for pins in core domain */ | ||
39 | pmx_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 */ | ||
49 | pmx_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 | }; | ||