1*cf0a3d31SKrzysztof Kozlowski# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*cf0a3d31SKrzysztof Kozlowski%YAML 1.2
3*cf0a3d31SKrzysztof Kozlowski---
4*cf0a3d31SKrzysztof Kozlowski$id: http://devicetree.org/schemas/pinctrl/qcom,sm6350-tlmm.yaml#
5*cf0a3d31SKrzysztof Kozlowski$schema: http://devicetree.org/meta-schemas/core.yaml#
6*cf0a3d31SKrzysztof Kozlowski
7*cf0a3d31SKrzysztof Kozlowskititle: Qualcomm Technologies, Inc. SM6350 TLMM block
8*cf0a3d31SKrzysztof Kozlowski
9*cf0a3d31SKrzysztof Kozlowskimaintainers:
10*cf0a3d31SKrzysztof Kozlowski  - Konrad Dybcio <konrad.dybcio@somainline.org>
11*cf0a3d31SKrzysztof Kozlowski
12*cf0a3d31SKrzysztof Kozlowskidescription:
13*cf0a3d31SKrzysztof Kozlowski  Top Level Mode Multiplexer pin controller in Qualcomm SM6350 SoC.
14*cf0a3d31SKrzysztof Kozlowski
15*cf0a3d31SKrzysztof KozlowskiallOf:
16*cf0a3d31SKrzysztof Kozlowski  - $ref: /schemas/pinctrl/qcom,tlmm-common.yaml#
17*cf0a3d31SKrzysztof Kozlowski
18*cf0a3d31SKrzysztof Kozlowskiproperties:
19*cf0a3d31SKrzysztof Kozlowski  compatible:
20*cf0a3d31SKrzysztof Kozlowski    const: qcom,sm6350-tlmm
21*cf0a3d31SKrzysztof Kozlowski
22*cf0a3d31SKrzysztof Kozlowski  reg:
23*cf0a3d31SKrzysztof Kozlowski    maxItems: 1
24*cf0a3d31SKrzysztof Kozlowski
25*cf0a3d31SKrzysztof Kozlowski  interrupts: true
26*cf0a3d31SKrzysztof Kozlowski  interrupt-controller: true
27*cf0a3d31SKrzysztof Kozlowski  "#interrupt-cells": true
28*cf0a3d31SKrzysztof Kozlowski  gpio-controller: true
29*cf0a3d31SKrzysztof Kozlowski  gpio-reserved-ranges: true
30*cf0a3d31SKrzysztof Kozlowski  "#gpio-cells": true
31*cf0a3d31SKrzysztof Kozlowski  gpio-ranges: true
32*cf0a3d31SKrzysztof Kozlowski  wakeup-parent: true
33*cf0a3d31SKrzysztof Kozlowski
34*cf0a3d31SKrzysztof Kozlowskirequired:
35*cf0a3d31SKrzysztof Kozlowski  - compatible
36*cf0a3d31SKrzysztof Kozlowski  - reg
37*cf0a3d31SKrzysztof Kozlowski
38*cf0a3d31SKrzysztof KozlowskiadditionalProperties: false
39*cf0a3d31SKrzysztof Kozlowski
40*cf0a3d31SKrzysztof KozlowskipatternProperties:
41*cf0a3d31SKrzysztof Kozlowski  "-state$":
42*cf0a3d31SKrzysztof Kozlowski    oneOf:
43*cf0a3d31SKrzysztof Kozlowski      - $ref: "#/$defs/qcom-sm6350-tlmm-state"
44*cf0a3d31SKrzysztof Kozlowski      - patternProperties:
45*cf0a3d31SKrzysztof Kozlowski          "-pins$":
46*cf0a3d31SKrzysztof Kozlowski            $ref: "#/$defs/qcom-sm6350-tlmm-state"
47*cf0a3d31SKrzysztof Kozlowski        additionalProperties: false
48*cf0a3d31SKrzysztof Kozlowski
49*cf0a3d31SKrzysztof Kozlowski$defs:
50*cf0a3d31SKrzysztof Kozlowski  qcom-sm6350-tlmm-state:
51*cf0a3d31SKrzysztof Kozlowski    type: object
52*cf0a3d31SKrzysztof Kozlowski    description:
53*cf0a3d31SKrzysztof Kozlowski      Pinctrl node's client devices use subnodes for desired pin configuration.
54*cf0a3d31SKrzysztof Kozlowski      Client device subnodes use below standard properties.
55*cf0a3d31SKrzysztof Kozlowski    $ref: qcom,tlmm-common.yaml#/$defs/qcom-tlmm-state
56*cf0a3d31SKrzysztof Kozlowski
57*cf0a3d31SKrzysztof Kozlowski    properties:
58*cf0a3d31SKrzysztof Kozlowski      pins:
59*cf0a3d31SKrzysztof Kozlowski        description:
60*cf0a3d31SKrzysztof Kozlowski          List of gpio pins affected by the properties specified in this
61*cf0a3d31SKrzysztof Kozlowski          subnode.
62*cf0a3d31SKrzysztof Kozlowski        items:
63*cf0a3d31SKrzysztof Kozlowski          oneOf:
64*cf0a3d31SKrzysztof Kozlowski            - pattern: "^gpio([0-9]|[1-9][0-9]|1[0-4][0-9]|15[0-7])$"
65*cf0a3d31SKrzysztof Kozlowski            - enum: [ sdc1_clk, sdc1_cmd, sdc1_data, sdc2_clk, sdc2_cmd, sdc2_data ]
66*cf0a3d31SKrzysztof Kozlowski        minItems: 1
67*cf0a3d31SKrzysztof Kozlowski        maxItems: 36
68*cf0a3d31SKrzysztof Kozlowski
69*cf0a3d31SKrzysztof Kozlowski      function:
70*cf0a3d31SKrzysztof Kozlowski        description:
71*cf0a3d31SKrzysztof Kozlowski          Specify the alternative function to be configured for the specified
72*cf0a3d31SKrzysztof Kozlowski          pins.
73*cf0a3d31SKrzysztof Kozlowski
74*cf0a3d31SKrzysztof Kozlowski        enum: [ adsp_ext, agera_pll, atest_char, atest_char0, atest_char1, atest_char2,
75*cf0a3d31SKrzysztof Kozlowski                atest_char3, atest_tsens, atest_tsens2, atest_usb1, atest_usb10, atest_usb11,
76*cf0a3d31SKrzysztof Kozlowski                atest_usb12, atest_usb13, atest_usb2, atest_usb20, atest_usb21, atest_usb22,
77*cf0a3d31SKrzysztof Kozlowski                atest_usb23, audio_ref, btfm_slimbus, cam_mclk0, cam_mclk1, cam_mclk2, cam_mclk3,
78*cf0a3d31SKrzysztof Kozlowski                cam_mclk4, cci_async, cci_i2c, cci_timer0, cci_timer1, cci_timer2, cci_timer3,
79*cf0a3d31SKrzysztof Kozlowski                cci_timer4, cri_trng, dbg_out, ddr_bist, ddr_pxi0, ddr_pxi1, ddr_pxi2, ddr_pxi3,
80*cf0a3d31SKrzysztof Kozlowski                dp_hot, edp_lcd, gcc_gp1, gcc_gp2, gcc_gp3, gp_pdm0, gp_pdm1, gp_pdm2, gpio,
81*cf0a3d31SKrzysztof Kozlowski                gps_tx, ibi_i3c, jitter_bist, ldo_en, ldo_update, lpass_ext, m_voc, mclk,
82*cf0a3d31SKrzysztof Kozlowski                mdp_vsync, mdp_vsync0, mdp_vsync1, mdp_vsync2, mdp_vsync3, mi2s_0, mi2s_1, mi2s_2,
83*cf0a3d31SKrzysztof Kozlowski                mss_lte, nav_gpio, nav_pps, pa_indicator, pcie0_clk, phase_flag0, phase_flag1,
84*cf0a3d31SKrzysztof Kozlowski                phase_flag10, phase_flag11, phase_flag12, phase_flag13, phase_flag14, phase_flag15,
85*cf0a3d31SKrzysztof Kozlowski                phase_flag16, phase_flag17, phase_flag18, phase_flag19, phase_flag2, phase_flag20,
86*cf0a3d31SKrzysztof Kozlowski                phase_flag21, phase_flag22, phase_flag23, phase_flag24, phase_flag25, phase_flag26,
87*cf0a3d31SKrzysztof Kozlowski                phase_flag27, phase_flag28, phase_flag29, phase_flag3, phase_flag30, phase_flag31,
88*cf0a3d31SKrzysztof Kozlowski                phase_flag4, phase_flag5, phase_flag6, phase_flag7, phase_flag8, phase_flag9,
89*cf0a3d31SKrzysztof Kozlowski                pll_bist, pll_bypassnl, pll_reset, prng_rosc, qdss_cti, qdss_gpio, qdss_gpio0,
90*cf0a3d31SKrzysztof Kozlowski                qdss_gpio1, qdss_gpio10, qdss_gpio11, qdss_gpio12, qdss_gpio13, qdss_gpio14,
91*cf0a3d31SKrzysztof Kozlowski                qdss_gpio15, qdss_gpio2, qdss_gpio3, qdss_gpio4, qdss_gpio5, qdss_gpio6,
92*cf0a3d31SKrzysztof Kozlowski                qdss_gpio7, qdss_gpio8, qdss_gpio9, qlink0_enable, qlink0_request, qlink0_wmss,
93*cf0a3d31SKrzysztof Kozlowski                qlink1_enable, qlink1_request, qlink1_wmss, qup00, qup01, qup02, qup10, qup11,
94*cf0a3d31SKrzysztof Kozlowski                qup12, qup13_f1, qup13_f2, qup14, rffe0_clk, rffe0_data, rffe1_clk, rffe1_data,
95*cf0a3d31SKrzysztof Kozlowski                rffe2_clk, rffe2_data, rffe3_clk, rffe3_data, rffe4_clk, rffe4_data, sd_write,
96*cf0a3d31SKrzysztof Kozlowski                sdc1_tb, sdc2_tb, sp_cmu, tgu_ch0, tgu_ch1, tgu_ch2, tgu_ch3, tsense_pwm1,
97*cf0a3d31SKrzysztof Kozlowski                tsense_pwm2, uim1_clk, uim1_data, uim1_present, uim1_reset, uim2_clk, uim2_data,
98*cf0a3d31SKrzysztof Kozlowski                uim2_present, uim2_reset, usb_phy, vfr_1, vsense_trigger, wlan1_adc0, wlan1_adc1,
99*cf0a3d31SKrzysztof Kozlowski                wlan2_adc0, wlan2_adc1, ]
100*cf0a3d31SKrzysztof Kozlowski
101*cf0a3d31SKrzysztof Kozlowski
102*cf0a3d31SKrzysztof Kozlowski      bias-disable: true
103*cf0a3d31SKrzysztof Kozlowski      bias-pull-down: true
104*cf0a3d31SKrzysztof Kozlowski      bias-pull-up: true
105*cf0a3d31SKrzysztof Kozlowski      drive-strength: true
106*cf0a3d31SKrzysztof Kozlowski      input-enable: true
107*cf0a3d31SKrzysztof Kozlowski      output-high: true
108*cf0a3d31SKrzysztof Kozlowski      output-low: true
109*cf0a3d31SKrzysztof Kozlowski
110*cf0a3d31SKrzysztof Kozlowski    required:
111*cf0a3d31SKrzysztof Kozlowski      - pins
112*cf0a3d31SKrzysztof Kozlowski
113*cf0a3d31SKrzysztof Kozlowski    additionalProperties: false
114*cf0a3d31SKrzysztof Kozlowski
115*cf0a3d31SKrzysztof Kozlowskiexamples:
116*cf0a3d31SKrzysztof Kozlowski  - |
117*cf0a3d31SKrzysztof Kozlowski    #include <dt-bindings/interrupt-controller/arm-gic.h>
118*cf0a3d31SKrzysztof Kozlowski    pinctrl@f100000 {
119*cf0a3d31SKrzysztof Kozlowski        compatible = "qcom,sm6350-tlmm";
120*cf0a3d31SKrzysztof Kozlowski        reg = <0x0f100000 0x300000>;
121*cf0a3d31SKrzysztof Kozlowski        interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
122*cf0a3d31SKrzysztof Kozlowski        gpio-controller;
123*cf0a3d31SKrzysztof Kozlowski        #gpio-cells = <2>;
124*cf0a3d31SKrzysztof Kozlowski        interrupt-controller;
125*cf0a3d31SKrzysztof Kozlowski        #interrupt-cells = <2>;
126*cf0a3d31SKrzysztof Kozlowski        gpio-ranges = <&tlmm 0 0 157>;
127*cf0a3d31SKrzysztof Kozlowski
128*cf0a3d31SKrzysztof Kozlowski        gpio-wo-subnode-state {
129*cf0a3d31SKrzysztof Kozlowski            pins = "gpio1";
130*cf0a3d31SKrzysztof Kozlowski            function = "gpio";
131*cf0a3d31SKrzysztof Kozlowski        };
132*cf0a3d31SKrzysztof Kozlowski
133*cf0a3d31SKrzysztof Kozlowski        uart-w-subnodes-state {
134*cf0a3d31SKrzysztof Kozlowski            rx-pins {
135*cf0a3d31SKrzysztof Kozlowski                pins = "gpio25";
136*cf0a3d31SKrzysztof Kozlowski                function = "qup13_f2";
137*cf0a3d31SKrzysztof Kozlowski                bias-disable;
138*cf0a3d31SKrzysztof Kozlowski            };
139*cf0a3d31SKrzysztof Kozlowski
140*cf0a3d31SKrzysztof Kozlowski            tx-pins {
141*cf0a3d31SKrzysztof Kozlowski                pins = "gpio26";
142*cf0a3d31SKrzysztof Kozlowski                function = "qup13_f2";
143*cf0a3d31SKrzysztof Kozlowski                bias-disable;
144*cf0a3d31SKrzysztof Kozlowski            };
145*cf0a3d31SKrzysztof Kozlowski        };
146*cf0a3d31SKrzysztof Kozlowski    };
147*cf0a3d31SKrzysztof Kozlowski...
148