mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
2.7 KiB
98 lines
2.7 KiB
Qualcomm Shared Memory Driver (SMD) binding |
|
|
|
This binding describes the Qualcomm Shared Memory Driver, a fifo based |
|
communication channel for sending data between the various subsystems in |
|
Qualcomm platforms. |
|
|
|
- compatible: |
|
Usage: required |
|
Value type: <stringlist> |
|
Definition: must be "qcom,smd" |
|
|
|
= EDGES |
|
|
|
Each subnode of the SMD node represents a remote subsystem or a remote |
|
processor of some sort - or in SMD language an "edge". The name of the edges |
|
are not important. |
|
The edge is described by the following properties: |
|
|
|
- interrupts: |
|
Usage: required |
|
Value type: <prop-encoded-array> |
|
Definition: should specify the IRQ used by the remote processor to |
|
signal this processor about communication related updates |
|
|
|
- mboxes: |
|
Usage: required |
|
Value type: <prop-encoded-array> |
|
Definition: reference to the associated doorbell in APCS, as described |
|
in mailbox/mailbox.txt |
|
|
|
- qcom,ipc: |
|
Usage: required, unless mboxes is specified |
|
Value type: <prop-encoded-array> |
|
Definition: three entries specifying the outgoing ipc bit used for |
|
signaling the remote processor: |
|
- phandle to a syscon node representing the apcs registers |
|
- u32 representing offset to the register within the syscon |
|
- u32 representing the ipc bit within the register |
|
|
|
- qcom,smd-edge: |
|
Usage: required |
|
Value type: <u32> |
|
Definition: the identifier of the remote processor in the smd channel |
|
allocation table |
|
|
|
- qcom,remote-pid: |
|
Usage: optional |
|
Value type: <u32> |
|
Definition: the identifier for the remote processor as known by the rest |
|
of the system. |
|
|
|
- label: |
|
Usage: optional |
|
Value type: <string> |
|
Definition: name of the edge, used for debugging and identification |
|
purposes. The node name will be used if this is not |
|
present. |
|
|
|
= SMD DEVICES |
|
|
|
In turn, subnodes of the "edges" represent devices tied to SMD channels on that |
|
"edge". The names of the devices are not important. The properties of these |
|
nodes are defined by the individual bindings for the SMD devices - but must |
|
contain the following property: |
|
|
|
- qcom,smd-channels: |
|
Usage: required |
|
Value type: <stringlist> |
|
Definition: a list of channels tied to this device, used for matching |
|
the device to channels |
|
|
|
= EXAMPLE |
|
|
|
The following example represents a smd node, with one edge representing the |
|
"rpm" subsystem. For the "rpm" subsystem we have a device tied to the |
|
"rpm_request" channel. |
|
|
|
apcs: syscon@f9011000 { |
|
compatible = "syscon"; |
|
reg = <0xf9011000 0x1000>; |
|
}; |
|
|
|
smd { |
|
compatible = "qcom,smd"; |
|
|
|
rpm { |
|
interrupts = <0 168 1>; |
|
qcom,ipc = <&apcs 8 0>; |
|
qcom,smd-edge = <15>; |
|
|
|
rpm_requests { |
|
compatible = "qcom,rpm-msm8974"; |
|
qcom,smd-channels = "rpm_requests"; |
|
|
|
... |
|
}; |
|
}; |
|
};
|
|
|