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- mboxes: 26 Usage: required 27 Value type: <prop-encoded-array> 28 Definition: reference to the associated doorbell in APCS, as described 29 in mailbox/mailbox.txt 30 31- qcom,ipc: 32 Usage: required, unless mboxes is specified 33 Value type: <prop-encoded-array> 34 Definition: three entries specifying the outgoing ipc bit used for 35 signaling the remote processor: 36 - phandle to a syscon node representing the apcs registers 37 - u32 representing offset to the register within the syscon 38 - u32 representing the ipc bit within the register 39 40- qcom,smd-edge: 41 Usage: required 42 Value type: <u32> 43 Definition: the identifier of the remote processor in the smd channel 44 allocation table 45 46- qcom,remote-pid: 47 Usage: optional 48 Value type: <u32> 49 Definition: the identifier for the remote processor as known by the rest 50 of the system. 51 52- label: 53 Usage: optional 54 Value type: <string> 55 Definition: name of the edge, used for debugging and identification 56 purposes. The node name will be used if this is not 57 present. 58 59= SMD DEVICES 60 61In turn, subnodes of the "edges" represent devices tied to SMD channels on that 62"edge". The names of the devices are not important. The properties of these 63nodes are defined by the individual bindings for the SMD devices - but must 64contain the following property: 65 66- qcom,smd-channels: 67 Usage: required 68 Value type: <stringlist> 69 Definition: a list of channels tied to this device, used for matching 70 the device to channels 71 72= EXAMPLE 73 74The following example represents a smd node, with one edge representing the 75"rpm" subsystem. For the "rpm" subsystem we have a device tied to the 76"rpm_request" channel. 77 78 apcs: syscon@f9011000 { 79 compatible = "syscon"; 80 reg = <0xf9011000 0x1000>; 81 }; 82 83 smd { 84 compatible = "qcom,smd"; 85 86 rpm { 87 interrupts = <0 168 1>; 88 qcom,ipc = <&apcs 8 0>; 89 qcom,smd-edge = <15>; 90 91 rpm_requests { 92 compatible = "qcom,rpm-msm8974"; 93 qcom,smd-channels = "rpm_requests"; 94 95 ... 96 }; 97 }; 98 }; 99