summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Documentation/devicetree/bindings/rpmsg/imx-rpmsg.txt11
-rw-r--r--arch/arm64/boot/dts/freescale/fsl-imx8qm-lpddr4-arm2.dts14
-rw-r--r--arch/arm64/boot/dts/freescale/fsl-imx8qm-mek.dts28
-rw-r--r--arch/arm64/boot/dts/freescale/fsl-imx8qm.dtsi59
4 files changed, 109 insertions, 3 deletions
diff --git a/Documentation/devicetree/bindings/rpmsg/imx-rpmsg.txt b/Documentation/devicetree/bindings/rpmsg/imx-rpmsg.txt
index 855a00b5d4b3..d51250ad970c 100644
--- a/Documentation/devicetree/bindings/rpmsg/imx-rpmsg.txt
+++ b/Documentation/devicetree/bindings/rpmsg/imx-rpmsg.txt
@@ -3,9 +3,13 @@ i.MX RPMSG platform implementations
Required properties:
- compatible : "fsl,imx7d-rpmsg", "fsl,imx6sx-rpmsg".
"fsl,rpmsg-bus", "simple-bus", "fsl,imx8qxp-rpmsg".
+ "fsl,imx8qm-rpmsg".
- vdev-nums : The number of the remote virtual devices.
- reg : The reserved DDR phisical memory used to store
vring descriptors.
+- multi-core-id: The id number of the remote processors.
+ And it is optional for the legacy platforms, since they
+ only have one remote processors.
=====================================================================
@@ -13,12 +17,15 @@ message unit module for RPMSG
- mu_rpmsg : The message unit module used to do the communications
between the asymmetric cores.
-- compatible : "fsl,imx8-mu", "fsl,imx6sx-mu"
+- compatible : "fsl,imx8-mu", "fsl,imx6sx-mu", "fsl,imx-mu-rpmsg1".
+ Different mu module would be used by the different remote processor.
+ The "fsl, imx6sx-mu" is used by the first remote processor.
+ The "fsl,imx-mu-rpmsg1" is used by the second remote process.
- reg : Should contain MU registers location and length.
- interrupts : interrupt mapping for RPMSG MU IRQ
- interrupt-parent : A single value that points to the interrupt
parent to which the child domain is being mapped.
- Value must be "&intmux_cm40"
+ Value must be "&intmux_cm40" or "&intmux_cm41"
Example:
rpmsg: rpmsg{
diff --git a/arch/arm64/boot/dts/freescale/fsl-imx8qm-lpddr4-arm2.dts b/arch/arm64/boot/dts/freescale/fsl-imx8qm-lpddr4-arm2.dts
index 493ef23d9bb3..9339444ea986 100644
--- a/arch/arm64/boot/dts/freescale/fsl-imx8qm-lpddr4-arm2.dts
+++ b/arch/arm64/boot/dts/freescale/fsl-imx8qm-lpddr4-arm2.dts
@@ -954,3 +954,17 @@
reg = <0x0 0xb8000000 0x0 0x10000>;
status = "okay";
};
+
+&intmux_cm41 {
+ status = "okay";
+};
+
+&rpmsg1{
+ /*
+ * 64K for one rpmsg instance:
+ * --0xb8100000~0xb810ffff: pingpong
+ */
+ vdev-nums = <1>;
+ reg = <0x0 0xb8100000 0x0 0x10000>;
+ status = "okay";
+};
diff --git a/arch/arm64/boot/dts/freescale/fsl-imx8qm-mek.dts b/arch/arm64/boot/dts/freescale/fsl-imx8qm-mek.dts
index 573edc9ce0b7..677105547f01 100644
--- a/arch/arm64/boot/dts/freescale/fsl-imx8qm-mek.dts
+++ b/arch/arm64/boot/dts/freescale/fsl-imx8qm-mek.dts
@@ -424,3 +424,31 @@
epdev_on-supply = <&epdev_on>;
status = "okay";
};
+
+&intmux_cm40 {
+ status = "okay";
+};
+
+&rpmsg{
+ /*
+ * 64K for one rpmsg instance:
+ * --0xb8000000~0xb800ffff: pingpong
+ */
+ vdev-nums = <1>;
+ reg = <0x0 0xb8000000 0x0 0x10000>;
+ status = "okay";
+};
+
+&intmux_cm41 {
+ status = "okay";
+};
+
+&rpmsg1{
+ /*
+ * 64K for one rpmsg instance:
+ * --0xb8100000~0xb810ffff: pingpong
+ */
+ vdev-nums = <1>;
+ reg = <0x0 0xb8100000 0x0 0x10000>;
+ status = "okay";
+};
diff --git a/arch/arm64/boot/dts/freescale/fsl-imx8qm.dtsi b/arch/arm64/boot/dts/freescale/fsl-imx8qm.dtsi
index 963db5781798..ea8a04e8f9f4 100644
--- a/arch/arm64/boot/dts/freescale/fsl-imx8qm.dtsi
+++ b/arch/arm64/boot/dts/freescale/fsl-imx8qm.dtsi
@@ -985,6 +985,26 @@
power-domains =<&pd_cm40>;
};
};
+
+ pd_cm41: PD_CM41 {
+ compatible = "nxp,imx8-pd";
+ reg = <SC_R_LAST>;
+ #power-domain-cells = <0>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ pd_cm41_mu0a0: PD_CM41_MU0A0{
+ reg = <SC_R_M4_1_MU_0A0>;
+ #power-domain-cells = <0>;
+ power-domains =<&pd_cm41>;
+ };
+
+ pd_cm41_intmux: PD_CM41_INTMUX {
+ reg = <SC_R_M4_1_INTMUX>;
+ #power-domain-cells = <0>;
+ power-domains =<&pd_cm41>;
+ };
+ };
};
tsens: thermal-sensor {
@@ -2913,6 +2933,26 @@
status = "disabled";
};
+ intmux_cm41: intmux@3b400000 {
+ compatible = "nxp,imx-intmux";
+ reg = <0x0 0x3b400000 0x0 0x1000>;
+ interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-controller;
+ interrupt-parent = <&gic>;
+ #interrupt-cells = <2>;
+ clocks = <&clk IMX8QM_CM41_IPG_CLK>;
+ clock-names = "ipg";
+ power-domains = <&pd_cm41_intmux>;
+ status = "disabled";
+ };
+
imx_rpmsg: imx_rpmsg {
compatible = "fsl,rpmsg-bus", "simple-bus";
#address-cells = <2>;
@@ -2931,7 +2971,24 @@
};
rpmsg: rpmsg{
- compatible = "fsl,imx8qxp-rpmsg";
+ compatible = "fsl,imx8qm-rpmsg";
+ status = "disabled";
+ };
+
+ mu_rpmsg1: mu_rpmsg1@3b440000 {
+ compatible = "fsl,imx8-mu", "fsl,imx-mu-rpmsg1";
+ reg = <0x0 0x3b440000 0x0 0x10000>;
+ interrupts = <31 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-parent = <&intmux_cm41>;
+ clocks = <&clk IMX8QM_CM41_IPG_CLK>;
+ clock-names = "ipg";
+ power-domains = <&pd_cm41_mu0a0>;
+ status = "okay";
+ };
+
+ rpmsg1: rpmsg1{
+ compatible = "fsl,imx8qm-rpmsg";
+ multi-core-id = <1>;
status = "disabled";
};
};