xref: /freebsd/sys/contrib/device-tree/Bindings/pinctrl/qcom,msm8994-pinctrl.txt (revision c66ec88fed842fbaad62c30d510644ceb7bd2d71)
1*c66ec88fSEmmanuel VadotQualcomm MSM8994 TLMM block
2*c66ec88fSEmmanuel Vadot
3*c66ec88fSEmmanuel VadotThis binding describes the Top Level Mode Multiplexer block found in the
4*c66ec88fSEmmanuel VadotMSM8994 platform.
5*c66ec88fSEmmanuel Vadot
6*c66ec88fSEmmanuel Vadot- compatible:
7*c66ec88fSEmmanuel Vadot	Usage: required
8*c66ec88fSEmmanuel Vadot	Value type: <string>
9*c66ec88fSEmmanuel Vadot	Definition: Should contain one of:
10*c66ec88fSEmmanuel Vadot		    "qcom,msm8992-pinctrl",
11*c66ec88fSEmmanuel Vadot		    "qcom,msm8994-pinctrl".
12*c66ec88fSEmmanuel Vadot
13*c66ec88fSEmmanuel Vadot- reg:
14*c66ec88fSEmmanuel Vadot	Usage: required
15*c66ec88fSEmmanuel Vadot	Value type: <prop-encoded-array>
16*c66ec88fSEmmanuel Vadot	Definition: the base address and size of the TLMM register space.
17*c66ec88fSEmmanuel Vadot
18*c66ec88fSEmmanuel Vadot- interrupts:
19*c66ec88fSEmmanuel Vadot	Usage: required
20*c66ec88fSEmmanuel Vadot	Value type: <prop-encoded-array>
21*c66ec88fSEmmanuel Vadot	Definition: should specify the TLMM summary IRQ.
22*c66ec88fSEmmanuel Vadot
23*c66ec88fSEmmanuel Vadot- interrupt-controller:
24*c66ec88fSEmmanuel Vadot	Usage: required
25*c66ec88fSEmmanuel Vadot	Value type: <none>
26*c66ec88fSEmmanuel Vadot	Definition: identifies this node as an interrupt controller
27*c66ec88fSEmmanuel Vadot
28*c66ec88fSEmmanuel Vadot- #interrupt-cells:
29*c66ec88fSEmmanuel Vadot	Usage: required
30*c66ec88fSEmmanuel Vadot	Value type: <u32>
31*c66ec88fSEmmanuel Vadot	Definition: must be 2. Specifying the pin number and flags, as defined
32*c66ec88fSEmmanuel Vadot		    in <dt-bindings/interrupt-controller/irq.h>
33*c66ec88fSEmmanuel Vadot
34*c66ec88fSEmmanuel Vadot- gpio-controller:
35*c66ec88fSEmmanuel Vadot	Usage: required
36*c66ec88fSEmmanuel Vadot	Value type: <none>
37*c66ec88fSEmmanuel Vadot	Definition: identifies this node as a gpio controller
38*c66ec88fSEmmanuel Vadot
39*c66ec88fSEmmanuel Vadot- #gpio-cells:
40*c66ec88fSEmmanuel Vadot	Usage: required
41*c66ec88fSEmmanuel Vadot	Value type: <u32>
42*c66ec88fSEmmanuel Vadot	Definition: must be 2. Specifying the pin number and flags, as defined
43*c66ec88fSEmmanuel Vadot		    in <dt-bindings/gpio/gpio.h>
44*c66ec88fSEmmanuel Vadot
45*c66ec88fSEmmanuel Vadot- gpio-ranges:
46*c66ec88fSEmmanuel Vadot	Usage: required
47*c66ec88fSEmmanuel Vadot	Definition:  see ../gpio/gpio.txt
48*c66ec88fSEmmanuel Vadot
49*c66ec88fSEmmanuel Vadot- gpio-reserved-ranges:
50*c66ec88fSEmmanuel Vadot	Usage: optional
51*c66ec88fSEmmanuel Vadot	Definition: see ../gpio/gpio.txt
52*c66ec88fSEmmanuel Vadot
53*c66ec88fSEmmanuel VadotPlease refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for
54*c66ec88fSEmmanuel Vadota general description of GPIO and interrupt bindings.
55*c66ec88fSEmmanuel Vadot
56*c66ec88fSEmmanuel VadotPlease refer to pinctrl-bindings.txt in this directory for details of the
57*c66ec88fSEmmanuel Vadotcommon pinctrl bindings used by client devices, including the meaning of the
58*c66ec88fSEmmanuel Vadotphrase "pin configuration node".
59*c66ec88fSEmmanuel Vadot
60*c66ec88fSEmmanuel VadotThe pin configuration nodes act as a container for an arbitrary number of
61*c66ec88fSEmmanuel Vadotsubnodes. Each of these subnodes represents some desired configuration for a
62*c66ec88fSEmmanuel Vadotpin, a group, or a list of pins or groups. This configuration can include the
63*c66ec88fSEmmanuel Vadotmux function to select on those pin(s)/group(s), and various pin configuration
64*c66ec88fSEmmanuel Vadotparameters, such as pull-up, drive strength, etc.
65*c66ec88fSEmmanuel Vadot
66*c66ec88fSEmmanuel Vadot
67*c66ec88fSEmmanuel VadotPIN CONFIGURATION NODES:
68*c66ec88fSEmmanuel Vadot
69*c66ec88fSEmmanuel VadotThe name of each subnode is not important; all subnodes should be enumerated
70*c66ec88fSEmmanuel Vadotand processed purely based on their content.
71*c66ec88fSEmmanuel Vadot
72*c66ec88fSEmmanuel VadotEach subnode only affects those parameters that are explicitly listed. In
73*c66ec88fSEmmanuel Vadotother words, a subnode that lists a mux function but no pin configuration
74*c66ec88fSEmmanuel Vadotparameters implies no information about any pin configuration parameters.
75*c66ec88fSEmmanuel VadotSimilarly, a pin subnode that describes a pullup parameter implies no
76*c66ec88fSEmmanuel Vadotinformation about e.g. the mux function.
77*c66ec88fSEmmanuel Vadot
78*c66ec88fSEmmanuel Vadot
79*c66ec88fSEmmanuel VadotThe following generic properties as defined in pinctrl-bindings.txt are valid
80*c66ec88fSEmmanuel Vadotto specify in a pin configuration subnode:
81*c66ec88fSEmmanuel Vadot
82*c66ec88fSEmmanuel Vadot- pins:
83*c66ec88fSEmmanuel Vadot	Usage: required
84*c66ec88fSEmmanuel Vadot	Value type: <string-array>
85*c66ec88fSEmmanuel Vadot	Definition: List of gpio pins affected by the properties specified in
86*c66ec88fSEmmanuel Vadot		    this subnode.
87*c66ec88fSEmmanuel Vadot
88*c66ec88fSEmmanuel Vadot		    Valid pins are:
89*c66ec88fSEmmanuel Vadot		      gpio0-gpio145
90*c66ec88fSEmmanuel Vadot		        Supports mux, bias and drive-strength
91*c66ec88fSEmmanuel Vadot
92*c66ec88fSEmmanuel Vadot		      sdc1_clk, sdc1_cmd, sdc1_data sdc1_rclk, sdc2_clk,
93*c66ec88fSEmmanuel Vadot		      sdc2_cmd, sdc2_data
94*c66ec88fSEmmanuel Vadot		        Supports bias and drive-strength
95*c66ec88fSEmmanuel Vadot
96*c66ec88fSEmmanuel Vadot- function:
97*c66ec88fSEmmanuel Vadot	Usage: required
98*c66ec88fSEmmanuel Vadot	Value type: <string>
99*c66ec88fSEmmanuel Vadot	Definition: Specify the alternative function to be configured for the
100*c66ec88fSEmmanuel Vadot		    specified pins. Functions are only valid for gpio pins.
101*c66ec88fSEmmanuel Vadot		    Valid values are:
102*c66ec88fSEmmanuel Vadot
103*c66ec88fSEmmanuel Vadot		    audio_ref_clk,  blsp_i2c1, blsp_i2c2, blsp_i2c3, blsp_i2c4, blsp_i2c5,
104*c66ec88fSEmmanuel Vadot		    blsp_i2c6, blsp_i2c7, blsp_i2c8, blsp_i2c9, blsp_i2c10, blsp_i2c11,
105*c66ec88fSEmmanuel Vadot		    blsp_i2c12, blsp_spi1, blsp_spi1_cs1, blsp_spi1_cs2, blsp_spi1_cs3,
106*c66ec88fSEmmanuel Vadot		    blsp_spi2, blsp_spi2_cs1, blsp_spi2_cs2, blsp_spi2_cs3, blsp_spi3,
107*c66ec88fSEmmanuel Vadot		    blsp_spi4, blsp_spi5, blsp_spi6, blsp_spi7, blsp_spi8, blsp_spi9,
108*c66ec88fSEmmanuel Vadot		    blsp_spi10, blsp_spi10_cs1, blsp_spi10_cs2, blsp_spi10_cs3, blsp_spi11,
109*c66ec88fSEmmanuel Vadot		    blsp_spi12, blsp_uart1, blsp_uart2, blsp_uart3, blsp_uart4, blsp_uart5,
110*c66ec88fSEmmanuel Vadot		    blsp_uart6, blsp_uart7, blsp_uart8, blsp_uart9, blsp_uart10, blsp_uart11,
111*c66ec88fSEmmanuel Vadot		    blsp_uart12, blsp_uim1, blsp_uim2, blsp_uim3, blsp_uim4, blsp_uim5,
112*c66ec88fSEmmanuel Vadot		    blsp_uim6, blsp_uim7, blsp_uim8, blsp_uim9, blsp_uim10, blsp_uim11,
113*c66ec88fSEmmanuel Vadot		    blsp_uim12, blsp11_i2c_scl_b, blsp11_i2c_sda_b, blsp11_uart_rx_b,
114*c66ec88fSEmmanuel Vadot		    blsp11_uart_tx_b, cam_mclk0, cam_mclk1, cam_mclk2, cam_mclk3,
115*c66ec88fSEmmanuel Vadot		    cci_async_in0, cci_async_in1, cci_async_in2, cci_i2c0, cci_i2c1,
116*c66ec88fSEmmanuel Vadot		    cci_timer0, cci_timer1, cci_timer2, cci_timer3, cci_timer4,
117*c66ec88fSEmmanuel Vadot		    gcc_gp1_clk_a, gcc_gp1_clk_b, gcc_gp2_clk_a, gcc_gp2_clk_b, gcc_gp3_clk_a,
118*c66ec88fSEmmanuel Vadot		    gcc_gp3_clk_b, gp_mn, gp_pdm0, gp_pdm1, gp_pdm2, gp0_clk,
119*c66ec88fSEmmanuel Vadot		    gp1_clk, gps_tx, gsm_tx, hdmi_cec, hdmi_ddc, hdmi_hpd, hdmi_rcv,
120*c66ec88fSEmmanuel Vadot		    mdp_vsync, mss_lte, nav_pps, nav_tsync, qdss_cti_trig_in_a,
121*c66ec88fSEmmanuel Vadot		    qdss_cti_trig_in_b, qdss_cti_trig_in_c, qdss_cti_trig_in_d,
122*c66ec88fSEmmanuel Vadot		    qdss_cti_trig_out_a, qdss_cti_trig_out_b, qdss_cti_trig_out_c,
123*c66ec88fSEmmanuel Vadot		    qdss_cti_trig_out_d, qdss_traceclk_a, qdss_traceclk_b, qdss_tracectl_a,
124*c66ec88fSEmmanuel Vadot		    qdss_tracectl_b, qdss_tracedata_a, qdss_tracedata_b, qua_mi2s, pci_e0,
125*c66ec88fSEmmanuel Vadot		    pci_e1, pri_mi2s, sdc4, sec_mi2s, slimbus, spkr_i2s, ter_mi2s, tsif1,
126*c66ec88fSEmmanuel Vadot		    tsif2, uim_batt_alarm, uim1, uim2, uim3, uim4, gpio
127*c66ec88fSEmmanuel Vadot
128*c66ec88fSEmmanuel Vadot- bias-disable:
129*c66ec88fSEmmanuel Vadot	Usage: optional
130*c66ec88fSEmmanuel Vadot	Value type: <none>
131*c66ec88fSEmmanuel Vadot	Definition: The specified pins should be configured as no pull.
132*c66ec88fSEmmanuel Vadot
133*c66ec88fSEmmanuel Vadot- bias-pull-down:
134*c66ec88fSEmmanuel Vadot	Usage: optional
135*c66ec88fSEmmanuel Vadot	Value type: <none>
136*c66ec88fSEmmanuel Vadot	Definition: The specified pins should be configured as pull down.
137*c66ec88fSEmmanuel Vadot
138*c66ec88fSEmmanuel Vadot- bias-pull-up:
139*c66ec88fSEmmanuel Vadot	Usage: optional
140*c66ec88fSEmmanuel Vadot	Value type: <none>
141*c66ec88fSEmmanuel Vadot	Definition: The specified pins should be configured as pull up.
142*c66ec88fSEmmanuel Vadot
143*c66ec88fSEmmanuel Vadot- output-high:
144*c66ec88fSEmmanuel Vadot	Usage: optional
145*c66ec88fSEmmanuel Vadot	Value type: <none>
146*c66ec88fSEmmanuel Vadot	Definition: The specified pins are configured in output mode, driven
147*c66ec88fSEmmanuel Vadot		    high.
148*c66ec88fSEmmanuel Vadot		    Not valid for sdc pins.
149*c66ec88fSEmmanuel Vadot
150*c66ec88fSEmmanuel Vadot- output-low:
151*c66ec88fSEmmanuel Vadot	Usage: optional
152*c66ec88fSEmmanuel Vadot	Value type: <none>
153*c66ec88fSEmmanuel Vadot	Definition: The specified pins are configured in output mode, driven
154*c66ec88fSEmmanuel Vadot		    low.
155*c66ec88fSEmmanuel Vadot		    Not valid for sdc pins.
156*c66ec88fSEmmanuel Vadot
157*c66ec88fSEmmanuel Vadot- drive-strength:
158*c66ec88fSEmmanuel Vadot	Usage: optional
159*c66ec88fSEmmanuel Vadot	Value type: <u32>
160*c66ec88fSEmmanuel Vadot	Definition: Selects the drive strength for the specified pins, in mA.
161*c66ec88fSEmmanuel Vadot		    Valid values are: 2, 4, 6, 8, 10, 12, 14 and 16
162*c66ec88fSEmmanuel Vadot
163*c66ec88fSEmmanuel VadotExample:
164*c66ec88fSEmmanuel Vadot
165*c66ec88fSEmmanuel Vadot	msmgpio: pinctrl@fd510000 {
166*c66ec88fSEmmanuel Vadot		compatible = "qcom,msm8994-pinctrl";
167*c66ec88fSEmmanuel Vadot		reg = <0xfd510000 0x4000>;
168*c66ec88fSEmmanuel Vadot		interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
169*c66ec88fSEmmanuel Vadot		gpio-controller;
170*c66ec88fSEmmanuel Vadot		#gpio-cells = <2>;
171*c66ec88fSEmmanuel Vadot		gpio-ranges = <&msmgpio 0 0 146>;
172*c66ec88fSEmmanuel Vadot		interrupt-controller;
173*c66ec88fSEmmanuel Vadot		#interrupt-cells = <2>;
174*c66ec88fSEmmanuel Vadot
175*c66ec88fSEmmanuel Vadot		blsp1_uart2_default: blsp1_uart2_default {
176*c66ec88fSEmmanuel Vadot			pinmux {
177*c66ec88fSEmmanuel Vadot				pins = "gpio4", "gpio5";
178*c66ec88fSEmmanuel Vadot				function = "blsp_uart2";
179*c66ec88fSEmmanuel Vadot			};
180*c66ec88fSEmmanuel Vadot			pinconf {
181*c66ec88fSEmmanuel Vadot				pins = "gpio4", "gpio5";
182*c66ec88fSEmmanuel Vadot				drive-strength = <16>;
183*c66ec88fSEmmanuel Vadot				bias-disable;
184*c66ec88fSEmmanuel Vadot			};
185*c66ec88fSEmmanuel Vadot		};
186*c66ec88fSEmmanuel Vadot	};
187