xref: /openbmc/linux/Documentation/devicetree/bindings/pinctrl/brcm,iproc-gpio.txt (revision f26e8817b235d8764363bffcc9cbfc61867371f2)
1604b2579SPramod KumarBroadcom iProc GPIO/PINCONF Controller
2604b2579SPramod Kumar
3604b2579SPramod KumarRequired properties:
4604b2579SPramod Kumar
5604b2579SPramod Kumar- compatible:
6*418af4a8SRay Jui    "brcm,iproc-gpio" for the generic iProc based GPIO controller IP that
7*418af4a8SRay Jui    supports full-featured pinctrl and GPIO functions used in various iProc
8*418af4a8SRay Jui    based SoCs
9*418af4a8SRay Jui
10*418af4a8SRay Jui    May contain an SoC-specific compatibility string to accommodate any
11*418af4a8SRay Jui    SoC-specific features
12*418af4a8SRay Jui
13*418af4a8SRay Jui    "brcm,cygnus-ccm-gpio", "brcm,cygnus-asiu-gpio", or
14*418af4a8SRay Jui    "brcm,cygnus-crmu-gpio" for Cygnus SoCs
15*418af4a8SRay Jui
16*418af4a8SRay Jui    "brcm,iproc-nsp-gpio" for the iProc NSP SoC that has drive strength support
17*418af4a8SRay Jui    disabled
18*418af4a8SRay Jui
19*418af4a8SRay Jui    "brcm,iproc-stingray-gpio" for the iProc Stingray SoC that has the general
20*418af4a8SRay Jui    pinctrl support completely disabled in this IP block. In Stingray, a
21*418af4a8SRay Jui    different IP block is used to handle pinctrl related functions
22604b2579SPramod Kumar
23604b2579SPramod Kumar- reg:
24604b2579SPramod Kumar    Define the base and range of the I/O address space that contains SoC
25604b2579SPramod KumarGPIO/PINCONF controller registers
26604b2579SPramod Kumar
27604b2579SPramod Kumar- ngpios:
28604b2579SPramod Kumar    Total number of in-use slots in GPIO controller
29604b2579SPramod Kumar
30604b2579SPramod Kumar- #gpio-cells:
31604b2579SPramod Kumar    Must be two. The first cell is the GPIO pin number (within the
32604b2579SPramod Kumarcontroller's pin space) and the second cell is used for the following:
33604b2579SPramod Kumar    bit[0]: polarity (0 for active high and 1 for active low)
34604b2579SPramod Kumar
35604b2579SPramod Kumar- gpio-controller:
36604b2579SPramod Kumar    Specifies that the node is a GPIO controller
37604b2579SPramod Kumar
38604b2579SPramod KumarOptional properties:
39604b2579SPramod Kumar
40604b2579SPramod Kumar- interrupts:
41604b2579SPramod Kumar    Interrupt ID
42604b2579SPramod Kumar
43604b2579SPramod Kumar- interrupt-controller:
44604b2579SPramod Kumar    Specifies that the node is an interrupt controller
45604b2579SPramod Kumar
46604b2579SPramod Kumar- gpio-ranges:
47604b2579SPramod Kumar    Specifies the mapping between gpio controller and pin-controllers pins.
48604b2579SPramod Kumar    This requires 4 fields in cells defined as -
49604b2579SPramod Kumar    1. Phandle of pin-controller.
50604b2579SPramod Kumar    2. GPIO base pin offset.
51604b2579SPramod Kumar    3  Pin-control base pin offset.
52604b2579SPramod Kumar    4. number of gpio pins which are linearly mapped from pin base.
53604b2579SPramod Kumar
54604b2579SPramod KumarSupported generic PINCONF properties in child nodes:
55604b2579SPramod Kumar
56604b2579SPramod Kumar- pins:
57604b2579SPramod Kumar    The list of pins (within the controller's own pin space) that properties
58604b2579SPramod Kumarin the node apply to. Pin names are "gpio-<pin>"
59604b2579SPramod Kumar
60604b2579SPramod Kumar- bias-disable:
61604b2579SPramod Kumar    Disable pin bias
62604b2579SPramod Kumar
63604b2579SPramod Kumar- bias-pull-up:
64604b2579SPramod Kumar    Enable internal pull up resistor
65604b2579SPramod Kumar
66604b2579SPramod Kumar- bias-pull-down:
67604b2579SPramod Kumar    Enable internal pull down resistor
68604b2579SPramod Kumar
69604b2579SPramod Kumar- drive-strength:
70604b2579SPramod Kumar    Valid drive strength values include 2, 4, 6, 8, 10, 12, 14, 16 (mA)
71604b2579SPramod Kumar
72604b2579SPramod KumarExample:
73604b2579SPramod Kumar	gpio_ccm: gpio@1800a000 {
74604b2579SPramod Kumar		compatible = "brcm,cygnus-ccm-gpio";
75604b2579SPramod Kumar		reg = <0x1800a000 0x50>,
76604b2579SPramod Kumar		      <0x0301d164 0x20>;
77604b2579SPramod Kumar		ngpios = <24>;
78604b2579SPramod Kumar		#gpio-cells = <2>;
79604b2579SPramod Kumar		gpio-controller;
80604b2579SPramod Kumar		interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
81604b2579SPramod Kumar		interrupt-controller;
82604b2579SPramod Kumar
83604b2579SPramod Kumar		touch_pins: touch_pins {
84604b2579SPramod Kumar			pwr: pwr {
85604b2579SPramod Kumar				pins = "gpio-0";
86604b2579SPramod Kumar				drive-strength = <16>;
87604b2579SPramod Kumar			};
88604b2579SPramod Kumar
89604b2579SPramod Kumar			event: event {
90604b2579SPramod Kumar				pins = "gpio-1";
91604b2579SPramod Kumar				bias-pull-up;
92604b2579SPramod Kumar			};
93604b2579SPramod Kumar		};
94604b2579SPramod Kumar	};
95604b2579SPramod Kumar
96604b2579SPramod Kumar	gpio_asiu: gpio@180a5000 {
97604b2579SPramod Kumar		compatible = "brcm,cygnus-asiu-gpio";
98604b2579SPramod Kumar		reg = <0x180a5000 0x668>;
99604b2579SPramod Kumar		ngpios = <146>;
100604b2579SPramod Kumar		#gpio-cells = <2>;
101604b2579SPramod Kumar		gpio-controller;
102604b2579SPramod Kumar		interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
103604b2579SPramod Kumar		interrupt-controller;
104604b2579SPramod Kumar		gpio-ranges = <&pinctrl 0 42 1>,
105604b2579SPramod Kumar				<&pinctrl 1 44 3>;
106604b2579SPramod Kumar	};
107604b2579SPramod Kumar
108604b2579SPramod Kumar	/*
109604b2579SPramod Kumar	 * Touchscreen that uses the CCM GPIO 0 and 1
110604b2579SPramod Kumar	 */
111604b2579SPramod Kumar	tsc {
112604b2579SPramod Kumar		...
113604b2579SPramod Kumar		...
114604b2579SPramod Kumar		gpio-pwr = <&gpio_ccm 0 0>;
115604b2579SPramod Kumar		gpio-event = <&gpio_ccm 1 0>;
116604b2579SPramod Kumar	};
117604b2579SPramod Kumar
118604b2579SPramod Kumar	/* Bluetooth that uses the ASIU GPIO 5, with polarity inverted */
119604b2579SPramod Kumar	bluetooth {
120604b2579SPramod Kumar		...
121604b2579SPramod Kumar		...
122604b2579SPramod Kumar		bcm,rfkill-bank-sel = <&gpio_asiu 5 1>
123604b2579SPramod Kumar	}
124