25 Nov, 2019
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 -
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 coreSigned-off-by: Richard Zhu
02 Nov, 2017
1 commit
-
Many source files in the tree are missing licensing information, which
makes it harder for compliance tools to determine the correct license.By default all files without license information are under the default
license of the kernel, which is GPL version 2.Update the files which contain no license information with the 'GPL-2.0'
SPDX license identifier. The SPDX identifier is a legally binding
shorthand, which can be used instead of the full boiler plate text.This patch is based on work done by Thomas Gleixner and Kate Stewart and
Philippe Ombredanne.How this work was done:
Patches were generated and checked against linux-4.14-rc6 for a subset of
the use cases:
- file had no licensing information it it.
- file was a */uapi/* one with no licensing information in it,
- file was a */uapi/* one with existing licensing information,Further patches will be generated in subsequent months to fix up cases
where non-standard license headers were used, and references to license
had to be inferred by heuristics based on keywords.The analysis to determine which SPDX License Identifier to be applied to
a file was done in a spreadsheet of side by side results from of the
output of two independent scanners (ScanCode & Windriver) producing SPDX
tag:value files created by Philippe Ombredanne. Philippe prepared the
base worksheet, and did an initial spot review of a few 1000 files.The 4.13 kernel was the starting point of the analysis with 60,537 files
assessed. Kate Stewart did a file by file comparison of the scanner
results in the spreadsheet to determine which SPDX license identifier(s)
to be applied to the file. She confirmed any determination that was not
immediately clear with lawyers working with the Linux Foundation.Criteria used to select files for SPDX license identifier tagging was:
- Files considered eligible had to be source code files.
- Make and config files were included as candidates if they contained >5
lines of source
- File already had some variant of a license header in it (even if
Reviewed-by: Philippe Ombredanne
Reviewed-by: Thomas Gleixner
Signed-off-by: Greg Kroah-Hartman
30 Aug, 2017
2 commits
-
The glink protocol supports different types of transports (shared
memory). With the core protocol remaining the same, the way the
transport's memory is probed and accessed is different. So add support
for glink's smem based transports.Adding a new smem transport register function and the fifo accessors for
the same.Acked-by: Arun Kumar Neelakantam
Signed-off-by: Sricharan R
Signed-off-by: Bjorn Andersson -
Move the common part of glink core protocol implementation to
glink_native.c that can be shared with the smem based glink
transport in the later patches.Acked-by: Arun Kumar Neelakantam
Signed-off-by: Sricharan R
Signed-off-by: Bjorn Andersson
31 May, 2017
1 commit
-
This introduces a basic driver for communicating over "native glink"
with the RPM found in Qualcomm platforms.Signed-off-by: Bjorn Andersson
19 Jan, 2017
1 commit
-
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
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 -
Extract the now indirect rpmsg_create_ept() interface to a separate
file and start building up a rpmsg core.Signed-off-by: Bjorn Andersson
09 Feb, 2012
1 commit
-
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