IVC
===

Inter VM Communication provides interfaces to communicate between chip processors through memory channel.
The only channel supported in the current distribution is the echo channel.
The echo channel demonstrates:
- How to establish the IVC channel.
- How IVC communication works in the kernel.
- How IVC communication works in the Freertos code.

The current IVC channel are described in the device tree repository. You must run source_sync.sh to get the dtsi file.
After running source_sync.sh, the file is located at
- For Jetson AGX Xavier:

      Linux_for_Tegra/sources/hardware/nvidia/soc/t19x/kernel-dts/tegra194-soc/tegra194-aon.dtsi

To add/remove or enable/disable the channels in linux kernel, you must update the
device tree entries in the above dtsi file. The following
code shows how to enable the IVC echo channel:
```
                };
        };

+       aon_echo {
+               compatible = "nvidia,tegra186-aon-ivc-echo";
+               mboxes = <&aon 0>;
+               status = "okay";
+       };
+
        aondbg {
                compatible = "nvidia,tegra186-aondbg";
                mboxes = <&aon 1>;
```

Compile the device tree and copy the dtb file to Linux_for_Tegra/dtb/ directory.
Rebuild the device tree and reflash the board by referencing the instructions in the **Building the Kernel** section of the Linux Developer Guide.

From the Linux kernel side, the `/sys/devices/platform/aon_echo/data_channel`
node is used to communicate with AON after enabling echo channel as mentioned above.
Messages sent to AON through this channel are echoed back to CCPLEX.
```
ubuntu@jetson:~$ sudo su -c 'echo t19x > /sys/devices/platform/aon_echo/data_channel'
ubuntu@jetson:~$ cat /sys/devices/platform/aon_echo/data_channel
t19x
ubuntu@jetson:~$
```

The echo channel ivc code in the current firmware resides at:

    rt-aux-cpu-demo-fsp/app/ivc-echo-task.c

And the channel descriptions are at:

    rt-aux-cpu-demo-fsp/platform/ivc-channel-ids.c

@note The communication between CCPLEX and AON using IVC echo channel has been
verified only on Jetson AGX Xavier. This feature is not yet available for AGX Orin.
