qcom,smp2p.txt 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. Qualcomm Shared Memory Point 2 Point binding
  2. The Shared Memory Point to Point (SMP2P) protocol facilitates communication of
  3. a single 32-bit value between two processors. Each value has a single writer
  4. (the local side) and a single reader (the remote side). Values are uniquely
  5. identified in the system by the directed edge (local processor ID to remote
  6. processor ID) and a string identifier.
  7. - compatible:
  8. Usage: required
  9. Value type: <string>
  10. Definition: must be one of:
  11. "qcom,smp2p"
  12. - interrupts:
  13. Usage: required
  14. Value type: <prop-encoded-array>
  15. Definition: one entry specifying the smp2p notification interrupt
  16. - mboxes:
  17. Usage: required
  18. Value type: <prop-encoded-array>
  19. Definition: reference to the associated doorbell in APCS, as described
  20. in mailbox/mailbox.txt
  21. - qcom,ipc:
  22. Usage: required, unless mboxes is specified
  23. Value type: <prop-encoded-array>
  24. Definition: three entries specifying the outgoing ipc bit used for
  25. signaling the remote end of the smp2p edge:
  26. - phandle to a syscon node representing the apcs registers
  27. - u32 representing offset to the register within the syscon
  28. - u32 representing the ipc bit within the register
  29. - qcom,smem:
  30. Usage: required
  31. Value type: <u32 array>
  32. Definition: two identifiers of the inbound and outbound smem items used
  33. for this edge
  34. - qcom,local-pid:
  35. Usage: required
  36. Value type: <u32>
  37. Definition: specifies the identfier of the local endpoint of this edge
  38. - qcom,remote-pid:
  39. Usage: required
  40. Value type: <u32>
  41. Definition: specifies the identfier of the remote endpoint of this edge
  42. = SUBNODES
  43. Each SMP2P pair contain a set of inbound and outbound entries, these are
  44. described in subnodes of the smp2p device node. The node names are not
  45. important.
  46. - qcom,entry-name:
  47. Usage: required
  48. Value type: <string>
  49. Definition: specifies the name of this entry, for inbound entries this
  50. will be used to match against the remotely allocated entry
  51. and for outbound entries this name is used for allocating
  52. entries
  53. - interrupt-controller:
  54. Usage: required for incoming entries
  55. Value type: <empty>
  56. Definition: marks the entry as inbound; the node should be specified
  57. as a two cell interrupt-controller as defined in
  58. "../interrupt-controller/interrupts.txt"
  59. If not specified this node will denote the outgoing entry
  60. - #interrupt-cells:
  61. Usage: required for incoming entries
  62. Value type: <u32>
  63. Definition: must be 2 - denoting the bit in the entry and IRQ flags
  64. - #qcom,smem-state-cells:
  65. Usage: required for outgoing entries
  66. Value type: <u32>
  67. Definition: must be 1 - denoting the bit in the entry
  68. = EXAMPLE
  69. The following example shows the SMP2P setup with the wireless processor,
  70. defined from the 8974 apps processor's point-of-view. It encompasses one
  71. inbound and one outbound entry:
  72. wcnss-smp2p {
  73. compatible = "qcom,smp2p";
  74. qcom,smem = <431>, <451>;
  75. interrupts = <0 143 1>;
  76. qcom,ipc = <&apcs 8 18>;
  77. qcom,local-pid = <0>;
  78. qcom,remote-pid = <4>;
  79. wcnss_smp2p_out: master-kernel {
  80. qcom,entry-name = "master-kernel";
  81. #qcom,smem-state-cells = <1>;
  82. };
  83. wcnss_smp2p_in: slave-kernel {
  84. qcom,entry-name = "slave-kernel";
  85. interrupt-controller;
  86. #interrupt-cells = <2>;
  87. };
  88. };