nuttx/drivers/rpmsg/Kconfig
yintao 7c933874e8 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>
2024-09-17 01:55:51 +08:00

118 lines
2.6 KiB
Plaintext

#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#
config RPMSG
bool
default n
select OPENAMP
if RPMSG
config RPMSG_LOCAL_CPUNAME
string "Rpmsg Local Cpuname"
default LIBC_HOSTNAME
config RPMSG_PING
bool "rpmsg ping support"
default n
---help---
This is for debugging & profiling, create ping rpmsg
channel, user can use it to get send/recv speed & latency.
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
select RPMSG
---help---
Rpmsg port transport layer used for cross chip communication.
config RPMSG_PORT_SPI
bool "Rpmsg SPI Port Driver Support"
default n
select RPMSG_PORT
---help---
Rpmsg SPI Port driver used for cross chip communication.
if RPMSG_PORT_SPI
config RPMSG_PORT_SPI_THREAD_PRIORITY
int "Rpmsg SPI Port Thread Priority"
default 224
config RPMSG_PORT_SPI_THREAD_STACKSIZE
int "Rpmsg SPI Port Stack Size"
default DEFAULT_TASK_STACKSIZE
config RPMSG_PORT_SPI_CRC
bool "Rpmsg SPI Port Use CRC Check"
default n
config RPMSG_PORT_SPI_RX_THRESHOLD
int "Rpmsg SPI Port Rx Buffer Threshold"
default 50
range 0 100
endif # RPMSG_PORT_SPI
config RPMSG_VIRTIO
bool "rpmsg virtio transport support"
default n
select RPMSG
if RPMSG_VIRTIO
config RPMSG_VIRTIO_PRIORITY
int "rpmsg virtio rx thread priority"
default 224
config RPMSG_VIRTIO_STACKSIZE
int "rpmsg virtio rx thread stack size"
default DEFAULT_TASK_STACKSIZE
config RPMSG_VIRTIO_IVSHMEM
bool "rpmsg virtio ivshmem support"
default n
depends on PCI_IVSHMEM
---help---
This is rpmsg virtio driver based on pci ivshmem.
if RPMSG_VIRTIO_IVSHMEM
config RPMSG_VIRTIO_IVSHMEM_NAME
string "rpmsg virtio ivshmem name"
---help---
Using this config to custom the rpmsg virtio ivshmem id, cpuname and role,
using ";" to split the names.
For example, if RPMSG_VIRTIO_IVSHMEM_CPUNAME = "0:cpu1:m;1:cpu2:s" and pass
two ivshmem devices to the qemu, we will get two rpmsg virtio ivshmem drivers
with remote cpu ids: "0","1", names: "cpu1", "cpu2", and roles: "master", "slave"
config RPMSG_VIRTIO_IVSHMEM_BUFFSIZE
int "rpmsg virtio ivshmem rpmsg buffer size"
default 2048
---help---
The rpmsg buffer size in share memory, the RX and TX buffer size
are same for now.
config RPMSG_VIRTIO_IVSHMEM_BUFFNUM
int "rpmsg virtio ivshmem rpmsg buffer number"
default 8
---help---
The rpmsg virtio buffer number in share memory, the RX and TX buffer number
are same for now.
endif
endif