tegrakernel/kernel/nvidia/Documentation/devicetree/bindings/platform/tegra/tegra-ivc-channel.txt

57 lines
1.9 KiB
Plaintext

NVIDIA Tegra IVC channel bindings
Each IVC channel represents the unique communication protocol defined
between kernel running on CCPLEX CPUs and remote CPU core. Each IVC
channel has two memory buffers, one for each direction. The RX buffer
is for messages sent by the remote CPU, the TX channel for
messages sent to the remote CPU.
Both IPC memory buffers are have two headers followed by data
frames. The first write header is updated only by the producer and the
second read header is updated only by the consumer. The header and
frame sizes are multiples of 64-byte cache lines.
== IVC channel top-level node ==
List of IVC channels implemented by remote core to talk to CCPLEX.
The top-level node defines the AST region shared by IVC channels below
it.
Required properties:
- #address-cells: Number of address cells in each subnode.
Must be set to <1>.
- #size-cells: Number of size cells in each subnode.
Must be set to <0>.
== IVC channel sub nodes ==
Each IVC channel implemented by the remote CPU must be represented as
a separate child node within the top-level node.
Required properties:
- compatible: Should represent the protocol to be used on this IVC channel.
See other binding documents in this directory for potential values.
For example:
"nvidia,tegra186-ivc-protocol-echo" for ivc echo test channel.
- reg: Address of the rx and tx buffers, respectively, inside the IVC region.
Must be a multiple of 64.
- nvidia,frame-size: Size of the data frame. Must be a multiple of 64.
- nvidia,frame-count: Number of frames in rx or tx buffers.
Optional properties:
- reg-names: Names of the rx and tx buffers, respectively.
Example:
ivc-channels {
#address-cells = <1>;
#size-cells = <0>;
echo@0 {
compatible = "nvidia,tegra186-ivc-protocol-echo";
reg = <0x0000>, <0x0480>;
reg-names = "rx-echo", "tx-echo";
nvidia,frame-size = <64>;
nvidia,frame-count = <16>;
};
}