| /* |
| * 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 = <GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH>; |
| fsl,scu_ap_mu_id = <0>; |
| xen,passthrough; |
| status = "disabled"; |
| }; |
| |
| cm41: cm41@1 { |
| fsl,sc_rsrc_id = <SC_R_M4_1_PID0>, |
| <SC_R_M4_1_PID1>, |
| <SC_R_M4_1_PID2>, |
| <SC_R_M4_1_PID3>, |
| <SC_R_M4_1_PID4>; |
| #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 = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>; |
| 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 = <SC_R_DMA_0_CH14>, |
| <SC_R_DMA_0_CH15>; |
| }; |
| |
| /* |
| * 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 = <SC_R_PCIE_A>; |
| }; |
| |
| &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 = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>; |
| 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 = <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>; |
| }; |
| |
| &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 = <SC_R_CAAM_JR2>, <SC_R_CAAM_JR2_OUT>, |
| <SC_R_CAAM_JR3>, <SC_R_CAAM_JR3_OUT>; |
| }; |
| |
| &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 = <SC_R_ISI_CH0>, |
| <SC_R_ISI_CH1>, |
| <SC_R_ISI_CH2>, |
| <SC_R_ISI_CH3>; |
| }; |
| |
| &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 = <SC_R_HDMI>, |
| <SC_R_HDMI_RX>; |
| }; |
| |
| &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; |
| }; |