qcom,smd.txt 2.7 KB

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