xref: /freebsd/sys/contrib/device-tree/Bindings/slimbus/qcom,slim-ngd.yaml (revision 8bab661a3316d8bd9b9fbd11a3b4371b91507bd2)
1*8bab661aSEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
2*8bab661aSEmmanuel Vadot%YAML 1.2
3*8bab661aSEmmanuel Vadot---
4*8bab661aSEmmanuel Vadot$id: http://devicetree.org/schemas/slimbus/qcom,slim-ngd.yaml#
5*8bab661aSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6*8bab661aSEmmanuel Vadot
7*8bab661aSEmmanuel Vadottitle: Qualcomm SoC SLIMBus Non Generic Device (NGD) Controller
8*8bab661aSEmmanuel Vadot
9*8bab661aSEmmanuel Vadotmaintainers:
10*8bab661aSEmmanuel Vadot  - Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
11*8bab661aSEmmanuel Vadot  - Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
12*8bab661aSEmmanuel Vadot
13*8bab661aSEmmanuel Vadotdescription:
14*8bab661aSEmmanuel Vadot  SLIMBus NGD controller is a light-weight driver responsible for communicating
15*8bab661aSEmmanuel Vadot  with SLIMBus slaves directly over the bus using messaging interface and
16*8bab661aSEmmanuel Vadot  communicating with master component residing on ADSP for bandwidth and
17*8bab661aSEmmanuel Vadot  data-channel management
18*8bab661aSEmmanuel Vadot
19*8bab661aSEmmanuel Vadotproperties:
20*8bab661aSEmmanuel Vadot  compatible:
21*8bab661aSEmmanuel Vadot    enum:
22*8bab661aSEmmanuel Vadot      - qcom,slim-ngd-v1.5.0        # for MSM8996
23*8bab661aSEmmanuel Vadot      - qcom,slim-ngd-v2.1.0        # for SDM845
24*8bab661aSEmmanuel Vadot
25*8bab661aSEmmanuel Vadot  reg:
26*8bab661aSEmmanuel Vadot    maxItems: 1
27*8bab661aSEmmanuel Vadot
28*8bab661aSEmmanuel Vadot  "#address-cells":
29*8bab661aSEmmanuel Vadot    const: 1
30*8bab661aSEmmanuel Vadot
31*8bab661aSEmmanuel Vadot  "#size-cells":
32*8bab661aSEmmanuel Vadot    const: 0
33*8bab661aSEmmanuel Vadot
34*8bab661aSEmmanuel Vadot  dmas:
35*8bab661aSEmmanuel Vadot    maxItems: 2
36*8bab661aSEmmanuel Vadot
37*8bab661aSEmmanuel Vadot  dma-names:
38*8bab661aSEmmanuel Vadot    items:
39*8bab661aSEmmanuel Vadot      - const: rx
40*8bab661aSEmmanuel Vadot      - const: tx
41*8bab661aSEmmanuel Vadot
42*8bab661aSEmmanuel Vadot  interrupts:
43*8bab661aSEmmanuel Vadot    maxItems: 1
44*8bab661aSEmmanuel Vadot
45*8bab661aSEmmanuel Vadot  iommus:
46*8bab661aSEmmanuel Vadot    maxItems: 1
47*8bab661aSEmmanuel Vadot
48*8bab661aSEmmanuel VadotpatternProperties:
49*8bab661aSEmmanuel Vadot  "^slim@[0-9a-f]+$":
50*8bab661aSEmmanuel Vadot    type: object
51*8bab661aSEmmanuel Vadot    $ref: slimbus.yaml#
52*8bab661aSEmmanuel Vadot    description:
53*8bab661aSEmmanuel Vadot      Each subnode represents an instance of NGD
54*8bab661aSEmmanuel Vadot
55*8bab661aSEmmanuel Vadot    properties:
56*8bab661aSEmmanuel Vadot      reg:
57*8bab661aSEmmanuel Vadot        maxItems: 1
58*8bab661aSEmmanuel Vadot
59*8bab661aSEmmanuel Vadot    unevaluatedProperties: false
60*8bab661aSEmmanuel Vadot
61*8bab661aSEmmanuel Vadotrequired:
62*8bab661aSEmmanuel Vadot  - compatible
63*8bab661aSEmmanuel Vadot  - reg
64*8bab661aSEmmanuel Vadot  - "#address-cells"
65*8bab661aSEmmanuel Vadot  - "#size-cells"
66*8bab661aSEmmanuel Vadot  - dmas
67*8bab661aSEmmanuel Vadot  - dma-names
68*8bab661aSEmmanuel Vadot  - interrupts
69*8bab661aSEmmanuel Vadot
70*8bab661aSEmmanuel VadotadditionalProperties: false
71*8bab661aSEmmanuel Vadot
72*8bab661aSEmmanuel Vadotexamples:
73*8bab661aSEmmanuel Vadot  - |
74*8bab661aSEmmanuel Vadot    #include <dt-bindings/gpio/gpio.h>
75*8bab661aSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
76*8bab661aSEmmanuel Vadot
77*8bab661aSEmmanuel Vadot    slim-ngd@171c0000 {
78*8bab661aSEmmanuel Vadot        compatible = "qcom,slim-ngd-v2.1.0";
79*8bab661aSEmmanuel Vadot        reg = <0x171c0000 0x2c000>;
80*8bab661aSEmmanuel Vadot        interrupts = <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>;
81*8bab661aSEmmanuel Vadot
82*8bab661aSEmmanuel Vadot        dmas = <&slimbam 3>, <&slimbam 4>;
83*8bab661aSEmmanuel Vadot        dma-names = "rx", "tx";
84*8bab661aSEmmanuel Vadot        iommus = <&apps_smmu 0x1806 0x0>;
85*8bab661aSEmmanuel Vadot        #address-cells = <1>;
86*8bab661aSEmmanuel Vadot        #size-cells = <0>;
87*8bab661aSEmmanuel Vadot
88*8bab661aSEmmanuel Vadot        slim@1 {
89*8bab661aSEmmanuel Vadot            reg = <1>;
90*8bab661aSEmmanuel Vadot            #address-cells = <2>;
91*8bab661aSEmmanuel Vadot            #size-cells = <0>;
92*8bab661aSEmmanuel Vadot
93*8bab661aSEmmanuel Vadot            codec@1,0 {
94*8bab661aSEmmanuel Vadot                compatible = "slim217,250";
95*8bab661aSEmmanuel Vadot                reg = <1 0>;
96*8bab661aSEmmanuel Vadot                slim-ifc-dev = <&wcd9340_ifd>;
97*8bab661aSEmmanuel Vadot
98*8bab661aSEmmanuel Vadot                #sound-dai-cells = <1>;
99*8bab661aSEmmanuel Vadot
100*8bab661aSEmmanuel Vadot                interrupts-extended = <&tlmm 54 IRQ_TYPE_LEVEL_HIGH>;
101*8bab661aSEmmanuel Vadot                interrupt-controller;
102*8bab661aSEmmanuel Vadot                #interrupt-cells = <1>;
103*8bab661aSEmmanuel Vadot
104*8bab661aSEmmanuel Vadot                #clock-cells = <0>;
105*8bab661aSEmmanuel Vadot                clock-frequency = <9600000>;
106*8bab661aSEmmanuel Vadot                clock-output-names = "mclk";
107*8bab661aSEmmanuel Vadot                qcom,micbias1-microvolt = <1800000>;
108*8bab661aSEmmanuel Vadot                qcom,micbias2-microvolt = <1800000>;
109*8bab661aSEmmanuel Vadot                qcom,micbias3-microvolt = <1800000>;
110*8bab661aSEmmanuel Vadot                qcom,micbias4-microvolt = <1800000>;
111*8bab661aSEmmanuel Vadot
112*8bab661aSEmmanuel Vadot                #address-cells = <1>;
113*8bab661aSEmmanuel Vadot                #size-cells = <1>;
114*8bab661aSEmmanuel Vadot
115*8bab661aSEmmanuel Vadot                reset-gpios = <&tlmm 64 GPIO_ACTIVE_HIGH>;
116*8bab661aSEmmanuel Vadot
117*8bab661aSEmmanuel Vadot                /* Rest of the WCD9340 codec */
118*8bab661aSEmmanuel Vadot            };
119*8bab661aSEmmanuel Vadot        };
120*8bab661aSEmmanuel Vadot    };
121