forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
pinctrl: Add one-register-per-pin type device tree based pinctrl driver
Add one-register-per-pin type device tree based pinctrl driver. This driver has been tested on omap2+ series of processors, where there is either an 8 or 16-bit padconf register for each pin. Support for other similar pinmux controllers can be added. Signed-off-by: Tony Lindgren <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
- Loading branch information
Showing
4 changed files
with
1,089 additions
and
0 deletions.
There are no files selected for viewing
93 changes: 93 additions & 0 deletions
93
Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
One-register-per-pin type device tree based pinctrl driver | ||
|
||
Required properties: | ||
- compatible : "pinctrl-single" | ||
|
||
- reg : offset and length of the register set for the mux registers | ||
|
||
- pinctrl-single,register-width : pinmux register access width in bits | ||
|
||
- pinctrl-single,function-mask : mask of allowed pinmux function bits | ||
in the pinmux register | ||
|
||
Optional properties: | ||
- pinctrl-single,function-off : function off mode for disabled state if | ||
available and same for all registers; if not specified, disabling of | ||
pin functions is ignored | ||
|
||
This driver assumes that there is only one register for each pin, | ||
and uses the common pinctrl bindings as specified in the pinctrl-bindings.txt | ||
document in this directory. | ||
|
||
The pin configuration nodes for pinctrl-single are specified as pinctrl | ||
register offset and value pairs using pinctrl-single,pins. Only the bits | ||
specified in pinctrl-single,function-mask are updated. For example, setting | ||
a pin for a device could be done with: | ||
|
||
pinctrl-single,pins = <0xdc 0x118>; | ||
|
||
Where 0xdc is the offset from the pinctrl register base address for the | ||
device pinctrl register, and 0x118 contains the desired value of the | ||
pinctrl register. See the device example and static board pins example | ||
below for more information. | ||
|
||
Example: | ||
|
||
/* SoC common file */ | ||
|
||
/* first controller instance for pins in core domain */ | ||
pmx_core: pinmux@4a100040 { | ||
compatible = "pinctrl-single"; | ||
reg = <0x4a100040 0x0196>; | ||
#address-cells = <1>; | ||
#size-cells = <0>; | ||
pinctrl-single,register-width = <16>; | ||
pinctrl-single,function-mask = <0xffff>; | ||
}; | ||
|
||
/* second controller instance for pins in wkup domain */ | ||
pmx_wkup: pinmux@4a31e040 { | ||
compatible = "pinctrl-single; | ||
reg = <0x4a31e040 0x0038>; | ||
#address-cells = <1>; | ||
#size-cells = <0>; | ||
pinctrl-single,register-width = <16>; | ||
pinctrl-single,function-mask = <0xffff>; | ||
}; | ||
|
||
|
||
/* board specific .dts file */ | ||
|
||
&pmx_core { | ||
|
||
/* | ||
* map all board specific static pins enabled by the pinctrl driver | ||
* itself during the boot (or just set them up in the bootloader) | ||
*/ | ||
pinctrl-names = "default"; | ||
pinctrl-0 = <&board_pins>; | ||
|
||
board_pins: pinmux_board_pins { | ||
pinctrl-single,pins = < | ||
0x6c 0xf | ||
0x6e 0xf | ||
0x70 0xf | ||
0x72 0xf | ||
>; | ||
}; | ||
|
||
/* map uart2 pins */ | ||
uart2_pins: pinmux_uart2_pins { | ||
pinctrl-single,pins = < | ||
0xd8 0x118 | ||
0xda 0 | ||
0xdc 0x118 | ||
0xde 0 | ||
>; | ||
}; | ||
}; | ||
|
||
&uart2 { | ||
pinctrl-names = "default"; | ||
pinctrl-0 = <&uart2_pins>; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.