30 Oct, 2023

2 commits

  • Add the rpmsg tty demo for iMX AMP platforms.
    Use the "echo > /dev/*RPMSG*", after insmod the module.

    Signed-off-by: Richard Zhu
    Acked-by: Fugang Duan
    Signed-off-by: Li Yang
    Signed-off-by: Sherry Sun
    [ Aisheng: cope with tty_operations::write() change ]
    Signed-off-by: Dong Aisheng

    Richard Zhu
     
  • Based on "virtio_rpmsg_bus" driver, This patch-set is used to set up
    the communication mechanism between A core and M core on i.MX AMP SOCs.

    Add the initial imx rpmsg support glue driver and one pingpong demo,
    demonstrated the data transactions between A core and remote M core.
    Distributed framework is used in IMX RPMSG implementation, refer to the
    following requirements:
    - The CAN functions contained in M core and RTOS should be ready and
    complete functional in 50ms after AMP system is turned on.
    - Partition reset. System wouldn't be stalled by the exceptions (e.x
    the reset triggered by the system hang) occurred at the other side.
    And the RPMSG mechanism should be recovered automactilly after the
    partition reset is completed.
    In this scenario, the M core and RTOS would be kicked off by bootloader
    firstly, then A core and Linux would be loaded later. Both M core/RTOS
    and A core/Linux are running independly.

    One physical memory region used to store the vring is mandatory required
    to pre-reserved and well-knowned by both A core and M core

    Signed-off-by: Richard Zhu

    Richard Zhu
     

14 Mar, 2022

1 commit

  • Create the rpmsg_ctrl.c module and move the code related to the
    rpmsg_ctrldev device in this new module.

    Add the dependency between rpmsg_char and rpmsg_ctrl in the
    kconfig file:

    1) RPMSG_CTRL can set as module or built-in if
    RPMSG=y || RPMSG_CHAR=y || RPMSG_CHAR=n

    2) RPMSG_CTRL can not be set as built-in if
    RPMSG=m || RPMSG_CHAR=m

    Note that RPMGH_CHAR and RPMSG_CTRL can be activated separately.
    Therefore, the RPMSG_CTRL configuration must be set for backwards compatibility.

    Signed-off-by: Arnaud Pouliquen
    Signed-off-by: Bjorn Andersson
    Link: https://lore.kernel.org/r/20220124102524.295783-4-arnaud.pouliquen@foss.st.com

    Arnaud Pouliquen
     

25 Nov, 2020

1 commit

  • Make the RPMSG name service announcement a stand alone driver so that it
    can be reused by other subsystems. It is also the first step in making the
    functionatlity transport independent, i.e that is not tied to virtIO.

    Reviewed-by: Guennadi Liakhovetski
    Tested-by: Guennadi Liakhovetski
    Co-developed-by: Mathieu Poirier
    Signed-off-by: Mathieu Poirier
    Co-developed-by: Guennadi Liakhovetski
    Signed-off-by: Guennadi Liakhovetski
    Signed-off-by: Arnaud Pouliquen
    Link: https://lore.kernel.org/r/20201120214245.172963-9-mathieu.poirier@linaro.org
    Signed-off-by: Bjorn Andersson

    Arnaud Pouliquen
     

08 May, 2020

1 commit

  • In all but the very special case of a system with _only_ glink_rpm,
    GLINK is dependent on glink_ssr, so move it to rpmsg and combine it with
    qcom_glink_native in the new qcom_glink kernel module.

    Acked-by: Chris Lew
    Acked-by: Rishabh Bhatnagar
    Link: https://lore.kernel.org/r/20200423003736.2027371-4-bjorn.andersson@linaro.org
    Signed-off-by: Bjorn Andersson

    Bjorn Andersson
     

21 Jan, 2020

1 commit


22 Nov, 2019

1 commit

  • Adjust indentation from spaces to tab (+optional two spaces) as in
    coding style with command like:
    $ sed -e 's/^ /\t/' -i */Kconfig

    Signed-off-by: Krzysztof Kozlowski
    Link: https://lore.kernel.org/r/20191120133945.13938-1-krzk@kernel.org
    Signed-off-by: Bjorn Andersson

    Krzysztof Kozlowski
     

04 Jun, 2018

1 commit


26 Apr, 2018

1 commit


26 Oct, 2017

1 commit

  • Currently, RPMSG_VIRTIO can only be enabled if some other kconfig
    option selects it. This does not allow it to be enabled for
    virtualized systems where Virtio RPMSG is available over Virtio
    MMIO or PCI transport.

    This patch updates RPMSG_VIRTIO kconfig option so that we can
    enable the VirtIO RPMSG driver via menuconfig or defconfig. The
    patch also removes "select RPMSG_VIRTIO" from various remoteproc
    kconfig options because it is now user selectable.

    Signed-off-by: Anup Patel
    Signed-off-by: Bjorn Andersson

    Anup Patel
     

30 Aug, 2017

2 commits


28 Jun, 2017

1 commit

  • A dependency to VIRTUALIZATION has been added to RPMSG_VIRTIO (back
    when it was named RPMSG) in v3.10 kernel in commit 397944df3290
    ("rpmsg: fix kconfig dependencies for VIRTIO") to resolve Kconfig
    warnings due to the inclusion of the virtio configuration file from
    the ARM's KVM config file. The KVM config was fixed properly in the
    subsequent release in commit 8bd4ffd6b3a9 ("ARM: kvm: don't include
    drivers/virtio/Kconfig"). So, drop this unneeded VIRTUALIZATION
    dependency from RPMSG_VIRTIO.

    Signed-off-by: Suman Anna
    Signed-off-by: Bjorn Andersson

    Suman Anna
     

31 May, 2017

1 commit


29 Mar, 2017

1 commit

  • Remove the standalone SMD implementation as we have transitioned the
    client drivers to use the RPMSG based one.

    Also remove all dependencies on QCOM_SMD from Kconfig files, in order to
    keep them selectable in the absence of the removed symbol.

    Acked-by: Andy Gross
    Signed-off-by: Bjorn Andersson
    Signed-off-by: David S. Miller

    Bjorn Andersson
     

19 Jan, 2017

2 commits

  • Without CONFIG_NET, we get a build failure for the new driver:

    ERROR: "skb_queue_tail" [drivers/rpmsg/rpmsg_char.ko] undefined!
    ERROR: "skb_put" [drivers/rpmsg/rpmsg_char.ko] undefined!
    ERROR: "__alloc_skb" [drivers/rpmsg/rpmsg_char.ko] undefined!
    ERROR: "kfree_skb" [drivers/rpmsg/rpmsg_char.ko] undefined!
    ERROR: "skb_dequeue" [drivers/rpmsg/rpmsg_char.ko] undefined!

    This adds a dependency so we don't try to build the broken configuration.

    Fixes: c0cdc19f84a4 ("rpmsg: Driver for user space endpoint interface")
    Signed-off-by: Arnd Bergmann
    Signed-off-by: Bjorn Andersson

    Arnd Bergmann
     
  • This driver allows rpmsg instances to expose access to rpmsg endpoints
    to user space processes. It provides a control interface, allowing
    userspace to export endpoints and an endpoint interface for each exposed
    endpoint.

    The implementation is based on prior art by Texas Instrument, Google,
    PetaLogix and was derived from a FreeRTOS performance statistics driver
    written by Michal Simek.

    The control interface provides a "create endpoint" ioctl, which is fed a
    name, source and destination address. The three values are used to
    create the endpoint, in a backend-specific way, and a rpmsg endpoint
    device is created - with the three parameters are available in sysfs for
    udev usage.

    E.g. to create an endpoint device for one of the Qualcomm SMD channel
    related to DIAG one would issue:

    struct rpmsg_endpoint_info info = { "DIAG_CNTL", 0, 0 };
    int fd = open("/dev/rpmsg_ctrl0", O_RDWR);
    ioctl(fd, RPMSG_CREATE_EPT_IOCTL, &info);

    Each created endpoint device shows up as an individual character device
    in /dev, allowing permission to be controlled on a per-endpoint basis.
    The rpmsg endpoint will be created and destroyed following the opening
    and closing of the endpoint device, allowing rpmsg backends to open and
    close the physical channel, if supported by the wire protocol.

    Cc: Marek Novak
    Cc: Matteo Sartori
    Cc: Michal Simek
    Signed-off-by: Bjorn Andersson

    Bjorn Andersson
     

12 Sep, 2016

1 commit

  • The ARM allmodconfig build broke with the addition of the SMD rpmsg
    driver that conflicts with the driver its replaces:

    WARNING: drivers/soc/qcom/smd: 'qcom_smd_register_edge' exported twice. Previous export was in drivers/rpmsg/qcom_smd.ko
    WARNING: drivers/soc/qcom/smd: 'qcom_smd_unregister_edge' exported twice. Previous export was in drivers/rpmsg/qcom_smd.ko

    There is already a dependency that is meant to avoid the broken
    configuration, but that only prevents the case where at least
    one of the two are built-in, but not if both are modules.

    This changes the dependency to "=n", to ensure that the new driver
    can only be enabled if the other one is completely disabled.

    Signed-off-by: Arnd Bergmann
    Fixes: 53e2822e56c7 ("rpmsg: Introduce Qualcomm SMD backend")
    Signed-off-by: Bjorn Andersson

    Arnd Bergmann
     

09 Sep, 2016

2 commits

  • This introduces a new rpmsg backend for the Qualcomm SMD system,
    allowing communication with various remote processors found in Qualcomm
    platforms. The implementation is based on, and intends to replace,
    drivers/soc/qcom/smd.c with the necessary adaptions for fitting with the
    rpmsg core.

    Based on original work by Sricharan R

    Cc: Sricharan R
    Signed-off-by: Bjorn Andersson

    Bjorn Andersson
     
  • Extract the now indirect rpmsg_create_ept() interface to a separate
    file and start building up a rpmsg core.

    Signed-off-by: Bjorn Andersson

    Bjorn Andersson
     

21 Apr, 2013

1 commit


12 Jan, 2013

1 commit

  • The CONFIG_EXPERIMENTAL config item has not carried much meaning for a
    while now and is almost always enabled by default. As agreed during the
    Linux kernel summit, remove it from any "depends on" lines in Kconfigs.

    CC: Ohad Ben-Cohen
    CC: Rusty Russell
    Signed-off-by: Kees Cook
    Acked-by: Rusty Russell

    Kees Cook
     

28 Sep, 2012

1 commit


23 Feb, 2012

1 commit

  • There isn't any binary change in sight or evidence of any stability
    issue, but as we just begin to get traction we can't rule them out
    completely.

    To be on the safe side, let's mark rpmsg as EXPERIMENTAL, and remove
    it later on after we have several happy users.

    Signed-off-by: Ohad Ben-Cohen
    Cc: Stephen Boyd
    Cc: Rob Clark
    Cc: Mark Grosen
    Cc: Ludovic BARRE

    Ohad Ben-Cohen
     

09 Feb, 2012

2 commits

  • Add a dedicated Kconfig menu for the rpmsg drivers, so they
    don't show up in the main driver menu.

    Signed-off-by: Ohad Ben-Cohen

    Ohad Ben-Cohen
     
  • Add a virtio-based inter-processor communication bus, which enables
    kernel drivers to communicate with entities, running on remote
    processors, over shared memory using a simple messaging protocol.

    Every pair of AMP processors share two vrings, which are used to send
    and receive the messages over shared memory.

    The header of every message sent on the rpmsg bus contains src and dst
    addresses, which make it possible to multiplex several rpmsg channels on
    the same vring.

    Every rpmsg channel is a device on this bus. When a channel is added,
    and an appropriate rpmsg driver is found and probed, it is also assigned
    a local rpmsg address, which is then bound to the driver's callback.

    When inbound messages carry the local address of a bound driver,
    its callback is invoked by the bus.

    This patch provides a kernel interface only; user space interfaces
    will be later exposed by kernel users of this rpmsg bus.

    Designed with Brian Swetland .

    Signed-off-by: Ohad Ben-Cohen
    Acked-by: Rusty Russell (virtio_ids.h)
    Cc: Brian Swetland
    Cc: Arnd Bergmann
    Cc: Grant Likely
    Cc: Tony Lindgren
    Cc: Russell King
    Cc: Andrew Morton
    Cc: Greg KH
    Cc: Stephen Boyd

    Ohad Ben-Cohen