xref: /freebsd/sys/contrib/device-tree/Bindings/pinctrl/qcom,msm8960-pinctrl.txt (revision c66ec88fed842fbaad62c30d510644ceb7bd2d71)
1*c66ec88fSEmmanuel VadotQualcomm MSM8960 TLMM block
2*c66ec88fSEmmanuel Vadot
3*c66ec88fSEmmanuel VadotThis binding describes the Top Level Mode Multiplexer block found in the
4*c66ec88fSEmmanuel VadotMSM8960 platform.
5*c66ec88fSEmmanuel Vadot
6*c66ec88fSEmmanuel Vadot- compatible:
7*c66ec88fSEmmanuel Vadot	Usage: required
8*c66ec88fSEmmanuel Vadot	Value type: <string>
9*c66ec88fSEmmanuel Vadot	Definition: must be "qcom,msm8960-pinctrl"
10*c66ec88fSEmmanuel Vadot
11*c66ec88fSEmmanuel Vadot- reg:
12*c66ec88fSEmmanuel Vadot	Usage: required
13*c66ec88fSEmmanuel Vadot	Value type: <prop-encoded-array>
14*c66ec88fSEmmanuel Vadot	Definition: the base address and size of the TLMM register space.
15*c66ec88fSEmmanuel Vadot
16*c66ec88fSEmmanuel Vadot- interrupts:
17*c66ec88fSEmmanuel Vadot	Usage: required
18*c66ec88fSEmmanuel Vadot	Value type: <prop-encoded-array>
19*c66ec88fSEmmanuel Vadot	Definition: should specify the TLMM summary IRQ.
20*c66ec88fSEmmanuel Vadot
21*c66ec88fSEmmanuel Vadot- interrupt-controller:
22*c66ec88fSEmmanuel Vadot	Usage: required
23*c66ec88fSEmmanuel Vadot	Value type: <none>
24*c66ec88fSEmmanuel Vadot	Definition: identifies this node as an interrupt controller
25*c66ec88fSEmmanuel Vadot
26*c66ec88fSEmmanuel Vadot- #interrupt-cells:
27*c66ec88fSEmmanuel Vadot	Usage: required
28*c66ec88fSEmmanuel Vadot	Value type: <u32>
29*c66ec88fSEmmanuel Vadot	Definition: must be 2. Specifying the pin number and flags, as defined
30*c66ec88fSEmmanuel Vadot		    in <dt-bindings/interrupt-controller/irq.h>
31*c66ec88fSEmmanuel Vadot
32*c66ec88fSEmmanuel Vadot- gpio-controller:
33*c66ec88fSEmmanuel Vadot	Usage: required
34*c66ec88fSEmmanuel Vadot	Value type: <none>
35*c66ec88fSEmmanuel Vadot	Definition: identifies this node as a gpio controller
36*c66ec88fSEmmanuel Vadot
37*c66ec88fSEmmanuel Vadot- #gpio-cells:
38*c66ec88fSEmmanuel Vadot	Usage: required
39*c66ec88fSEmmanuel Vadot	Value type: <u32>
40*c66ec88fSEmmanuel Vadot	Definition: must be 2. Specifying the pin number and flags, as defined
41*c66ec88fSEmmanuel Vadot		    in <dt-bindings/gpio/gpio.h>
42*c66ec88fSEmmanuel Vadot
43*c66ec88fSEmmanuel Vadot- gpio-ranges:
44*c66ec88fSEmmanuel Vadot	Usage: required
45*c66ec88fSEmmanuel Vadot	Definition:  see ../gpio/gpio.txt
46*c66ec88fSEmmanuel Vadot
47*c66ec88fSEmmanuel Vadot- gpio-reserved-ranges:
48*c66ec88fSEmmanuel Vadot	Usage: optional
49*c66ec88fSEmmanuel Vadot	Definition: see ../gpio/gpio.txt
50*c66ec88fSEmmanuel Vadot
51*c66ec88fSEmmanuel VadotPlease refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for
52*c66ec88fSEmmanuel Vadota general description of GPIO and interrupt bindings.
53*c66ec88fSEmmanuel Vadot
54*c66ec88fSEmmanuel VadotPlease refer to pinctrl-bindings.txt in this directory for details of the
55*c66ec88fSEmmanuel Vadotcommon pinctrl bindings used by client devices, including the meaning of the
56*c66ec88fSEmmanuel Vadotphrase "pin configuration node".
57*c66ec88fSEmmanuel Vadot
58*c66ec88fSEmmanuel VadotThe pin configuration nodes act as a container for an arbitrary number of
59*c66ec88fSEmmanuel Vadotsubnodes. Each of these subnodes represents some desired configuration for a
60*c66ec88fSEmmanuel Vadotpin, a group, or a list of pins or groups. This configuration can include the
61*c66ec88fSEmmanuel Vadotmux function to select on those pin(s)/group(s), and various pin configuration
62*c66ec88fSEmmanuel Vadotparameters, such as pull-up, drive strength, etc.
63*c66ec88fSEmmanuel Vadot
64*c66ec88fSEmmanuel Vadot
65*c66ec88fSEmmanuel VadotPIN CONFIGURATION NODES:
66*c66ec88fSEmmanuel Vadot
67*c66ec88fSEmmanuel VadotThe name of each subnode is not important; all subnodes should be enumerated
68*c66ec88fSEmmanuel Vadotand processed purely based on their content.
69*c66ec88fSEmmanuel Vadot
70*c66ec88fSEmmanuel VadotEach subnode only affects those parameters that are explicitly listed. In
71*c66ec88fSEmmanuel Vadotother words, a subnode that lists a mux function but no pin configuration
72*c66ec88fSEmmanuel Vadotparameters implies no information about any pin configuration parameters.
73*c66ec88fSEmmanuel VadotSimilarly, a pin subnode that describes a pullup parameter implies no
74*c66ec88fSEmmanuel Vadotinformation about e.g. the mux function.
75*c66ec88fSEmmanuel Vadot
76*c66ec88fSEmmanuel Vadot
77*c66ec88fSEmmanuel VadotThe following generic properties as defined in pinctrl-bindings.txt are valid
78*c66ec88fSEmmanuel Vadotto specify in a pin configuration subnode:
79*c66ec88fSEmmanuel Vadot
80*c66ec88fSEmmanuel Vadot- pins:
81*c66ec88fSEmmanuel Vadot	Usage: required
82*c66ec88fSEmmanuel Vadot	Value type: <string-array>
83*c66ec88fSEmmanuel Vadot	Definition: List of gpio pins affected by the properties specified in
84*c66ec88fSEmmanuel Vadot		    this subnode.  Valid pins are:
85*c66ec88fSEmmanuel Vadot		    gpio0-gpio151,
86*c66ec88fSEmmanuel Vadot		    sdc1_clk,
87*c66ec88fSEmmanuel Vadot		    sdc1_cmd,
88*c66ec88fSEmmanuel Vadot		    sdc1_data
89*c66ec88fSEmmanuel Vadot		    sdc3_clk,
90*c66ec88fSEmmanuel Vadot		    sdc3_cmd,
91*c66ec88fSEmmanuel Vadot		    sdc3_data
92*c66ec88fSEmmanuel Vadot
93*c66ec88fSEmmanuel Vadot- function:
94*c66ec88fSEmmanuel Vadot	Usage: required
95*c66ec88fSEmmanuel Vadot	Value type: <string>
96*c66ec88fSEmmanuel Vadot	Definition: Specify the alternative function to be configured for the
97*c66ec88fSEmmanuel Vadot		    specified pins. Functions are only valid for gpio pins.
98*c66ec88fSEmmanuel Vadot		    Valid values are:
99*c66ec88fSEmmanuel Vadot		    audio_pcm, bt, cam_mclk0, cam_mclk1, cam_mclk2,
100*c66ec88fSEmmanuel Vadot		    codec_mic_i2s, codec_spkr_i2s, ext_gps, fm, gps_blanking,
101*c66ec88fSEmmanuel Vadot		    gps_pps_in, gps_pps_out, gp_clk_0a, gp_clk_0b, gp_clk_1a,
102*c66ec88fSEmmanuel Vadot		    gp_clk_1b, gp_clk_2a, gp_clk_2b, gp_mn, gp_pdm_0a,
103*c66ec88fSEmmanuel Vadot		    gp_pdm_0b, gp_pdm_1a, gp_pdm_1b, gp_pdm_2a, gp_pdm_2b, gpio,
104*c66ec88fSEmmanuel Vadot		    gsbi1, gsbi1_spi_cs1_n, gsbi1_spi_cs2a_n, gsbi1_spi_cs2b_n,
105*c66ec88fSEmmanuel Vadot		    gsbi1_spi_cs3_n, gsbi2, gsbi2_spi_cs1_n, gsbi2_spi_cs2_n,
106*c66ec88fSEmmanuel Vadot		    gsbi2_spi_cs3_n, gsbi3, gsbi4, gsbi4_3d_cam_i2c_l,
107*c66ec88fSEmmanuel Vadot		    gsbi4_3d_cam_i2c_r, gsbi5, gsbi5_3d_cam_i2c_l,
108*c66ec88fSEmmanuel Vadot		    gsbi5_3d_cam_i2c_r, gsbi6, gsbi7, gsbi8, gsbi9, gsbi10,
109*c66ec88fSEmmanuel Vadot		    gsbi11, gsbi11_spi_cs1a_n, gsbi11_spi_cs1b_n,
110*c66ec88fSEmmanuel Vadot		    gsbi11_spi_cs2a_n, gsbi11_spi_cs2b_n, gsbi11_spi_cs3_n,
111*c66ec88fSEmmanuel Vadot		    gsbi12, hdmi_cec, hdmi_ddc_clock, hdmi_ddc_data,
112*c66ec88fSEmmanuel Vadot		    hdmi_hot_plug_detect, hsic, mdp_vsync, mi2s, mic_i2s,
113*c66ec88fSEmmanuel Vadot		    pmb_clk, pmb_ext_ctrl, ps_hold, rpm_wdog, sdc2, sdc4, sdc5,
114*c66ec88fSEmmanuel Vadot		    slimbus1, slimbus2, spkr_i2s, ssbi1, ssbi2, ssbi_ext_gps,
115*c66ec88fSEmmanuel Vadot		    ssbi_pmic2, ssbi_qpa1, ssbi_ts, tsif1, tsif2, ts_eoc,
116*c66ec88fSEmmanuel Vadot		    usb_fs1, usb_fs1_oe, usb_fs1_oe_n, usb_fs2, usb_fs2_oe,
117*c66ec88fSEmmanuel Vadot		    usb_fs2_oe_n, vfe_camif_timer1_a, vfe_camif_timer1_b,
118*c66ec88fSEmmanuel Vadot		    vfe_camif_timer2, vfe_camif_timer3_a, vfe_camif_timer3_b,
119*c66ec88fSEmmanuel Vadot		    vfe_camif_timer4_a, vfe_camif_timer4_b, vfe_camif_timer4_c,
120*c66ec88fSEmmanuel Vadot		    vfe_camif_timer5_a, vfe_camif_timer5_b, vfe_camif_timer6_a,
121*c66ec88fSEmmanuel Vadot		    vfe_camif_timer6_b, vfe_camif_timer6_c, vfe_camif_timer7_a,
122*c66ec88fSEmmanuel Vadot		    vfe_camif_timer7_b, vfe_camif_timer7_c, wlan
123*c66ec88fSEmmanuel Vadot
124*c66ec88fSEmmanuel Vadot- bias-disable:
125*c66ec88fSEmmanuel Vadot	Usage: optional
126*c66ec88fSEmmanuel Vadot	Value type: <none>
127*c66ec88fSEmmanuel Vadot	Definition: The specified pins should be configured as no pull.
128*c66ec88fSEmmanuel Vadot
129*c66ec88fSEmmanuel Vadot- bias-pull-down:
130*c66ec88fSEmmanuel Vadot	Usage: optional
131*c66ec88fSEmmanuel Vadot	Value type: <none>
132*c66ec88fSEmmanuel Vadot	Definition: The specified pins should be configured as pull down.
133*c66ec88fSEmmanuel Vadot
134*c66ec88fSEmmanuel Vadot- bias-pull-up:
135*c66ec88fSEmmanuel Vadot	Usage: optional
136*c66ec88fSEmmanuel Vadot	Value type: <none>
137*c66ec88fSEmmanuel Vadot	Definition: The specified pins should be configured as pull up.
138*c66ec88fSEmmanuel Vadot
139*c66ec88fSEmmanuel Vadot- output-high:
140*c66ec88fSEmmanuel Vadot	Usage: optional
141*c66ec88fSEmmanuel Vadot	Value type: <none>
142*c66ec88fSEmmanuel Vadot	Definition: The specified pins are configured in output mode, driven
143*c66ec88fSEmmanuel Vadot		    high.
144*c66ec88fSEmmanuel Vadot		    Not valid for sdc pins.
145*c66ec88fSEmmanuel Vadot
146*c66ec88fSEmmanuel Vadot- output-low:
147*c66ec88fSEmmanuel Vadot	Usage: optional
148*c66ec88fSEmmanuel Vadot	Value type: <none>
149*c66ec88fSEmmanuel Vadot	Definition: The specified pins are configured in output mode, driven
150*c66ec88fSEmmanuel Vadot		    low.
151*c66ec88fSEmmanuel Vadot		    Not valid for sdc pins.
152*c66ec88fSEmmanuel Vadot
153*c66ec88fSEmmanuel Vadot- drive-strength:
154*c66ec88fSEmmanuel Vadot	Usage: optional
155*c66ec88fSEmmanuel Vadot	Value type: <u32>
156*c66ec88fSEmmanuel Vadot	Definition: Selects the drive strength for the specified pins, in mA.
157*c66ec88fSEmmanuel Vadot		    Valid values are: 2, 4, 6, 8, 10, 12, 14 and 16
158*c66ec88fSEmmanuel Vadot
159*c66ec88fSEmmanuel VadotExample:
160*c66ec88fSEmmanuel Vadot
161*c66ec88fSEmmanuel Vadot	msmgpio: pinctrl@800000 {
162*c66ec88fSEmmanuel Vadot		compatible = "qcom,msm8960-pinctrl";
163*c66ec88fSEmmanuel Vadot		reg = <0x800000 0x4000>;
164*c66ec88fSEmmanuel Vadot
165*c66ec88fSEmmanuel Vadot		gpio-controller;
166*c66ec88fSEmmanuel Vadot		#gpio-cells = <2>;
167*c66ec88fSEmmanuel Vadot		gpio-ranges = <&msmgpio 0 0 152>;
168*c66ec88fSEmmanuel Vadot		interrupt-controller;
169*c66ec88fSEmmanuel Vadot		#interrupt-cells = <2>;
170*c66ec88fSEmmanuel Vadot		interrupts = <0 16 0x4>;
171*c66ec88fSEmmanuel Vadot
172*c66ec88fSEmmanuel Vadot		gsbi8_uart: gsbi8-uart {
173*c66ec88fSEmmanuel Vadot			mux {
174*c66ec88fSEmmanuel Vadot				pins = "gpio34", "gpio35";
175*c66ec88fSEmmanuel Vadot				function = "gsbi8";
176*c66ec88fSEmmanuel Vadot			};
177*c66ec88fSEmmanuel Vadot
178*c66ec88fSEmmanuel Vadot			tx {
179*c66ec88fSEmmanuel Vadot				pins = "gpio34";
180*c66ec88fSEmmanuel Vadot				drive-strength = <4>;
181*c66ec88fSEmmanuel Vadot				bias-disable;
182*c66ec88fSEmmanuel Vadot			};
183*c66ec88fSEmmanuel Vadot
184*c66ec88fSEmmanuel Vadot			rx {
185*c66ec88fSEmmanuel Vadot				pins = "gpio35";
186*c66ec88fSEmmanuel Vadot				drive-strength = <2>;
187*c66ec88fSEmmanuel Vadot				bias-pull-up;
188*c66ec88fSEmmanuel Vadot			};
189*c66ec88fSEmmanuel Vadot		};
190*c66ec88fSEmmanuel Vadot	};
191