mirror of
https://github.com/torvalds/linux.git
synced 2024-12-20 10:01:56 +00:00
c1cb438522
The of_get_named_gpio_flags can retrieve the second cell of gpio-specifier as the "flags". The imx and mxs gpio driver do not have their own .xlate callback, which means of_gpio_simple_xlate is used and it's a 1:1 mapping between gpio controller flags and Linux "enum of_gpio_flags". Update imx and mxs bindings document to make it clear. Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
89 lines
2.2 KiB
Plaintext
89 lines
2.2 KiB
Plaintext
* Freescale MXS GPIO controller
|
|
|
|
The Freescale MXS GPIO controller is part of MXS PIN controller. The
|
|
GPIOs are organized in port/bank. Each port consists of 32 GPIOs.
|
|
|
|
As the GPIO controller is embedded in the PIN controller and all the
|
|
GPIO ports share the same IO space with PIN controller, the GPIO node
|
|
will be represented as sub-nodes of MXS pinctrl node.
|
|
|
|
Required properties for GPIO node:
|
|
- compatible : Should be "fsl,<soc>-gpio". The supported SoCs include
|
|
imx23 and imx28.
|
|
- interrupts : Should be the port interrupt shared by all 32 pins.
|
|
- gpio-controller : Marks the device node as a gpio controller.
|
|
- #gpio-cells : Should be two. The first cell is the pin number and
|
|
the second cell is used to specify the gpio polarity:
|
|
0 = active high
|
|
1 = active low
|
|
- interrupt-controller: Marks the device node as an interrupt controller.
|
|
- #interrupt-cells : Should be 2. The first cell is the GPIO number.
|
|
The second cell bits[3:0] is used to specify trigger type and level flags:
|
|
1 = low-to-high edge triggered.
|
|
2 = high-to-low edge triggered.
|
|
4 = active high level-sensitive.
|
|
8 = active low level-sensitive.
|
|
|
|
Note: Each GPIO port should have an alias correctly numbered in "aliases"
|
|
node.
|
|
|
|
Examples:
|
|
|
|
aliases {
|
|
gpio0 = &gpio0;
|
|
gpio1 = &gpio1;
|
|
gpio2 = &gpio2;
|
|
gpio3 = &gpio3;
|
|
gpio4 = &gpio4;
|
|
};
|
|
|
|
pinctrl@80018000 {
|
|
compatible = "fsl,imx28-pinctrl", "simple-bus";
|
|
reg = <0x80018000 2000>;
|
|
|
|
gpio0: gpio@0 {
|
|
compatible = "fsl,imx28-gpio";
|
|
interrupts = <127>;
|
|
gpio-controller;
|
|
#gpio-cells = <2>;
|
|
interrupt-controller;
|
|
#interrupt-cells = <2>;
|
|
};
|
|
|
|
gpio1: gpio@1 {
|
|
compatible = "fsl,imx28-gpio";
|
|
interrupts = <126>;
|
|
gpio-controller;
|
|
#gpio-cells = <2>;
|
|
interrupt-controller;
|
|
#interrupt-cells = <2>;
|
|
};
|
|
|
|
gpio2: gpio@2 {
|
|
compatible = "fsl,imx28-gpio";
|
|
interrupts = <125>;
|
|
gpio-controller;
|
|
#gpio-cells = <2>;
|
|
interrupt-controller;
|
|
#interrupt-cells = <2>;
|
|
};
|
|
|
|
gpio3: gpio@3 {
|
|
compatible = "fsl,imx28-gpio";
|
|
interrupts = <124>;
|
|
gpio-controller;
|
|
#gpio-cells = <2>;
|
|
interrupt-controller;
|
|
#interrupt-cells = <2>;
|
|
};
|
|
|
|
gpio4: gpio@4 {
|
|
compatible = "fsl,imx28-gpio";
|
|
interrupts = <123>;
|
|
gpio-controller;
|
|
#gpio-cells = <2>;
|
|
interrupt-controller;
|
|
#interrupt-cells = <2>;
|
|
};
|
|
};
|