mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-11 07:39:47 +00:00
Documentation: Update samsung-pinctrl device tree bindings documentation
Signed-off-by: Tomasz Figa <t.figa@samsung.com> Reviewed-by: Kyungmin Park <kyungmin.park@samsung.com> Acked-by: Thomas Abraham <thomas.abraham@linaro.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
a19fe2d45c
commit
b33ef91f4b
@ -13,8 +13,14 @@ Required Properties:
|
|||||||
- reg: Base address of the pin controller hardware module and length of
|
- reg: Base address of the pin controller hardware module and length of
|
||||||
the address space it occupies.
|
the address space it occupies.
|
||||||
|
|
||||||
- interrupts: interrupt specifier for the controller. The format and value of
|
- Pin banks as child nodes: Pin banks of the controller are represented by child
|
||||||
the interrupt specifier depends on the interrupt parent for the controller.
|
nodes of the controller node. Bank name is taken from name of the node. Each
|
||||||
|
bank node must contain following properties:
|
||||||
|
|
||||||
|
- gpio-controller: identifies the node as a gpio controller and pin bank.
|
||||||
|
- #gpio-cells: number of cells in GPIO specifier. Since the generic GPIO
|
||||||
|
binding is used, the amount of cells must be specified as 2. See generic
|
||||||
|
GPIO binding documentation for description of particular cells.
|
||||||
|
|
||||||
- Pin mux/config groups as child nodes: The pin mux (selecting pin function
|
- Pin mux/config groups as child nodes: The pin mux (selecting pin function
|
||||||
mode) and pin config (pull up/down, driver strength) settings are represented
|
mode) and pin config (pull up/down, driver strength) settings are represented
|
||||||
@ -72,16 +78,24 @@ used as system wakeup events.
|
|||||||
A. External GPIO Interrupts: For supporting external gpio interrupts, the
|
A. External GPIO Interrupts: For supporting external gpio interrupts, the
|
||||||
following properties should be specified in the pin-controller device node.
|
following properties should be specified in the pin-controller device node.
|
||||||
|
|
||||||
- interrupt-controller: identifies the controller node as interrupt-parent.
|
- interrupt-parent: phandle of the interrupt parent to which the external
|
||||||
- #interrupt-cells: the value of this property should be 2.
|
GPIO interrupts are forwarded to.
|
||||||
- First Cell: represents the external gpio interrupt number local to the
|
- interrupts: interrupt specifier for the controller. The format and value of
|
||||||
external gpio interrupt space of the controller.
|
the interrupt specifier depends on the interrupt parent for the controller.
|
||||||
- Second Cell: flags to identify the type of the interrupt
|
|
||||||
- 1 = rising edge triggered
|
In addition, following properties must be present in node of every bank
|
||||||
- 2 = falling edge triggered
|
of pins supporting GPIO interrupts:
|
||||||
- 3 = rising and falling edge triggered
|
|
||||||
- 4 = high level triggered
|
- interrupt-controller: identifies the controller node as interrupt-parent.
|
||||||
- 8 = low level triggered
|
- #interrupt-cells: the value of this property should be 2.
|
||||||
|
- First Cell: represents the external gpio interrupt number local to the
|
||||||
|
external gpio interrupt space of the controller.
|
||||||
|
- Second Cell: flags to identify the type of the interrupt
|
||||||
|
- 1 = rising edge triggered
|
||||||
|
- 2 = falling edge triggered
|
||||||
|
- 3 = rising and falling edge triggered
|
||||||
|
- 4 = high level triggered
|
||||||
|
- 8 = low level triggered
|
||||||
|
|
||||||
B. External Wakeup Interrupts: For supporting external wakeup interrupts, a
|
B. External Wakeup Interrupts: For supporting external wakeup interrupts, a
|
||||||
child node representing the external wakeup interrupt controller should be
|
child node representing the external wakeup interrupt controller should be
|
||||||
@ -94,6 +108,11 @@ B. External Wakeup Interrupts: For supporting external wakeup interrupts, a
|
|||||||
found on Samsung Exynos4210 SoC.
|
found on Samsung Exynos4210 SoC.
|
||||||
- interrupt-parent: phandle of the interrupt parent to which the external
|
- interrupt-parent: phandle of the interrupt parent to which the external
|
||||||
wakeup interrupts are forwarded to.
|
wakeup interrupts are forwarded to.
|
||||||
|
- interrupts: interrupt used by multiplexed wakeup interrupts.
|
||||||
|
|
||||||
|
In addition, following properties must be present in node of every bank
|
||||||
|
of pins supporting wake-up interrupts:
|
||||||
|
|
||||||
- interrupt-controller: identifies the node as interrupt-parent.
|
- interrupt-controller: identifies the node as interrupt-parent.
|
||||||
- #interrupt-cells: the value of this property should be 2
|
- #interrupt-cells: the value of this property should be 2
|
||||||
- First Cell: represents the external wakeup interrupt number local to
|
- First Cell: represents the external wakeup interrupt number local to
|
||||||
@ -105,11 +124,63 @@ B. External Wakeup Interrupts: For supporting external wakeup interrupts, a
|
|||||||
- 4 = high level triggered
|
- 4 = high level triggered
|
||||||
- 8 = low level triggered
|
- 8 = low level triggered
|
||||||
|
|
||||||
|
Node of every bank of pins supporting direct wake-up interrupts (without
|
||||||
|
multiplexing) must contain following properties:
|
||||||
|
|
||||||
|
- interrupt-parent: phandle of the interrupt parent to which the external
|
||||||
|
wakeup interrupts are forwarded to.
|
||||||
|
- interrupts: interrupts of the interrupt parent which are used for external
|
||||||
|
wakeup interrupts from pins of the bank, must contain interrupts for all
|
||||||
|
pins of the bank.
|
||||||
|
|
||||||
Aliases:
|
Aliases:
|
||||||
|
|
||||||
All the pin controller nodes should be represented in the aliases node using
|
All the pin controller nodes should be represented in the aliases node using
|
||||||
the following format 'pinctrl{n}' where n is a unique number for the alias.
|
the following format 'pinctrl{n}' where n is a unique number for the alias.
|
||||||
|
|
||||||
|
Example: A pin-controller node with pin banks:
|
||||||
|
|
||||||
|
pinctrl_0: pinctrl@11400000 {
|
||||||
|
compatible = "samsung,pinctrl-exynos4210";
|
||||||
|
reg = <0x11400000 0x1000>;
|
||||||
|
interrupts = <0 47 0>;
|
||||||
|
|
||||||
|
/* ... */
|
||||||
|
|
||||||
|
/* Pin bank without external interrupts */
|
||||||
|
gpy0: gpy0 {
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* ... */
|
||||||
|
|
||||||
|
/* Pin bank with external GPIO or muxed wake-up interrupts */
|
||||||
|
gpj0: gpj0 {
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <2>;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* ... */
|
||||||
|
|
||||||
|
/* Pin bank with external direct wake-up interrupts */
|
||||||
|
gpx0: gpx0 {
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
|
||||||
|
interrupt-controller;
|
||||||
|
interrupt-parent = <&gic>;
|
||||||
|
interrupts = <0 16 0>, <0 17 0>, <0 18 0>, <0 19 0>,
|
||||||
|
<0 20 0>, <0 21 0>, <0 22 0>, <0 23 0>;
|
||||||
|
#interrupt-cells = <2>;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* ... */
|
||||||
|
};
|
||||||
|
|
||||||
Example 1: A pin-controller node with pin groups.
|
Example 1: A pin-controller node with pin groups.
|
||||||
|
|
||||||
pinctrl_0: pinctrl@11400000 {
|
pinctrl_0: pinctrl@11400000 {
|
||||||
@ -117,6 +188,8 @@ Example 1: A pin-controller node with pin groups.
|
|||||||
reg = <0x11400000 0x1000>;
|
reg = <0x11400000 0x1000>;
|
||||||
interrupts = <0 47 0>;
|
interrupts = <0 47 0>;
|
||||||
|
|
||||||
|
/* ... */
|
||||||
|
|
||||||
uart0_data: uart0-data {
|
uart0_data: uart0-data {
|
||||||
samsung,pins = "gpa0-0", "gpa0-1";
|
samsung,pins = "gpa0-0", "gpa0-1";
|
||||||
samsung,pin-function = <2>;
|
samsung,pin-function = <2>;
|
||||||
@ -158,20 +231,14 @@ Example 2: A pin-controller node with external wakeup interrupt controller node.
|
|||||||
pinctrl_1: pinctrl@11000000 {
|
pinctrl_1: pinctrl@11000000 {
|
||||||
compatible = "samsung,pinctrl-exynos4210";
|
compatible = "samsung,pinctrl-exynos4210";
|
||||||
reg = <0x11000000 0x1000>;
|
reg = <0x11000000 0x1000>;
|
||||||
interrupts = <0 46 0>;
|
interrupts = <0 46 0>
|
||||||
interrupt-controller;
|
|
||||||
#interrupt-cells = <2>;
|
|
||||||
|
|
||||||
wakup_eint: wakeup-interrupt-controller {
|
/* ... */
|
||||||
|
|
||||||
|
wakeup-interrupt-controller {
|
||||||
compatible = "samsung,exynos4210-wakeup-eint";
|
compatible = "samsung,exynos4210-wakeup-eint";
|
||||||
interrupt-parent = <&gic>;
|
interrupt-parent = <&gic>;
|
||||||
interrupt-controller;
|
interrupts = <0 32 0>;
|
||||||
#interrupt-cells = <2>;
|
|
||||||
interrupts = <0 16 0>, <0 17 0>, <0 18 0>, <0 19 0>,
|
|
||||||
<0 20 0>, <0 21 0>, <0 22 0>, <0 23 0>,
|
|
||||||
<0 24 0>, <0 25 0>, <0 26 0>, <0 27 0>,
|
|
||||||
<0 28 0>, <0 29 0>, <0 30 0>, <0 31 0>,
|
|
||||||
<0 32 0>;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -190,7 +257,8 @@ Example 4: Set up the default pin state for uart controller.
|
|||||||
|
|
||||||
static int s3c24xx_serial_probe(struct platform_device *pdev) {
|
static int s3c24xx_serial_probe(struct platform_device *pdev) {
|
||||||
struct pinctrl *pinctrl;
|
struct pinctrl *pinctrl;
|
||||||
...
|
|
||||||
...
|
/* ... */
|
||||||
|
|
||||||
pinctrl = devm_pinctrl_get_select_default(&pdev->dev);
|
pinctrl = devm_pinctrl_get_select_default(&pdev->dev);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user