/* * 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/; /memreserve/ 0x84000000 0x4000000; /memreserve/ 0x90000000 0x400000; /memreserve/ 0x90400000 0x2000000; /memreserve/ 0x92400000 0x2000000; /memreserve/ 0x94400000 0x1800000; #include "fsl-imx8qm-mek.dtsi" #include "fsl-imx8qm-xen.dtsi" / { model = "Freescale i.MX8QM MEK DOM0"; compatible = "fsl,imx8qm-mek", "fsl,imx8qm"; chosen { #address-cells = <2>; #size-cells = <2>; /* Could be updated by U-Boot */ module@0 { bootargs = "earlycon=xen console=hvc0 loglevel=8 root=/dev/mmcblk1p2 rw rootwait"; compatible = "xen,linux-zimage", "xen,multiboot-module"; reg = <0x00000000 0x80a00000 0x00000000 0xf93a00>; }; }; domu { /* * There are 5 MUs, 0A is used by Dom0, 1A is used * by ATF, so for DomU, 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 { compatible = "xen,domu"; /* * The name entry in VM configuration file * needs to be same as here. */ domain_name = "DomU"; /* * The reg property will be updated by U-Boot to * reflect the partition id. */ reg = <0>; init_on_rsrcs = < SC_R_MU_2A >; rsrcs = < SC_R_MU_6A SC_R_GPU_0_PID0 SC_R_GPU_0_PID1 SC_R_GPU_0_PID2 SC_R_GPU_0_PID3 SC_R_LVDS_0 SC_R_LVDS_0_I2C_0 SC_R_LVDS_0_PWM_0 SC_R_DC_0 SC_R_DC_0_BLIT0 SC_R_DC_0_BLIT1 SC_R_DC_0_BLIT2 SC_R_DC_0_BLIT_OUT SC_R_UNUSED9 SC_R_UNUSED10 SC_R_DC_0_WARP SC_R_UNUSED11 SC_R_UNUSED12 SC_R_DC_0_VIDEO0 SC_R_DC_0_VIDEO1 SC_R_DC_0_FRAC0 SC_R_UNUSED13 SC_R_DC_0_PLL_0 SC_R_DC_0_PLL_1 SC_R_MIPI_0 SC_R_MIPI_0_I2C_0 SC_R_MIPI_0_I2C_1 SC_R_MIPI_0_PWM_0 SC_R_HDMI SC_R_HDMI_PLL_0 SC_R_HDMI_PLL_1 SC_R_HDMI_I2C_0 SC_R_HDMI_I2S SC_R_HDMI_RX SC_R_SDHC_0 SC_R_USB_0 SC_R_USB_0_PHY SC_R_UART_1 SC_R_DMA_0_CH14 SC_R_DMA_0_CH15 SC_R_MU_2A /* pcie */ SC_R_PCIE_B SC_R_PCIE_A SC_R_SERDES_0 SC_R_HSIO_GPIO /*vpu*/ SC_R_VPU SC_R_VPU_PID0 SC_R_VPU_PID1 SC_R_VPU_PID2 SC_R_VPU_PID3 SC_R_VPU_PID4 SC_R_VPU_PID5 SC_R_VPU_PID6 SC_R_VPU_PID7 SC_R_VPU_DEC_0 SC_R_VPU_ENC_0 SC_R_VPU_ENC_1 SC_R_VPU_TS_0 SC_R_VPU_MU_0 SC_R_VPU_MU_1 SC_R_VPU_MU_2 SC_R_VPU_MU_3 /* crypto */ SC_R_CAAM_JR2 SC_R_CAAM_JR2_OUT SC_R_CAAM_JR3 SC_R_CAAM_JR3_OUT /* Camera */ SC_R_ISI_CH0 SC_R_ISI_CH1 SC_R_ISI_CH2 SC_R_ISI_CH3 SC_R_MIPI_0 SC_R_MIPI_0_PWM_0 SC_R_MIPI_0_I2C_0 SC_R_MIPI_0_I2C_1 SC_R_CSI_0 SC_R_CSI_0_PWM_0 SC_R_CSI_0_I2C_0 /* usbotg3 */ SC_R_USB_2 SC_R_USB_2_PHY >; pads = < /* i2c1_lvds1 */ SC_P_LVDS1_I2C1_SCL SC_P_LVDS1_I2C1_SDA /* emmc */ SC_P_EMMC0_CLK SC_P_EMMC0_CMD SC_P_EMMC0_DATA0 SC_P_EMMC0_DATA1 SC_P_EMMC0_DATA2 SC_P_EMMC0_DATA3 SC_P_EMMC0_DATA4 SC_P_EMMC0_DATA5 SC_P_EMMC0_DATA6 SC_P_EMMC0_DATA7 SC_P_EMMC0_STROBE SC_P_EMMC0_RESET_B /* usb otg */ SC_P_USB_SS3_TC0 /* uart1 */ SC_P_UART1_RX SC_P_UART1_TX SC_P_UART1_CTS_B SC_P_UART1_RTS_B SC_P_QSPI1A_DQS /* pciea */ SC_P_PCIE_CTRL0_CLKREQ_B SC_P_PCIE_CTRL0_WAKE_B SC_P_PCIE_CTRL0_PERST_B SC_P_LVDS1_I2C0_SDA SC_P_USDHC2_RESET_B /*usbotgs typec */ SC_P_QSPI1A_SS0_B SC_P_USB_SS3_TC3 SC_P_QSPI1A_DATA0 /* isl29023 */ SC_P_USDHC2_WP >; gpios = <&gpio1 13 GPIO_ACTIVE_LOW>, <&gpio1 27 GPIO_ACTIVE_LOW>, <&gpio4 6 GPIO_ACTIVE_LOW>, <&gpio4 9 GPIO_ACTIVE_LOW>, <&gpio4 11 GPIO_ACTIVE_HIGH>, <&gpio4 19 GPIO_ACTIVE_HIGH>, <&gpio4 26 GPIO_ACTIVE_HIGH>, <&gpio4 27 GPIO_ACTIVE_LOW>, <&gpio4 29 GPIO_ACTIVE_LOW>; }; }; reserved-memory { /* global autoconfigured region for contiguous allocations */ linux,cma { compatible = "shared-dma-pool"; reusable; size = <0 0x28000000>; alloc-ranges = <0 0xa0000000 0 0x40000000>; linux,cma-default; }; }; display-subsystem { compatible = "fsl,imx-display-subsystem"; ports = <&dpu2_disp0>, <&dpu2_disp1>; }; /* Passthrough to domu */ mu2: mu@5d1d0000 { compatible = "fsl,imx8-mu"; reg = <0x0 0x5d1d0000 0x0 0x10000>; interrupts = ; fsl,scu_ap_mu_id = <0>; xen,passthrough; status = "disabled"; }; cm41: cm41@1 { fsl,sc_rsrc_id = , , , , ; #stream-id-cells = <1>; iommus = <&smmu>; xen,passthrough; }; irqsteer_cm41: irqsteer_cm41@0x51080000 { reg = <0x0 0x51080000 0x0 0x10000>; xen,passthrough; }; mu_rpmsg1_b: mu_rpmsg1_b@0x5d2a0000 { reg = <0x0 0x5d2a0000 0x0 0x10000>; xen,passthrough; }; decoder_boot_mem: decoder_boot_mem@0x84000000 { xen,passthrough; reg = <0 0x84000000 0 0x2000000>; }; encoder_boot_mem: encoder_boot_mem@0x86000000 { xen,passthrough; reg = <0 0x86000000 0 0x2000000>; }; rpmsg_reserved_mem: rpmsg_reserved_mem@90000000 { reg = <0x0 0x90000000 0x0 0x400000>; xen,passthrough; }; decoder_rpc_mem: decoder_rpc_mem@0x90400000 { xen,passthrough; reg = <0 0x90400000 0 0x1000000>; }; encoder_rpc_mem: encoder_rpc_mem@0x91400000 { xen,passthrough; reg = <0 0x91400000 0 0x1000000>; }; encoder_reserved_mem: encoder_reserved_mem@0x94400000 { xen,passthrough; reg = <0 0x94400000 0 0x800000>; }; decoder_str_mem: str_mem@0x94400000 { xen,passthrough; reg = <0 0x94400000 0 0x1800000>; }; gpio4_dummy: gpio4_dummy@0{ /* Passthrough gpio4 interrupt to DomU */ interrupts = ; xen,passthrough; }; }; &mu_rpmsg1 { xen,passthrough; }; &rpmsg1 { /* Let xen not create mapping form dom0 */ /delete-property/ reg; status = "disabled"; }; &mu_6_lpcg { xen,passthrough; }; &mu_6_lpcg_b { xen,passthrough; }; &mu_7_lpcg_b { xen,passthrough; }; &usbotg1_lpcg { xen,passthrough; }; &sdhc1_lpcg { xen,passthrough; }; &lpuart1 { xen,passthrough; }; &lpuart1_lpcg { xen,passthrough; }; /* * DomU CM41 use this, but DomU OS not need this, * because smmu is enabled for CM41, so need to *create the lpuart2 mapping in SMMU */ &lpuart2 { xen,passthrough; }; &lpuart2_lpcg { xen,passthrough; }; &di_lvds0_lpcg { xen,passthrough; }; &dc_0_lpcg { xen,passthrough; }; &edma01 { #stream-id-cells = <1>; xen,passthrough; fsl,sc_rsrc_id = , ; }; /* * SMMU, for simplity, we put all all the resources needs to programmed * for VPU under vpu_decoder node, then in cfg file only add vpu_decoder * in dt_dev is enough. */ &smmu { mmu-masters = <&dpu1 0x13>, <&gpu_3d0 0x15>, <&usdhc1 0x12>, <&usbotg1 0x11>, <&edma01 0x10>, <&cm41 0x09>, <&pciea 0x08>, <&vpu_decoder 0x7>, <&crypto 0x6>, <&isi_0 0x5>, <&usbotg3 0x4>, <&hdmi 0x3>; }; &lvds_region1 { xen,passthrough; }; &irqsteer_lvds0 { xen,passthrough; }; &i2c1_lvds0 { xen,passthrough; }; &ldb1_phy { xen,passthrough; }; &ldb1 { xen,passthrough; }; &dpu1_intsteer { xen,passthrough; }; &dpu1 { xen,passthrough; #stream-id-cells = <1>; iommus = <&smmu>; }; &pixel_combiner1 { xen,passthrough; }; &prg1 { xen,passthrough; }; &prg2 { xen,passthrough; }; &prg3 { xen,passthrough; }; &prg4 { xen,passthrough; }; &prg5 { xen,passthrough; }; &prg6 { xen,passthrough; }; &prg7 { xen,passthrough; }; &prg8 { xen,passthrough; }; &prg9 { xen,passthrough; }; &dpr1_channel1 { xen,passthrough; }; &dpr1_channel2 { xen,passthrough; }; &dpr1_channel3 { xen,passthrough; }; &dpr2_channel1 { xen,passthrough; }; &dpr2_channel2 { xen,passthrough; }; &dpr2_channel3 { xen,passthrough; }; /* GPU */ &pd_gpu0 { xen,passthrough; }; &gpu_3d0 { xen,passthrough; #stream-id-cells = <1>; iommus = <&smmu>; }; &imx8_gpu_ss { cores = <&gpu_3d1>; /delete-property/ reg; /delete-property/ reg-names; }; &sata { status = "disabled"; }; &usdhc1 { xen,passthrough; #stream-id-cells = <1>; iommus = <&smmu>; }; &usbotg1 { /* Hack reg */ reg = <0x0 0x5b0d0000 0x0 0x1000>; xen,passthrough; #stream-id-cells = <1>; iommus = <&smmu>; }; &usbmisc1 { /* Hack */ /delete-property/ reg; status = "disabled"; }; &usbphy1 { reg = <0x0 0x5b100000 0x0 0x1000>; xen,passthrough; }; &hsio { xen,passthrough; }; &hsio_pcie_x2_lpcg { xen,passthrough; }; &hsio_phy_x2_lpcg { xen,passthrough; }; &hsio_pcie_x2_crr2_lpcg { xen,passthrough; }; &hsio_pcie_x1_lpcg { xen,passthrough; }; &pciea { #stream-id-cells = <1>; iommus = <&smmu>; xen,passthrough; fsl,sc_rsrc_id = ; }; &pcieb { xen,passthrough; }; &gpio1 { xen,shared; }; &gpt0 { /delete-property/ interrupts; status = "disabled"; }; &gpio4 { /* * Use GPT0 interrupt for hack * This could be removed when interrupt sharing be supported. */ interrupts = ; xen,domu-irq; xen,shared; }; &dsp { xen,passthrough; }; &mu_m0 { xen,passthrough; }; &mu1_m0 { xen,passthrough; }; &mu2_m0 { xen,passthrough; }; &vpu_decoder { #stream-id-cells = <1>; iommus = <&smmu>; xen,passthrough; fsl,sc_rsrc_id = , , , , , , , , , , , , , , , , ; }; &vpu_decoder_csr { xen,passthrough; }; &vpu_encoder { iommus = <&smmu>; #stream-id-cells = <1>; xen,passthrough; }; &crypto { xen,passthrough; iommus = <&smmu>; #stream-id-cells = <1>; /* JR1 is not used by Linux */ fsl,sc_rsrc_id = , , , ; }; &sec_jr2 { xen,passthrough; }; &sec_jr3 { xen,passthrough; }; &caam_sm { xen,passthrough; }; &i2c0 { isl29023@44 { xen,passthrough; }; fxos8700@1e { xen,passthrough; }; fxas2100x@20 { xen,passthrough; }; mpl3115@60 { xen,passthrough; }; typec_ptn5110: typec@50 { xen,passthrough; }; }; /* Camera */ &img_pdma_0_lpcg { xen,passthrough; }; &img_pdma_1_lpcg { xen,passthrough; }; &img_pdma_2_lpcg { xen,passthrough; }; &img_pdma_3_lpcg { xen,passthrough; }; &mipi_csi_0_lpcg { xen,passthrough; }; &img_pxl_link_csi0_lpcg { xen,passthrough; }; &gpio0_mipi_csi0 { xen,passthrough; }; &irqsteer_csi0 { xen,passthrough; }; &isi_0 { xen,passthrough; #stream-id-cells = <1>; iommus = <&smmu>; fsl,sc_rsrc_id = , , , ; }; &isi_1 { xen,passthrough; }; &isi_2 { xen,passthrough; }; &isi_3 { xen,passthrough; }; &mipi_csi_0 { xen,passthrough; }; &i2c0_mipi_csi0 { xen,passthrough; }; &isi_4 { status = "okay"; }; &isi_5 { status = "okay"; }; &isi_6 { status = "okay"; }; &isi_7 { status = "okay"; }; &mipi_csi_1 { status = "okay"; }; &i2c0_mipi_csi1 { status = "okay"; }; &usbotg3_lpcg { xen,passthrough; }; &usbotg3 { xen,passthrough; #stream-id-cells = <1>; iommus = <&smmu>; }; /* hdmi */ &hdmi { xen,passthrough; #stream-id-cells = <1>; iommus = <&smmu>; fsl,sc_rsrc_id = , ; }; &hdmi_rx { xen,passthrough; }; &irqsteer_hdmi { xen,passthrough; }; &irqsteer_hdmi_rx { xen,passthrough; }; &i2c0_hdmi { xen,passthrough; }; &sai_hdmi_rx { xen,passthrough; }; &sai_hdmi_tx { xen,passthrough; };