All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v8 00/13] Restructure the rpmsg_char driver and introduce rpmsg_ctrl driver
@ 2021-12-07  8:08 Arnaud Pouliquen
  2021-12-07  8:08 ` [PATCH v8 01/13] rpmsg: char: Export eptdev create an destroy functions Arnaud Pouliquen
                   ` (13 more replies)
  0 siblings, 14 replies; 27+ messages in thread
From: Arnaud Pouliquen @ 2021-12-07  8:08 UTC (permalink / raw)
  To: Bjorn Andersson, Mathieu Poirier
  Cc: linux-remoteproc, linux-kernel, linux-stm32, julien.massot,
	arnaud.pouliquen

Update from V7 [1]:
- miscellaneous fixes based on Bjorn Andersson's comments
- add "arm64: defconfig: Config that had RPMSG_CHAR now gets RPMSG_CTRL"
  for 5.16 compatibility

Patchset description:

The current rpmsg_char module implements a /dev/rpmsg_ctrl interface that provides the ability to
instantiate char devices (/dev/rpmsgX) associated with an rpmsg endpoint for communication with the
remote processor.
This implementation fit with QCOM rpmsg backend but not with themagement by chanel implemented in 
the generic rpmsg virtio backend.
This series restructures the rpmsg_char driver to decorrelate the control part from the data part
in order to improve its compatible with the rpmsg virtio backend.

Objective:
- Expose a /dev/rpmsg_ctrlX interface for the application that is no longer dedicated to the
  rpmsg_char but generalized to all rpmsg services. This offers capability to create and destroy
  rpmsg channels from a user's application initiative (using the new RPMSG_CREATE_DEV_IOCTL and
  RPMSG_DESTROY_DEV_IOCTL controls).
  An application will be able to create/establish an rpmsg communication channel to communicate
  with the remote processor, and not only wait the remote processor initiative.
  This is interesting for example to establish a temporary communication link for diagnosis,
  calibration, debugging... or instantiate  new data flows on some user actions.
- Add capability to probe the rpmsg_char device at the initiative of the remote processor
 (rpmsg service announcement mechanism).
  This allows platforms based on the rpmsg virtio backend to create the /dev/rpmgX interface with
  a rpmsg name service announcement.

Subsets:
  - Extract the control part of the char dev and create the rpmsg_ctrl.c file (patches 1 to 6)
  - Introduce the "rpmsg-raw" channel in rpmsg_char(patches 7 to 11)
  - Introduce the RPMSG_CREATE_DEV_IOCTL IOCTL and RPMSG_DESTROY_DEV_IOCTL to instantiate RPMsg
    devices (patch 12)
    The application can then create or release a channel by specifying:
       - the name service of the device to instantiate.   
       - the source address.
       - the destination address.
  - Send a ns announcement to the remote processor on default endpoint creation (patche 13)

This series has be applied and tested on for-next branch 'c4b39a582b9b)[2].

[1] https://lkml.org/lkml/2021/11/8/501
[2] https://git.kernel.org/pub/scm/linux/kernel/git/remoteproc/linux.git

Arnaud Pouliquen (10):
  rpmsg: char: Export eptdev create an destroy functions
  rpmsg: Create the rpmsg class in core instead of in rpmsg char
  rpmsg: Move the rpmsg control device from rpmsg_char to rpmsg_ctrl
  arm: configs: Configs that had RPMSG_CHAR now get RPMSG_CTRL
  RISC-V: configs: Configs that had RPMSG_CHAR now get RPMSG_CTRL
  arm64: defconfig: Config that had RPMSG_CHAR now gets RPMSG_CTRL
  rpmsg: Update rpmsg_chrdev_register_device function
  rpmsg: char: Refactor rpmsg_chrdev_eptdev_create function
  rpmsg: Introduce rpmsg_create_default_ept function
  rpmsg: char: Add possibility to use default endpoint of the rpmsg
    device.
  rpmsg: char: Introduce the "rpmsg-raw" channel
  rpmsg: ctrl: Introduce new RPMSG_CREATE/RELEASE_DEV_IOCTL controls
  rpmsg: core: Send a ns announcement when a default endpoint is created

 arch/arm/configs/qcom_defconfig   |   1 +
 arch/arm64/configs/defconfig      |   1 +
 arch/riscv/configs/defconfig      |   1 +
 arch/riscv/configs/rv32_defconfig |   1 +
 drivers/rpmsg/Kconfig             |   8 +
 drivers/rpmsg/Makefile            |   1 +
 drivers/rpmsg/qcom_glink_native.c |   2 +-
 drivers/rpmsg/qcom_smd.c          |   2 +-
 drivers/rpmsg/rpmsg_char.c        | 246 +++++++++++------------------
 drivers/rpmsg/rpmsg_char.h        |  46 ++++++
 drivers/rpmsg/rpmsg_core.c        |  84 +++++++++-
 drivers/rpmsg/rpmsg_ctrl.c        | 250 ++++++++++++++++++++++++++++++
 drivers/rpmsg/rpmsg_internal.h    |  14 +-
 drivers/rpmsg/virtio_rpmsg_bus.c  |   2 +-
 include/uapi/linux/rpmsg.h        |  10 ++
 15 files changed, 505 insertions(+), 164 deletions(-)
 create mode 100644 drivers/rpmsg/rpmsg_char.h
 create mode 100644 drivers/rpmsg/rpmsg_ctrl.c

-- 
2.17.1


^ permalink raw reply	[flat|nested] 27+ messages in thread

end of thread, other threads:[~2022-01-18 17:27 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-07  8:08 [PATCH v8 00/13] Restructure the rpmsg_char driver and introduce rpmsg_ctrl driver Arnaud Pouliquen
2021-12-07  8:08 ` [PATCH v8 01/13] rpmsg: char: Export eptdev create an destroy functions Arnaud Pouliquen
2022-01-17 22:32   ` Bjorn Andersson
2021-12-07  8:08 ` [PATCH v8 02/13] rpmsg: Create the rpmsg class in core instead of in rpmsg char Arnaud Pouliquen
2021-12-07  8:08 ` [PATCH v8 03/13] rpmsg: Move the rpmsg control device from rpmsg_char to rpmsg_ctrl Arnaud Pouliquen
2022-01-17 22:55   ` Bjorn Andersson
2022-01-18 10:44     ` Arnaud POULIQUEN
2021-12-07  8:08 ` [PATCH v8 04/13] arm: configs: Configs that had RPMSG_CHAR now get RPMSG_CTRL Arnaud Pouliquen
2021-12-07  8:08   ` Arnaud Pouliquen
2021-12-07  8:08 ` [PATCH v8 05/13] RISC-V: " Arnaud Pouliquen
2021-12-07  8:08   ` Arnaud Pouliquen
2021-12-07  8:16   ` Anup Patel
2021-12-07  8:16     ` Anup Patel
2021-12-07  8:08 ` [PATCH v8 06/13] arm64: defconfig: Config that had RPMSG_CHAR now gets RPMSG_CTRL Arnaud Pouliquen
2021-12-07  8:08   ` Arnaud Pouliquen
2021-12-07  8:08 ` [PATCH v8 07/13] rpmsg: Update rpmsg_chrdev_register_device function Arnaud Pouliquen
2021-12-07  8:08 ` [PATCH v8 08/13] rpmsg: char: Refactor rpmsg_chrdev_eptdev_create function Arnaud Pouliquen
2021-12-07  8:08 ` [PATCH v8 09/13] rpmsg: Introduce rpmsg_create_default_ept function Arnaud Pouliquen
2021-12-07  8:08 ` [PATCH v8 10/13] rpmsg: char: Add possibility to use default endpoint of the rpmsg device Arnaud Pouliquen
2021-12-07  8:08 ` [PATCH v8 11/13] rpmsg: char: Introduce the "rpmsg-raw" channel Arnaud Pouliquen
2022-01-17 23:03   ` Bjorn Andersson
2022-01-18 11:04     ` Arnaud POULIQUEN
2022-01-18 14:36       ` Bjorn Andersson
2022-01-18 17:27         ` Arnaud POULIQUEN
2021-12-07  8:08 ` [PATCH v8 12/13] rpmsg: ctrl: Introduce new RPMSG_CREATE/RELEASE_DEV_IOCTL controls Arnaud Pouliquen
2021-12-07  8:08 ` [PATCH v8 13/13] rpmsg: core: Send a ns announcement when a default endpoint is created Arnaud Pouliquen
2022-01-10  8:48 ` [PATCH v8 00/13] Restructure the rpmsg_char driver and introduce rpmsg_ctrl driver Arnaud POULIQUEN

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.