1Qualcomm Shared Memory Driver (SMD) binding 2 3This binding describes the Qualcomm Shared Memory Driver, a fifo based 4communication channel for sending data between the various subsystems in 5Qualcomm platforms. 6 7- compatible: 8 Usage: required 9 Value type: <stringlist> 10 Definition: must be "qcom,smd" 11 12= EDGES 13 14Each subnode of the SMD node represents a remote subsystem or a remote 15processor of some sort - or in SMD language an "edge". The name of the edges 16are not important. 17The edge is described by the following properties: 18 19- interrupts: 20 Usage: required 21 Value type: <prop-encoded-array> 22 Definition: should specify the IRQ used by the remote processor to 23 signal this processor about communication related updates 24 25- qcom,ipc: 26 Usage: required 27 Value type: <prop-encoded-array> 28 Definition: three entries specifying the outgoing ipc bit used for 29 signaling the remote processor: 30 - phandle to a syscon node representing the apcs registers 31 - u32 representing offset to the register within the syscon 32 - u32 representing the ipc bit within the register 33 34- qcom,smd-edge: 35 Usage: required 36 Value type: <u32> 37 Definition: the identifier of the remote processor in the smd channel 38 allocation table 39 40- qcom,remote-pid: 41 Usage: optional 42 Value type: <u32> 43 Definition: the identifier for the remote processor as known by the rest 44 of the system. 45 46= SMD DEVICES 47 48In turn, subnodes of the "edges" represent devices tied to SMD channels on that 49"edge". The names of the devices are not important. The properties of these 50nodes are defined by the individual bindings for the SMD devices - but must 51contain the following property: 52 53- qcom,smd-channels: 54 Usage: required 55 Value type: <stringlist> 56 Definition: a list of channels tied to this device, used for matching 57 the device to channels 58 59= EXAMPLE 60 61The following example represents a smd node, with one edge representing the 62"rpm" subsystem. For the "rpm" subsystem we have a device tied to the 63"rpm_request" channel. 64 65 apcs: syscon@f9011000 { 66 compatible = "syscon"; 67 reg = <0xf9011000 0x1000>; 68 }; 69 70 smd { 71 compatible = "qcom,smd"; 72 73 rpm { 74 interrupts = <0 168 1>; 75 qcom,ipc = <&apcs 8 0>; 76 qcom,smd-edge = <15>; 77 78 rpm_requests { 79 compatible = "qcom,rpm-msm8974"; 80 qcom,smd-channels = "rpm_requests"; 81 82 ... 83 }; 84 }; 85 }; 86