^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) SLIM(Serial Low Power Interchip Media Bus) bus
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) SLIMbus is a 2-wire bus, and is used to communicate with peripheral
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) components like audio-codec.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) Required property for SLIMbus controller node:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) - compatible - name of SLIMbus controller
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) Child nodes:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) Every SLIMbus controller node can contain zero or more child nodes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) representing slave devices on the bus. Every SLIMbus slave device is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) uniquely determined by the enumeration address containing 4 fields:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) Manufacturer ID, Product code, Device index, and Instance value for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) the device.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) If child node is not present and it is instantiated after device
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) discovery (slave device reporting itself present).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) In some cases it may be necessary to describe non-probeable device
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) details such as non-standard ways of powering up a device. In
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) such cases, child nodes for those devices will be present as
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) slaves of the SLIMbus controller, as detailed below.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) Required property for SLIMbus child node if it is present:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) - reg - Should be ('Device index', 'Instance ID') from SLIMbus
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) Enumeration Address.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) Device Index Uniquely identifies multiple Devices within
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) a single Component.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) Instance ID Is for the cases where multiple Devices of the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) same type or Class are attached to the bus.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) - compatible -"slimMID,PID". The textual representation of Manufacturer ID,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) Product Code, shall be in lower case hexadecimal with leading
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) zeroes suppressed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) Optional property for SLIMbus child node if it is present:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) - slim-ifc-dev - Should be phandle to SLIMBus Interface device.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) Required for devices which deal with streams.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) SLIMbus example for Qualcomm's slimbus manager component:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) slim@28080000 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) compatible = "qcom,apq8064-slim", "qcom,slim";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) reg = <0x28080000 0x2000>,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) interrupts = <0 33 0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) clocks = <&lcc SLIMBUS_SRC>, <&lcc AUDIO_SLIMBUS_CLK>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) clock-names = "iface", "core";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) #address-cells = <2>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) #size-cell = <0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) codec_ifd: ifd@0,0{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) compatible = "slim217,60";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) reg = <0 0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) codec: wcd9310@1,0{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) compatible = "slim217,60";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) reg = <1 0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) slim-ifc-dev = <&codec_ifd>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) };