summaryrefslogtreecommitdiff
path: root/Documentation/devicetree/bindings/soc/fsl/fsl,rpmsg.txt
blob: f27e843a8d8220d868453e961c002f8f61977fb8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
i.MX RPMSG platform implementations

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

Required properties:
- compatible: "fsl,imx8qxp-rpmsg", "fsl,imx8mq-rpmsg", "fsl,imx8mm-rpmsg",
  "fsl,imx8qm-rpmsg", "fsl,imx7ulp-rpmsg", "fsl,imx7d-rpmsg",
  "fsl,imx6sx-rpmsg".
- vdev-nums: The number of the remote virtual devices.
- reg: The reserved phisical DDR memory used to store vring descriptors.

Optional properties:
- rpmsg_dma_reserved: The reserved per device dma pool, that used to
  allocate the shared memory buffers from the per device.
  And it is optional for some platforms, since the system dma pool
  is used to allocate the shared memory buffers directly on them.
- mub-partition: The partition ID of muB side, that's optional
  and used on i.mx8qm/8qxp for partition reset. The default
  value is 3 in driver without this property.

=====================================================================
Mailbox used by iMX RPMSG

- mboxes: mailboxes used in the RPMSG transactions.
- mbox-names: names of the mailboxes used in RPMSG.
	- "tx":TX channel with 32bit transmit register and IRQ transmit
	- "rx":RX channel with 32bit receive register and IRQ support
	- "rxdb":RX doorbell channel.

Example:
Rpmsg node in board dts file.
&rpmsg{
	/*
	 * 64K for one rpmsg instance:
	 */
	vdev-nums = <2>;
	reg = <0x0 0x90000000 0x0 0x20000>;
	status = "okay";
};

SOC level dts node definitions:
rpmsg_reserved: rpmsg@0x90000000 {
	no-map;
	reg = <0 0x90000000 0 0x400000>;
};
rpmsg_dma_reserved:rpmsg_dma@0x90400000 {
	compatible = "shared-dma-pool";
	no-map;
	reg = <0 0x90400000 0 0x1C00000>;
};
rpmsg: rpmsg{
	compatible = "fsl,imx8qxp-rpmsg";
	/* up to now, the following channels are used in imx rpmsg
	 * - tx1/rx1: messages channel.
	 * - general interrupt1: remote proc finish re-init rpmsg stack
	 *   when A core is partition reset.
	 */
	mbox-names = "tx", "rx", "rxdb";
	mboxes = <&lsio_mu5 0 1
		  &lsio_mu5 1 1
		  &lsio_mu5 3 1>;
	mub-partition = <3>;
	memory-region = <&rpmsg_dma_reserved>;
	status = "disabled";
};