Commit c53627f8 authored by Krzysztof Kozlowski's avatar Krzysztof Kozlowski Committed by Greg Kroah-Hartman
Browse files

dt-bindings: slimbus: convert bus description to DT schema

parent 319a538d
Loading
Loading
Loading
Loading
+0 −60
Original line number Diff line number Diff line
SLIM(Serial Low Power Interchip Media Bus) bus

SLIMbus is a 2-wire bus, and is used to communicate with peripheral
components like audio-codec.

Required property for SLIMbus controller node:
- compatible	- name of SLIMbus controller

Child nodes:
Every SLIMbus controller node can contain zero or more child nodes
representing slave devices on the bus. Every SLIMbus slave device is
uniquely determined by the enumeration address containing 4 fields:
Manufacturer ID, Product code, Device index, and Instance value for
the device.
If child node is not present and it is instantiated after device
discovery (slave device reporting itself present).

In some cases it may be necessary to describe non-probeable device
details such as non-standard ways of powering up a device. In
such cases, child nodes for those devices will be present as
slaves of the SLIMbus controller, as detailed below.

Required property for SLIMbus child node if it is present:
- reg		- Should be ('Device index', 'Instance ID') from SLIMbus
		  Enumeration  Address.
		  Device Index Uniquely identifies multiple Devices within
		  a single Component.
		  Instance ID Is for the cases where multiple Devices of the
		  same type or Class are attached to the bus.

- compatible	-"slimMID,PID". The textual representation of Manufacturer ID,
	 	  Product Code, shall be in lower case hexadecimal with leading
		  zeroes suppressed

Optional property for SLIMbus child node if it is present:
- slim-ifc-dev	- Should be phandle to SLIMBus Interface device.
		  Required for devices which deal with streams.

SLIMbus example for Qualcomm's slimbus manager component:

	slim@28080000 {
		compatible = "qcom,apq8064-slim", "qcom,slim";
		reg = <0x28080000 0x2000>,
		interrupts = <0 33 0>;
		clocks = <&lcc SLIMBUS_SRC>, <&lcc AUDIO_SLIMBUS_CLK>;
		clock-names = "iface", "core";
		#address-cells = <2>;
		#size-cell = <0>;

		codec_ifd: ifd@0,0{
			compatible = "slim217,60";
			reg = <0 0>;
		};

		codec: wcd9310@1,0{
			compatible = "slim217,60";
			reg = <1 0>;
			slim-ifc-dev  = <&codec_ifd>;
		};
	};
+0 −2
Original line number Diff line number Diff line
@@ -5,8 +5,6 @@ with SLIMBus slaves directly over the bus using messaging interface and
communicating with master component residing on ADSP for bandwidth and
data-channel management

Please refer to slimbus/bus.txt for details of the common SLIMBus bindings.

- compatible:
	Usage: required
	Value type: <stringlist>
+0 −3
Original line number Diff line number Diff line
@@ -4,9 +4,6 @@ master component.

Required properties:

 - #address-cells - refer to Documentation/devicetree/bindings/slimbus/bus.txt
 - #size-cells	- refer to Documentation/devicetree/bindings/slimbus/bus.txt

 - reg : Offset and length of the register region(s) for the device
 - reg-names : Register region name(s) referenced in reg above
	 Required register resource entries are:
+95 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/slimbus/slimbus.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: SLIM (Serial Low Power Interchip Media) bus

maintainers:
  - Srinivas Kandagatla <srinivas.kandagatla@linaro.org>

description:
  SLIMbus is a 2-wire bus, and is used to communicate with peripheral
  components like audio-codec.

properties:
  $nodename:
    pattern: "^slim(@.*|-[0-9a-f])*$"

  "#address-cells":
    const: 2

  "#size-cells":
    const: 0

patternProperties:
  "^.*@[0-9a-f]+,[0-9a-f]+$":
    type: object
    description: |
      Every SLIMbus controller node can contain zero or more child nodes
      representing slave devices on the bus. Every SLIMbus slave device is
      uniquely determined by the enumeration address containing 4 fields::
      Manufacturer ID, Product code, Device index, and Instance value for the
      device.

      If child node is not present and it is instantiated after device
      discovery (slave device reporting itself present).

      In some cases it may be necessary to describe non-probeable device
      details such as non-standard ways of powering up a device. In such cases,
      child nodes for those devices will be present as slaves of the SLIMbus
      controller.

    properties:
      compatible:
        pattern: "^slim[0-9a-f]+,[0-9a-f]+$"

      reg:
        maxItems: 1
        description: |
          Pair of (device index, instande ID), where::
           - Device index, which uniquely identifies multiple devices within a
             single component.
           - Instance ID, can be used for the cases where multiple devices of
             the same type or class are attached to the bus.

    required:
      - compatible
      - reg

    additionalProperties: true

required:
  - "#address-cells"
  - "#size-cells"

additionalProperties: true

examples:
  - |
    #include <dt-bindings/clock/qcom,gcc-msm8960.h>
    #include <dt-bindings/clock/qcom,lcc-msm8960.h>
    #include <dt-bindings/interrupt-controller/arm-gic.h>

    soc {
        #address-cells = <1>;
        #size-cells = <1>;
        ranges;

        slim@28080000 {
            compatible = "qcom,apq8064-slim", "qcom,slim";
            reg = <0x28080000 0x2000>, <0x80207c 4>;
            reg-names = "ctrl", "slew";
            interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
            clocks = <&lcc SLIMBUS_SRC>, <&lcc AUDIO_SLIMBUS_CLK>;
            clock-names = "iface", "core";
            #address-cells = <2>;
            #size-cells = <0>;

            audio-codec@1,0 {
                compatible = "slim217,60";
                reg = <1 0>;
            };
        };
    };