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