MLK-24278: arm64: dts: add i.MX8DXL inmate/root dts

Add i.MX8DXL inmate/root dts. Needs to use non-m4 flash.bin and use the
following command to boot the 2nd Linux:

./jailhouse cell linux imx8dxl-linux-demo.cell Image -d
imx8dxl-evk-inmate.dtb -c "clk_ignore_unused console=ttyLP4,115200
earlycon=lpuart32,mmio32,0x5a060010,115200 cma=32MB root=/dev/mmcblk0p2 rootwait rw"

Signed-off-by: Alice Guo <alice.guo@nxp.com>
This commit is contained in:
Alice Guo 2020-05-22 17:56:51 +08:00
parent 251d8ae450
commit 2e6d2985aa
3 changed files with 356 additions and 1 deletions

View File

@ -142,6 +142,6 @@ dtb-$(CONFIG_ARCH_MXC) += imx8qxp-mek-dom0.dtb imx8qxp-mek-root.dtb \
dtb-$(CONFIG_ARCH_MXC) += imx8dxl-evk.dtb imx8dxl-evk-rpmsg.dtb \
imx8dxl-evk-enet0.dtb imx8dxl-evk-enet0-tja1100.dtb imx8dxl-evk-pcie.dtb \
imx8dxl-evk-lpspi-slave.dtb \
imx8dxl-ddr3-val.dtb
imx8dxl-ddr3-val.dtb imx8dxl-evk-root.dtb imx8dxl-evk-inmate.dtb
dtb-$(CONFIG_ARCH_S32) += s32v234-evb.dtb \
s32v234-sbc.dtb

View File

@ -0,0 +1,255 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* Copyright 2020 NXP
*/
/dts-v1/;
#include <dt-bindings/clock/imx8-clock.h>
#include <dt-bindings/firmware/imx/rsrc.h>
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/pinctrl/pads-imx8dxl.h>
#include <dt-bindings/thermal/thermal.h>
/ {
model = "Freescale i.MX8DXL EVK";
compatible = "fsl,imx8dxl-mek", "fsl,imx8dxl";
interrupt-parent = <&gic>;
#address-cells = <0x2>;
#size-cells = <0x2>;
aliases {
mmc0 = &usdhc1;
serial4 = &cm40_lpuart;
};
cpus {
#address-cells = <0x2>;
#size-cells = <0x0>;
cpu@1 {
device_type = "cpu";
compatible = "arm,armv8";
enable-method = "psci";
reg = <0x0 0x1>;
clocks = <&clk IMX_SC_R_A35 IMX_SC_PM_CLK_CPU>;
};
};
psci {
compatible = "arm,psci-1.0";
method = "smc";
};
scu {
compatible = "fsl,imx-scu";
mbox-names = "tx0", "tx1", "tx2", "tx3",
"rx0", "rx1", "rx2", "rx3",
"gip3";
mboxes = <&lsio_mu2 0 0
&lsio_mu2 0 1
&lsio_mu2 0 2
&lsio_mu2 0 3
&lsio_mu2 1 0
&lsio_mu2 1 1
&lsio_mu2 1 2
&lsio_mu2 1 3
&lsio_mu2 3 3>;
pd: imx8dxl-pd {
compatible = "fsl,imx8dxl-scu-pd", "fsl,scu-pd";
#power-domain-cells = <1>;
};
clk: clock-controller {
compatible = "fsl,imx8dxl-clk", "fsl,scu-clk";
#clock-cells = <2>;
clocks = <&xtal32k &xtal24m>;
clock-names = "xtal_32KHz", "xtal_24Mhz";
};
iomuxc: pinctrl {
compatible = "fsl,imx8dxl-iomuxc";
};
};
soc {
compatible = "fsl,imx8qxp-soc";
};
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>;
};
gic: interrupt-controller@51a00000 {
compatible = "arm,gic-v3";
reg = <0x0 0x51a00000 0 0x10000>, /* GIC Dist */
<0x0 0x51b00000 0 0xc0000>; /* GICR (RD_base + SGI_base) */
#interrupt-cells = <3>;
interrupt-controller;
interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
};
clk_dummy: clock-dummy {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <0>;
clock-output-names = "clk_dummy";
};
xtal32k: clock-xtal32k {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <32768>;
clock-output-names = "xtal_32KHz";
};
xtal24m: clock-xtal24m {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <24000000>;
clock-output-names = "xtal_24MHz";
};
pci@bf700000 {
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 200 IRQ_TYPE_EDGE_RISING>,
<0 0 0 2 &gic GIC_SPI 201 IRQ_TYPE_EDGE_RISING>,
<0 0 0 3 &gic GIC_SPI 202 IRQ_TYPE_EDGE_RISING>,
<0 0 0 4 &gic GIC_SPI 203 IRQ_TYPE_EDGE_RISING>;
reg = <0x0 0xbf700000 0x0 0x00100000>;
ranges = <0x02000000 0x00 0x10000000 0x0 0x10000000 0x00 0x10000>;
};
/* For early console */
serial@5a060000 {
compatible = "fsl,imx8dxl-lpuart", "fsl,imx7ulp-lpuart";
reg = <0x0 0x5a060000 0x0 0x1000>;
};
#include "imx8-ss-lsio.dtsi"
#include "imx8-ss-adma.dtsi"
#include "imx8-ss-conn.dtsi"
#include "imx8-ss-cm40.dtsi"
};
#include "imx8dxl-ss-lsio.dtsi"
#include "imx8dxl-ss-adma.dtsi"
#include "imx8dxl-ss-conn.dtsi"
&edma0 {
status = "disabled";
};
&acm {
status = "disabled";
};
&iomuxc {
pinctrl_cm40_lpuart: cm40_lpuartgrp {
fsl,pins = <
IMX8DXL_ADC_IN2_M40_UART0_RX 0x06000020
IMX8DXL_ADC_IN3_M40_UART0_TX 0x06000020
>;
};
pinctrl_usdhc1: usdhc1grp {
fsl,pins = <
IMX8DXL_EMMC0_CLK_CONN_EMMC0_CLK 0x06000041
IMX8DXL_EMMC0_CMD_CONN_EMMC0_CMD 0x00000021
IMX8DXL_EMMC0_DATA0_CONN_EMMC0_DATA0 0x00000021
IMX8DXL_EMMC0_DATA1_CONN_EMMC0_DATA1 0x00000021
IMX8DXL_EMMC0_DATA2_CONN_EMMC0_DATA2 0x00000021
IMX8DXL_EMMC0_DATA3_CONN_EMMC0_DATA3 0x00000021
IMX8DXL_EMMC0_DATA4_CONN_EMMC0_DATA4 0x00000021
IMX8DXL_EMMC0_DATA5_CONN_EMMC0_DATA5 0x00000021
IMX8DXL_EMMC0_DATA6_CONN_EMMC0_DATA6 0x00000021
IMX8DXL_EMMC0_DATA7_CONN_EMMC0_DATA7 0x00000021
IMX8DXL_EMMC0_STROBE_CONN_EMMC0_STROBE 0x00000041
>;
};
};
&usdhc1 {
pinctrl-names = "default", "state_100mhz", "state_200mhz";
pinctrl-0 = <&pinctrl_usdhc1>;
bus-width = <8>;
non-removable;
status = "okay";
};
&lsio_mu1 {
status = "disabled";
};
&lsio_mu2 {
status = "okay";
};
&lsio_gpio0 {
status = "disabled";
};
&lsio_gpio1 {
status = "disabled";
};
&lsio_gpio2 {
status = "disabled";
};
&lsio_gpio3 {
status = "disabled";
};
&lsio_gpio4 {
status = "disabled";
};
&lsio_gpio5 {
status = "disabled";
};
&lsio_gpio6 {
status = "disabled";
};
&lsio_gpio7 {
status = "disabled";
};
&cm40_intmux {
interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
};
&cm40_intmux {
status = "okay";
};
&cm40_lpuart {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_cm40_lpuart>;
status = "okay";
};
/delete-node/ &lpuart0;

View File

@ -0,0 +1,100 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* Copyright NXP 2020
*/
#include "imx8dxl-evk.dts"
/ {
domu {
/*
* There are 5 MUs, 0A is used by root cell, 1A is used
* by ATF, so for non-root cell, 2A/3A/4A could be used.
* SC_R_MU_0A
* SC_R_MU_1A
* SC_R_MU_2A
* SC_R_MU_3A
* SC_R_MU_4A
* The rsrcs and pads will be configured by uboot scu_rm cmd
*/
#address-cells = <1>;
#size-cells = <0>;
doma {
/*
* This is not for domu, this is just reuse
* the method for jailhouse inmate non root cell
* Linux.
*/
compatible = "xen,domu";
/*
* The reg property will be updated by U-Boot to
* reflect the partition id.
*/
reg = <0>;
init_on_rsrcs = <
IMX_SC_R_MU_2A
>;
rsrcs = <
IMX_SC_R_SDHC_0
IMX_SC_R_M4_0_INTMUX
IMX_SC_R_M4_0_UART
IMX_SC_R_MU_2A
>;
pads = <
/* emmc */
IMX8DXL_EMMC0_CLK
IMX8DXL_EMMC0_CMD
IMX8DXL_EMMC0_DATA0
IMX8DXL_EMMC0_DATA1
IMX8DXL_EMMC0_DATA2
IMX8DXL_EMMC0_DATA3
IMX8DXL_EMMC0_DATA4
IMX8DXL_EMMC0_DATA5
IMX8DXL_EMMC0_DATA6
IMX8DXL_EMMC0_DATA7
IMX8DXL_EMMC0_STROBE
/* cm40_lpuart */
IMX8DXL_ADC_IN3
IMX8DXL_ADC_IN2
>;
};
};
};
&{/reserved-memory} {
jh_reserved: jh@bfc00000 {
no-map;
reg = <0x0 0xbfc00000 0x0 0x400000>;
};
loader_reserved: loader@bfb00000 {
no-map;
reg = <0x0 0xbfb00000 0x0 0x00100000>;
};
ivshmem_reserved: ivshmem@bf900000 {
no-map;
reg = <0x0 0xbf900000 0x0 0x00200000>;
};
pci_reserved: pci@bf700000 {
no-map;
reg = <0x0 0xbf700000 0x0 0x00200000>;
};
/* Decrease if no need such big memory */
inmate_reserved: inmate@a1700000 {
no-map;
reg = <0x0 0xa1700000 0x0 0x1e000000>;
};
};
&usdhc1 {
status = "disabled";
};
&cm40_lpuart {
/* Let inmate linux use this for console */
status = "disabled";
};