mbox series

[v7,0/2] Add rpmsg tty driver

Message ID 20200324170407.16470-1-arnaud.pouliquen@st.com (mailing list archive)
Headers show
Series Add rpmsg tty driver | expand

Message

Arnaud POULIQUEN March 24, 2020, 5:04 p.m. UTC
This patch set introduces a TTY console on top of the RPMsg framework which
enables the following use cases:
- Provide a console to communicate easily with the remote processor application.
- Provide an interface to get the remote processor log traces without ring
  buffer limitation.
- Ease the migration from MPU + MCU processors to multi core processors
  (MPU and MCU integrated in one processor) by offering a virtual serial link.

An alternative of this proposed solution would consist in using the virtio
console:
The drawback with that solution is that it requires a specific virtio buffer
(in addition to the one already used for RPMsg) which does not fit with remote
processors with little memory. The proposed solution allows to multiplex the
console with the other rpmsg services, optimizing the memory.

The first patch adds an API to the rpmsg framework ('get max transmission unit')
and the second one is the rpmsg tty driver itself.

Previous revision:
- the patch 1/2 ("rpmsg: core: add API to get MTU) has been discussed in a
  separate thread on remoteproc mailing list:
    https://patchwork.kernel.org/patch/11333509/
- Previous version of the patch 2/2 (tty: add rpmsg driver) available here:
    https://patchwork.kernel.org/cover/11130213/

Main delta vs v6:
 - Pack the rpmsg_tty_ctrl struct.
 - MTU API acked by Suman Anna from Texas Intruments company. 

Arnaud Pouliquen (2):
  rpmsg: core: add API to get MTU
  tty: add rpmsg driver

 Documentation/serial/tty_rpmsg.rst |  45 ++++
 drivers/rpmsg/rpmsg_core.c         |  21 ++
 drivers/rpmsg/rpmsg_internal.h     |   2 +
 drivers/rpmsg/virtio_rpmsg_bus.c   |  10 +
 drivers/tty/Kconfig                |   9 +
 drivers/tty/Makefile               |   1 +
 drivers/tty/rpmsg_tty.c            | 417 +++++++++++++++++++++++++++++
 include/linux/rpmsg.h              |  10 +
 8 files changed, 515 insertions(+)
 create mode 100644 Documentation/serial/tty_rpmsg.rst
 create mode 100644 drivers/tty/rpmsg_tty.c

Comments

Arnaud POULIQUEN July 15, 2020, 4:06 p.m. UTC | #1
On 3/24/20 6:04 PM, Arnaud Pouliquen wrote:
> This patch set introduces a TTY console on top of the RPMsg framework which
> enables the following use cases:
> - Provide a console to communicate easily with the remote processor application.
> - Provide an interface to get the remote processor log traces without ring
>   buffer limitation.
> - Ease the migration from MPU + MCU processors to multi core processors
>   (MPU and MCU integrated in one processor) by offering a virtual serial link.
> 
> An alternative of this proposed solution would consist in using the virtio
> console:
> The drawback with that solution is that it requires a specific virtio buffer
> (in addition to the one already used for RPMsg) which does not fit with remote
> processors with little memory. The proposed solution allows to multiplex the
> console with the other rpmsg services, optimizing the memory.
> 
> The first patch adds an API to the rpmsg framework ('get max transmission unit')
> and the second one is the rpmsg tty driver itself.
> 
> Previous revision:
> - the patch 1/2 ("rpmsg: core: add API to get MTU) has been discussed in a
>   separate thread on remoteproc mailing list:
>     https://patchwork.kernel.org/patch/11333509/
> - Previous version of the patch 2/2 (tty: add rpmsg driver) available here:
>     https://patchwork.kernel.org/cover/11130213/
> 
> Main delta vs v6:
>  - Pack the rpmsg_tty_ctrl struct.
>  - MTU API acked by Suman Anna from Texas Intruments company. 
> 
> Arnaud Pouliquen (2):
>   rpmsg: core: add API to get MTU
>   tty: add rpmsg driver
> 
>  Documentation/serial/tty_rpmsg.rst |  45 ++++
>  drivers/rpmsg/rpmsg_core.c         |  21 ++
>  drivers/rpmsg/rpmsg_internal.h     |   2 +
>  drivers/rpmsg/virtio_rpmsg_bus.c   |  10 +
>  drivers/tty/Kconfig                |   9 +
>  drivers/tty/Makefile               |   1 +
>  drivers/tty/rpmsg_tty.c            | 417 +++++++++++++++++++++++++++++
>  include/linux/rpmsg.h              |  10 +
>  8 files changed, 515 insertions(+)
>  create mode 100644 Documentation/serial/tty_rpmsg.rst
>  create mode 100644 drivers/tty/rpmsg_tty.c
> 

Series put on hold after discussion with Bjorn. First we need to define the interface and mechanism
to allow any service name to be associated with an rpmsg service based on the IOCTL user interface. 
The goal is to allow the Linux application to initiate the link. This work will be done on the 
rpmsg char and then extend to other generic interfaces such as TTY.