drivers/rpmsg: add rpmsg router support

Rpmsg Router is new rpmsg transport layer, it can router the rpmsg
messages to a cpu that not directly connected with local cpu by Rpmsg,
For the rpmsg services, it is as if there is a real Rpmsg Channel between
the local cpu and the remote cpu.

For examples, there are three cpus: ap, cp and audio.
ap and cp, ap and audio has share memory and be connected by Rpmsg VirtIO,
so ap and cp, ap and audio can communicate with each other by Rpmsg, but
cp can not communicate with audio direclty.

[cp] <-- rpmsg virtio --> [ap] <-- rpmsg virtio --> [audio]

With rpmsg router, the cp can communicate with audip by Rpmsg dereclty because
the router in ap will forward the rpmsg message from cp/audio to audio/cp, like
this:

 +<----- rpmsg router --> hub  <-- rpmsg router ------>+
 |                         |                           |
[cp] <-- rpmsg virtio --> [ap] <-- rpmsg virtio --> [audio]

Signed-off-by: yintao <yintao@xiaomi.com>
This commit is contained in:
yintao
2024-04-14 13:17:05 +08:00
committed by Xiang Xiao
parent a662c7aab3
commit 7c933874e8
7 changed files with 1340 additions and 0 deletions
+7
View File
@@ -23,6 +23,13 @@ config RPMSG_PING
endif # RPMSG
config RPMSG_ROUTER
bool "rpmsg router support"
default n
---help---
Rpmsg router driver for enabling communication
without physical channels.
config RPMSG_PORT
bool
default n