mirror of
https://github.com/torvalds/linux.git
synced 2024-12-24 20:01:55 +00:00
f936779329
The Pinctrl module (ioc) controls the Pad's function select (each pad can have 8 functions), Pad's Drive Strength, Pad's Pull Select and Pad's Input Disable status. The ioc has two modules, ioc_top & ioc_rtc. Both of these two modules have function select/clear, Pull select and Drive Strength registers. But only ioc_rtc has input-disable registers. The Pads on ioc_top have to access ioc_rtc to set their input-disable status and intpu-disable-value. So have to use one ioc driver instance to drive these two ioc modules at the same time, and each ioc module will be treat as one bank on the "IOC Device". The GPIO Controller controls the GPIO status if the Pad has been config as GPIO by Pinctrl already. Includes the GPIO Input/output, Interrupt type, Interrupt Status, and Set/Get Values. The GPIO pull up/down are controlled by Pinctrl. There are 7 GPIO Groups and splited into 3 MACROs in atlas7. The GPIO Groups in one MACRO share one GPIO controllers, each GPIO Group are treated as one GPIO bank. For example: In VDIFM macro, there is one GPIO Controller, it has 3 banks to control 3 gpio groups. Its gpio name space is from 0 to 95. The Device Tree can be written as following: gpio-ranges = <&pinctrl 0 0 0>, <&pinctrl 32 0 0>, <&pinctrl 64 0 0>; gpio-ranges-group-names = "gnss_gpio_grp", "lcd_vip_gpio_grp", "sdio_i2s_gpio_grp"; bank#0 is from 0~31, the pins are from pinctrl's "gnss_gpio_grp". bank#2 is from 32~63, the pins are from pinctrl's "lcd_vip_gpio_grp". bank#3 is from 64~95, the pins are from pinctrl's "sdio_i2s_gpio_grp". Signed-off-by: Wei Chen <Wei.Chen@csr.com> Signed-off-by: Barry Song <Baohua.Song@csr.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
51 lines
1.2 KiB
Plaintext
51 lines
1.2 KiB
Plaintext
CSR SiRFatlas7 GPIO controller bindings
|
|
|
|
Required properties:
|
|
- compatible : "sirf,atlas7-gpio"
|
|
- reg : Address range of the pinctrl registers
|
|
- interrupts : Interrupts used by every GPIO group
|
|
- gpio-banks : How many gpio banks on this controller
|
|
- gpio-controller : Indicates this device is a GPIO controller
|
|
- interrupt-controller : Marks the device node as an interrupt controller
|
|
|
|
The GPIO controller also acts as an interrupt controller. It uses the default
|
|
two cells specifier as described in Documentation/devicetree/bindings/
|
|
interrupt-controller/interrupts.txt.
|
|
|
|
Example:
|
|
|
|
gpio_0: gpio_mediam@17040000 {
|
|
compatible = "sirf,atlas7-gpio";
|
|
reg = <0x17040000 0x1000>;
|
|
interrupts = <0 13 0>, <0 14 0>;
|
|
|
|
#gpio-cells = <2>;
|
|
#interrupt-cells = <2>;
|
|
|
|
gpio-controller;
|
|
interrupt-controller;
|
|
|
|
gpio-banks = <2>;
|
|
gpio-ranges = <&pinctrl 0 0 0>,
|
|
<&pinctrl 32 0 0>;
|
|
gpio-ranges-group-names = "lvds_gpio_grp",
|
|
"uart_nand_gpio_grp";
|
|
};
|
|
|
|
leds {
|
|
compatible = "gpio-leds";
|
|
|
|
led1 {
|
|
gpios = <&gpio_1 15 0>;
|
|
...
|
|
};
|
|
|
|
led2 {
|
|
gpios = <&gpio_2 34 0>;
|
|
...
|
|
};
|
|
};
|
|
|
|
Please refer to gpio.txt in this directory for details of the common
|
|
gpio properties used by devices.
|