summaryrefslogtreecommitdiff
path: root/arch/arm64/boot/dts
diff options
context:
space:
mode:
authorPeng Fan <peng.fan@nxp.com>2018-08-06 17:32:18 +0800
committerLeonard Crestez <leonard.crestez@nxp.com>2018-08-24 12:41:33 +0300
commit751a8b5f46c63b8cc05899976039f8fb89b1162d (patch)
treea32b7a78d2c7c63bd7694a0b3997bd8fe087a060 /arch/arm64/boot/dts
parent45037de2d4d614dc68f5daf5d9fba033dd10adff (diff)
MLK-19130-3 ARM64: dts: add jailhouse root and inmate dts for i.MX8MM EVK
Add root and inmate dts. The core [0-1] for root, core[2-3] for inmate. Disabled gpc busfreq. Not support low power features for dual Linux case now. The 2nd Linux use SDHC3 and UART2, let 1st Linux configure pin and clock for the two devices. The memory used by 2nd Linux are reserved in the 1st Linux dts. Signed-off-by: Peng Fan <peng.fan@nxp.com>
Diffstat (limited to 'arch/arm64/boot/dts')
-rw-r--r--arch/arm64/boot/dts/freescale/Makefile4
-rw-r--r--arch/arm64/boot/dts/freescale/fsl-imx8mm-evk-inmate.dts224
-rw-r--r--arch/arm64/boot/dts/freescale/fsl-imx8mm-evk-root.dts109
3 files changed, 336 insertions, 1 deletions
diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/freescale/Makefile
index 9854d9f8fa53..0ebdc4da8239 100644
--- a/arch/arm64/boot/dts/freescale/Makefile
+++ b/arch/arm64/boot/dts/freescale/Makefile
@@ -92,7 +92,9 @@ dtb-$(CONFIG_ARCH_FSL_IMX8MM) += fsl-imx8mm-evk.dtb \
fsl-imx8mm-evk-ak5558.dtb \
fsl-imx8mm-evk-audio-tdm.dtb \
fsl-imx8mm-ddr4-val.dtb \
- fsl-imx8mm-evk-rm67191.dtb
+ fsl-imx8mm-evk-rm67191.dtb \
+ fsl-imx8mm-evk-root.dtb \
+ fsl-imx8mm-evk-inmate.dtb
always := $(dtb-y)
subdir-y := $(dts-dirs)
clean-files := *.dtb
diff --git a/arch/arm64/boot/dts/freescale/fsl-imx8mm-evk-inmate.dts b/arch/arm64/boot/dts/freescale/fsl-imx8mm-evk-inmate.dts
new file mode 100644
index 000000000000..a6eba06f3503
--- /dev/null
+++ b/arch/arm64/boot/dts/freescale/fsl-imx8mm-evk-inmate.dts
@@ -0,0 +1,224 @@
+/*
+ * Copyright 2018 NXP
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+/dts-v1/;
+
+#include "fsl-imx8mm.dtsi"
+
+/ {
+ model = "Freescale i.MX8MM EVK";
+ compatible = "fsl,imx8mm-evk", "fsl,imx8mm";
+ interrupt-parent = <&gic>;
+
+ timer {
+ compatible = "arm,armv8-timer";
+ interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>, /* Physical Secure */
+ <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>, /* Physical Non-Secure */
+ <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>, /* Virtual */
+ <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>; /* Hypervisor */
+ clock-frequency = <8333333>;
+ };
+
+ clocks {
+ clk_dummy: clock@7 {
+ compatible = "fixed-clock";
+ reg = <7>;
+ #clock-cells = <0>;
+ clock-frequency = <0>;
+ clock-output-names = "clk_dummy";
+ };
+
+ /* The clocks are configured by 1st OS */
+ clk_200m: clock@8 {
+ compatible = "fixed-clock";
+ reg = <8>;
+ #clock-cells = <0>;
+ clock-frequency = <200000000>;
+ clock-output-names = "200m";
+ };
+ clk_266m: clock@9 {
+ compatible = "fixed-clock";
+ reg = <9>;
+ #clock-cells = <0>;
+ clock-frequency = <266000000>;
+ clock-output-names = "266m";
+ };
+ clk_80m: clock@10 {
+ compatible = "fixed-clock";
+ reg = <10>;
+ #clock-cells = <0>;
+ clock-frequency = <80000000>;
+ clock-output-names = "80m";
+ };
+ };
+
+ display-subsystem {
+ /delete-property/ compatible;
+ };
+
+ pci@bfb00000 {
+ compatible = "pci-host-ecam-generic";
+ device_type = "pci";
+ bus-range = <0 0>;
+ #address-cells = <3>;
+ #size-cells = <2>;
+ #interrupt-cells = <1>;
+ interrupt-map-mask = <0 0 0 7>;
+ interrupt-map = <0 0 0 1 &gic GIC_SPI 76 IRQ_TYPE_EDGE_RISING>;
+ reg = <0x0 0x7fb00000 0x0 0x100000>;
+ ranges = <0x02000000 0x00 0x10000000 0x0 0x10000000 0x00 0x10000>;
+ };
+};
+
+/delete-node/ &{/memory@40000000};
+/delete-node/ &{/reserved-memory};
+/delete-node/ &{/busfreq};
+/delete-node/ &ddr_pmu0;
+
+&hsio_pd {
+ status = "disabled";
+};
+
+&pcie0_pd {
+ status = "disabled";
+};
+
+&usb_otg1_pd {
+ status = "disabled";
+};
+
+&usb_otg2_pd {
+ status = "disabled";
+};
+
+&gpumix_pd {
+ status = "disabled";
+};
+
+&vpumix_pd {
+ status = "disabled";
+};
+
+&vpu_g1_pd {
+ status = "disabled";
+};
+
+&vpu_g2_pd {
+ status = "disabled";
+};
+
+&vpu_h1_pd {
+ status = "disabled";
+};
+
+&dispmix_pd {
+ status = "disabled";
+};
+
+&mipi_pd {
+ status = "disabled";
+};
+
+&gpio1 {
+ status = "disabled";
+};
+&gpio2 {
+ status = "disabled";
+};
+&gpio3 {
+ status = "disabled";
+};
+&gpio4 {
+ status = "disabled";
+};
+&gpio5 {
+ status = "disabled";
+};
+
+/delete-node/ &tmu;
+/delete-node/ &{/thermal-zones};
+/delete-node/ &iomuxc;
+
+&gpr {
+ /delete-property/ compatible;
+};
+
+/delete-node/ &anatop;
+/delete-node/ &snvs;
+
+&clk {
+ /delete-property/ compatible;
+};
+
+&src {
+ /delete-property/ compatible;
+};
+
+/delete-node/ &system_counter;
+
+/delete-node/ &imx_rpmsg;
+/delete-node/ &ocotp;
+
+&dispmix_gpr {
+ /delete-property/ compatible;
+};
+
+&sdma1 {
+ status = "disabled";
+};
+
+&sdma2 {
+ status = "disabled";
+};
+
+&sdma3 {
+ status = "disabled";
+};
+
+/delete-node/ &{/imx_ion};
+/delete-node/ &pcie0;
+/delete-node/ &crypto;
+/delete-node/ &caam_sm;
+/delete-node/ &caam_snvs;
+/delete-node/ &irq_sec_vio;
+
+/delete-node/ &{/cpus/cpu@0};
+/delete-node/ &{/cpus/cpu@1};
+/delete-node/ &{/pmu};
+
+&gic {
+ reg = <0x0 0x38800000 0 0x10000>, /* GIC Dist */
+ <0x0 0x38880000 0 0xC0000>; /* GICR (RD_base + SGI_base) */
+};
+
+&uart4 {
+ clocks = <&osc_24m>,
+ <&osc_24m>;
+ clock-names = "ipg", "per";
+ /delete-property/ dmas;
+ /delete-property/ dmas-names;
+ status = "okay";
+};
+
+&usdhc3 {
+ clocks = <&clk_dummy>,
+ <&clk_266m>,
+ <&clk_200m>;
+ /delete-property/assigned-clocks;
+ /delete-property/assigned-clock-rates;
+ clock-names = "ipg", "ahb", "per";
+ bus-width = <8>;
+ non-removable;
+ status = "okay";
+};
diff --git a/arch/arm64/boot/dts/freescale/fsl-imx8mm-evk-root.dts b/arch/arm64/boot/dts/freescale/fsl-imx8mm-evk-root.dts
new file mode 100644
index 000000000000..ff5d60766461
--- /dev/null
+++ b/arch/arm64/boot/dts/freescale/fsl-imx8mm-evk-root.dts
@@ -0,0 +1,109 @@
+/*
+ * Copyright 2018 NXP
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include "fsl-imx8mm-evk.dts"
+
+/ {
+ interrupt-parent = <&gic>;
+};
+
+/delete-node/ &gpc;
+
+&CPU_SLEEP {
+ /* We are not using GPC for now, need set 0 to avoid hang */
+ /delete-property/ compatible;
+ /*arm,psci-suspend-param = <0x0>;*/
+};
+
+&clk {
+ init-on-array = <IMX8MM_CLK_AHB_CG IMX8MM_CLK_DRAM_CORE
+ IMX8MM_CLK_NOC_CG IMX8MM_CLK_NOC_APB_CG
+ IMX8MM_CLK_USB_BUS_CG
+ IMX8MM_CLK_MAIN_AXI_CG IMX8MM_CLK_AUDIO_AHB_CG
+ IMX8MM_CLK_DRAM_APB_DIV IMX8MM_CLK_A53_DIV
+ IMX8MM_ARM_PLL_OUT IMX8MM_CLK_DISP_AXI_CG
+ IMX8MM_CLK_DISP_APB_CG
+ IMX8MM_CLK_NAND_USDHC_BUS_CG>;
+};
+
+&iomuxc {
+ imx8mq-evk {
+ /*
+ * Used for the 2nd Linux.
+ * TODO: M4 may use these pins.
+ */
+ pinctrl_uart4: uart4grp {
+ fsl,pins = <
+ MX8MM_IOMUXC_UART4_RXD_UART4_DCE_RX 0x140
+ MX8MM_IOMUXC_UART4_TXD_UART4_DCE_TX 0x140
+ >;
+ };
+
+ };
+};
+
+&{/busfreq} {
+ /* Disable busfreq, to avoid 1st Linux busfreq crash other inmates */
+ status = "disabled";
+};
+
+&{/reserved-memory} {
+ jh_reserved: jh@0xbfc00000 {
+ no-map;
+ reg = <0 0xbfc00000 0x0 0x400000>;
+ };
+
+ inmate_reserved: inmate@0x80000000 {
+ no-map;
+ reg = <0 0x80000000 0x0 0x3fc00000>;
+ };
+
+ loader_reserved: loader@0x7ff00000 {
+ no-map;
+ reg = <0 0x7ff00000 0x0 0x00100000>;
+ };
+
+ ivshmem_reserved: ivshmem@0x7fe00000 {
+ no-map;
+ reg = <0 0x7fe00000 0x0 0x00100000>;
+ };
+
+ ivshmem2_reserved: ivshmem2@0x7fd00000 {
+ no-map;
+ reg = <0 0x7fd00000 0x0 0x00100000>;
+ };
+
+ pci_reserved: pci@0x7fb00000 {
+ no-map;
+ reg = <0 0x7fb00000 0x0 0x00200000>;
+ };
+};
+
+&uart2 {
+ /* uart2 is used by the 2nd OS, so configure pin and clk */
+ pinctrl-0 = <&pinctrl_uart2>, <&pinctrl_uart4>;
+ assigned-clocks = <&clk IMX8MM_CLK_UART4_SRC>;
+ assigned-clock-parents = <&clk IMX8MM_CLK_24M>;
+};
+
+&usdhc3 {
+ status = "disabled";
+};
+
+&usdhc2 {
+ /* sdhc3 is used by 2nd linux, configure the pin */
+ pinctrl-0 = <&pinctrl_usdhc3>, <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>;
+ pinctrl-1 = <&pinctrl_usdhc3>, <&pinctrl_usdhc2_100mhz>, <&pinctrl_usdhc2_gpio>;
+ pinctrl-2 = <&pinctrl_usdhc3>, <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_gpio>;
+};