1*c53627f8SKrzysztof Kozlowski# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
2*c53627f8SKrzysztof Kozlowski%YAML 1.2
3*c53627f8SKrzysztof Kozlowski---
4*c53627f8SKrzysztof Kozlowski$id: http://devicetree.org/schemas/slimbus/slimbus.yaml#
5*c53627f8SKrzysztof Kozlowski$schema: http://devicetree.org/meta-schemas/core.yaml#
6*c53627f8SKrzysztof Kozlowski
7*c53627f8SKrzysztof Kozlowskititle: SLIM (Serial Low Power Interchip Media) bus
8*c53627f8SKrzysztof Kozlowski
9*c53627f8SKrzysztof Kozlowskimaintainers:
10*c53627f8SKrzysztof Kozlowski  - Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
11*c53627f8SKrzysztof Kozlowski
12*c53627f8SKrzysztof Kozlowskidescription:
13*c53627f8SKrzysztof Kozlowski  SLIMbus is a 2-wire bus, and is used to communicate with peripheral
14*c53627f8SKrzysztof Kozlowski  components like audio-codec.
15*c53627f8SKrzysztof Kozlowski
16*c53627f8SKrzysztof Kozlowskiproperties:
17*c53627f8SKrzysztof Kozlowski  $nodename:
18*c53627f8SKrzysztof Kozlowski    pattern: "^slim(@.*|-[0-9a-f])*$"
19*c53627f8SKrzysztof Kozlowski
20*c53627f8SKrzysztof Kozlowski  "#address-cells":
21*c53627f8SKrzysztof Kozlowski    const: 2
22*c53627f8SKrzysztof Kozlowski
23*c53627f8SKrzysztof Kozlowski  "#size-cells":
24*c53627f8SKrzysztof Kozlowski    const: 0
25*c53627f8SKrzysztof Kozlowski
26*c53627f8SKrzysztof KozlowskipatternProperties:
27*c53627f8SKrzysztof Kozlowski  "^.*@[0-9a-f]+,[0-9a-f]+$":
28*c53627f8SKrzysztof Kozlowski    type: object
29*c53627f8SKrzysztof Kozlowski    description: |
30*c53627f8SKrzysztof Kozlowski      Every SLIMbus controller node can contain zero or more child nodes
31*c53627f8SKrzysztof Kozlowski      representing slave devices on the bus. Every SLIMbus slave device is
32*c53627f8SKrzysztof Kozlowski      uniquely determined by the enumeration address containing 4 fields::
33*c53627f8SKrzysztof Kozlowski      Manufacturer ID, Product code, Device index, and Instance value for the
34*c53627f8SKrzysztof Kozlowski      device.
35*c53627f8SKrzysztof Kozlowski
36*c53627f8SKrzysztof Kozlowski      If child node is not present and it is instantiated after device
37*c53627f8SKrzysztof Kozlowski      discovery (slave device reporting itself present).
38*c53627f8SKrzysztof Kozlowski
39*c53627f8SKrzysztof Kozlowski      In some cases it may be necessary to describe non-probeable device
40*c53627f8SKrzysztof Kozlowski      details such as non-standard ways of powering up a device. In such cases,
41*c53627f8SKrzysztof Kozlowski      child nodes for those devices will be present as slaves of the SLIMbus
42*c53627f8SKrzysztof Kozlowski      controller.
43*c53627f8SKrzysztof Kozlowski
44*c53627f8SKrzysztof Kozlowski    properties:
45*c53627f8SKrzysztof Kozlowski      compatible:
46*c53627f8SKrzysztof Kozlowski        pattern: "^slim[0-9a-f]+,[0-9a-f]+$"
47*c53627f8SKrzysztof Kozlowski
48*c53627f8SKrzysztof Kozlowski      reg:
49*c53627f8SKrzysztof Kozlowski        maxItems: 1
50*c53627f8SKrzysztof Kozlowski        description: |
51*c53627f8SKrzysztof Kozlowski          Pair of (device index, instande ID), where::
52*c53627f8SKrzysztof Kozlowski           - Device index, which uniquely identifies multiple devices within a
53*c53627f8SKrzysztof Kozlowski             single component.
54*c53627f8SKrzysztof Kozlowski           - Instance ID, can be used for the cases where multiple devices of
55*c53627f8SKrzysztof Kozlowski             the same type or class are attached to the bus.
56*c53627f8SKrzysztof Kozlowski
57*c53627f8SKrzysztof Kozlowski    required:
58*c53627f8SKrzysztof Kozlowski      - compatible
59*c53627f8SKrzysztof Kozlowski      - reg
60*c53627f8SKrzysztof Kozlowski
61*c53627f8SKrzysztof Kozlowski    additionalProperties: true
62*c53627f8SKrzysztof Kozlowski
63*c53627f8SKrzysztof Kozlowskirequired:
64*c53627f8SKrzysztof Kozlowski  - "#address-cells"
65*c53627f8SKrzysztof Kozlowski  - "#size-cells"
66*c53627f8SKrzysztof Kozlowski
67*c53627f8SKrzysztof KozlowskiadditionalProperties: true
68*c53627f8SKrzysztof Kozlowski
69*c53627f8SKrzysztof Kozlowskiexamples:
70*c53627f8SKrzysztof Kozlowski  - |
71*c53627f8SKrzysztof Kozlowski    #include <dt-bindings/clock/qcom,gcc-msm8960.h>
72*c53627f8SKrzysztof Kozlowski    #include <dt-bindings/clock/qcom,lcc-msm8960.h>
73*c53627f8SKrzysztof Kozlowski    #include <dt-bindings/interrupt-controller/arm-gic.h>
74*c53627f8SKrzysztof Kozlowski
75*c53627f8SKrzysztof Kozlowski    soc {
76*c53627f8SKrzysztof Kozlowski        #address-cells = <1>;
77*c53627f8SKrzysztof Kozlowski        #size-cells = <1>;
78*c53627f8SKrzysztof Kozlowski        ranges;
79*c53627f8SKrzysztof Kozlowski
80*c53627f8SKrzysztof Kozlowski        slim@28080000 {
81*c53627f8SKrzysztof Kozlowski            compatible = "qcom,apq8064-slim", "qcom,slim";
82*c53627f8SKrzysztof Kozlowski            reg = <0x28080000 0x2000>, <0x80207c 4>;
83*c53627f8SKrzysztof Kozlowski            reg-names = "ctrl", "slew";
84*c53627f8SKrzysztof Kozlowski            interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
85*c53627f8SKrzysztof Kozlowski            clocks = <&lcc SLIMBUS_SRC>, <&lcc AUDIO_SLIMBUS_CLK>;
86*c53627f8SKrzysztof Kozlowski            clock-names = "iface", "core";
87*c53627f8SKrzysztof Kozlowski            #address-cells = <2>;
88*c53627f8SKrzysztof Kozlowski            #size-cells = <0>;
89*c53627f8SKrzysztof Kozlowski
90*c53627f8SKrzysztof Kozlowski            audio-codec@1,0 {
91*c53627f8SKrzysztof Kozlowski                compatible = "slim217,60";
92*c53627f8SKrzysztof Kozlowski                reg = <1 0>;
93*c53627f8SKrzysztof Kozlowski            };
94*c53627f8SKrzysztof Kozlowski        };
95*c53627f8SKrzysztof Kozlowski    };
96