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