From 751a8b5f46c63b8cc05899976039f8fb89b1162d Mon Sep 17 00:00:00 2001 From: Peng Fan Date: Mon, 6 Aug 2018 17:32:18 +0800 Subject: 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 --- arch/arm64/boot/dts/freescale/Makefile | 4 +- .../boot/dts/freescale/fsl-imx8mm-evk-inmate.dts | 224 +++++++++++++++++++++ .../boot/dts/freescale/fsl-imx8mm-evk-root.dts | 109 ++++++++++ 3 files changed, 336 insertions(+), 1 deletion(-) create mode 100644 arch/arm64/boot/dts/freescale/fsl-imx8mm-evk-inmate.dts create mode 100644 arch/arm64/boot/dts/freescale/fsl-imx8mm-evk-root.dts 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 = , /* Physical Secure */ + , /* Physical Non-Secure */ + , /* Virtual */ + ; /* 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 = ; +}; + +&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>; +}; -- cgit v1.2.3