18c2ecf20Sopenharmony_ciQualcomm Shared Memory Driver (SMD) binding 28c2ecf20Sopenharmony_ci 38c2ecf20Sopenharmony_ciThis binding describes the Qualcomm Shared Memory Driver, a fifo based 48c2ecf20Sopenharmony_cicommunication channel for sending data between the various subsystems in 58c2ecf20Sopenharmony_ciQualcomm platforms. 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_ci- compatible: 88c2ecf20Sopenharmony_ci Usage: required 98c2ecf20Sopenharmony_ci Value type: <stringlist> 108c2ecf20Sopenharmony_ci Definition: must be "qcom,smd" 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_ci= EDGES 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ciEach subnode of the SMD node represents a remote subsystem or a remote 158c2ecf20Sopenharmony_ciprocessor of some sort - or in SMD language an "edge". The name of the edges 168c2ecf20Sopenharmony_ciare not important. 178c2ecf20Sopenharmony_ciThe edge is described by the following properties: 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_ci- interrupts: 208c2ecf20Sopenharmony_ci Usage: required 218c2ecf20Sopenharmony_ci Value type: <prop-encoded-array> 228c2ecf20Sopenharmony_ci Definition: should specify the IRQ used by the remote processor to 238c2ecf20Sopenharmony_ci signal this processor about communication related updates 248c2ecf20Sopenharmony_ci 258c2ecf20Sopenharmony_ci- mboxes: 268c2ecf20Sopenharmony_ci Usage: required 278c2ecf20Sopenharmony_ci Value type: <prop-encoded-array> 288c2ecf20Sopenharmony_ci Definition: reference to the associated doorbell in APCS, as described 298c2ecf20Sopenharmony_ci in mailbox/mailbox.txt 308c2ecf20Sopenharmony_ci 318c2ecf20Sopenharmony_ci- qcom,ipc: 328c2ecf20Sopenharmony_ci Usage: required, unless mboxes is specified 338c2ecf20Sopenharmony_ci Value type: <prop-encoded-array> 348c2ecf20Sopenharmony_ci Definition: three entries specifying the outgoing ipc bit used for 358c2ecf20Sopenharmony_ci signaling the remote processor: 368c2ecf20Sopenharmony_ci - phandle to a syscon node representing the apcs registers 378c2ecf20Sopenharmony_ci - u32 representing offset to the register within the syscon 388c2ecf20Sopenharmony_ci - u32 representing the ipc bit within the register 398c2ecf20Sopenharmony_ci 408c2ecf20Sopenharmony_ci- qcom,smd-edge: 418c2ecf20Sopenharmony_ci Usage: required 428c2ecf20Sopenharmony_ci Value type: <u32> 438c2ecf20Sopenharmony_ci Definition: the identifier of the remote processor in the smd channel 448c2ecf20Sopenharmony_ci allocation table 458c2ecf20Sopenharmony_ci 468c2ecf20Sopenharmony_ci- qcom,remote-pid: 478c2ecf20Sopenharmony_ci Usage: optional 488c2ecf20Sopenharmony_ci Value type: <u32> 498c2ecf20Sopenharmony_ci Definition: the identifier for the remote processor as known by the rest 508c2ecf20Sopenharmony_ci of the system. 518c2ecf20Sopenharmony_ci 528c2ecf20Sopenharmony_ci- label: 538c2ecf20Sopenharmony_ci Usage: optional 548c2ecf20Sopenharmony_ci Value type: <string> 558c2ecf20Sopenharmony_ci Definition: name of the edge, used for debugging and identification 568c2ecf20Sopenharmony_ci purposes. The node name will be used if this is not 578c2ecf20Sopenharmony_ci present. 588c2ecf20Sopenharmony_ci 598c2ecf20Sopenharmony_ci= SMD DEVICES 608c2ecf20Sopenharmony_ci 618c2ecf20Sopenharmony_ciIn turn, subnodes of the "edges" represent devices tied to SMD channels on that 628c2ecf20Sopenharmony_ci"edge". The names of the devices are not important. The properties of these 638c2ecf20Sopenharmony_cinodes are defined by the individual bindings for the SMD devices - but must 648c2ecf20Sopenharmony_cicontain the following property: 658c2ecf20Sopenharmony_ci 668c2ecf20Sopenharmony_ci- qcom,smd-channels: 678c2ecf20Sopenharmony_ci Usage: required 688c2ecf20Sopenharmony_ci Value type: <stringlist> 698c2ecf20Sopenharmony_ci Definition: a list of channels tied to this device, used for matching 708c2ecf20Sopenharmony_ci the device to channels 718c2ecf20Sopenharmony_ci 728c2ecf20Sopenharmony_ci= EXAMPLE 738c2ecf20Sopenharmony_ci 748c2ecf20Sopenharmony_ciThe following example represents a smd node, with one edge representing the 758c2ecf20Sopenharmony_ci"rpm" subsystem. For the "rpm" subsystem we have a device tied to the 768c2ecf20Sopenharmony_ci"rpm_request" channel. 778c2ecf20Sopenharmony_ci 788c2ecf20Sopenharmony_ci apcs: syscon@f9011000 { 798c2ecf20Sopenharmony_ci compatible = "syscon"; 808c2ecf20Sopenharmony_ci reg = <0xf9011000 0x1000>; 818c2ecf20Sopenharmony_ci }; 828c2ecf20Sopenharmony_ci 838c2ecf20Sopenharmony_ci smd { 848c2ecf20Sopenharmony_ci compatible = "qcom,smd"; 858c2ecf20Sopenharmony_ci 868c2ecf20Sopenharmony_ci rpm { 878c2ecf20Sopenharmony_ci interrupts = <0 168 1>; 888c2ecf20Sopenharmony_ci qcom,ipc = <&apcs 8 0>; 898c2ecf20Sopenharmony_ci qcom,smd-edge = <15>; 908c2ecf20Sopenharmony_ci 918c2ecf20Sopenharmony_ci rpm_requests { 928c2ecf20Sopenharmony_ci compatible = "qcom,rpm-msm8974"; 938c2ecf20Sopenharmony_ci qcom,smd-channels = "rpm_requests"; 948c2ecf20Sopenharmony_ci 958c2ecf20Sopenharmony_ci ... 968c2ecf20Sopenharmony_ci }; 978c2ecf20Sopenharmony_ci }; 988c2ecf20Sopenharmony_ci }; 99