/* * 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 #include "fsl-imx8-ca35.dtsi" #include #include #include #include #include #include #include #include / { model = "Freescale i.MX8QXP MEK"; compatible = "fsl,imx8qxp-mek", "fsl,imx8qxp"; interrupt-parent = <&gic>; #address-cells = <0x2>; #size-cells = <0x2>; aliases { mmc0 = &usdhc1; serial2 = &lpuart2; }; cpus { #address-cells = <0x2>; #size-cells = <0x0>; cpu@0 { device_type = "cpu"; compatible = "arm,armv8"; enable-method = "psci"; reg = <0x0 0x2>; /delete-property/ cpu-idle-states; }; cpu@1 { device_type = "cpu"; compatible = "arm,armv8"; enable-method = "psci"; reg = <0x0 0x3>; /delete-property/ cpu-idle-states; }; cpu@2 { /delete-property/ cpu-idle-states; }; cpu@3 { /delete-property/ cpu-idle-states; }; }; psci { compatible = "arm,psci-1.0"; method = "smc"; }; timer { compatible = "arm,armv8-timer"; interrupts = , /* Physical Secure */ , /* Physical Non-Secure */ , /* Virtual */ ; /* Hypervisor */ clock-frequency = <8333333>; }; clk: clk { compatible = "fsl,imx8qxp-clk"; #clock-cells = <1>; }; iomuxc: iomuxc { compatible = "fsl,imx8qxp-iomuxc"; }; 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 = ; interrupt-parent = <&gic>; }; imx8qx-pm { #address-cells = <1>; #size-cells = <0>; pd_conn: PD_CONN { compatible = "nxp,imx8-pd"; reg = ; #power-domain-cells = <0>; #address-cells = <1>; #size-cells = <0>; pd_conn_sdch0: PD_CONN_SDHC_0 { reg = ; #power-domain-cells = <0>; power-domains = <&pd_conn>; }; }; pd_dma: PD_DMA { compatible = "nxp,imx8-pd"; reg = ; #power-domain-cells = <0>; #address-cells = <1>; #size-cells = <0>; pd_dma_lpuart2: PD_DMA_UART2 { reg = ; #power-domain-cells = <0>; power-domains = <&pd_dma>; #address-cells = <1>; #size-cells = <0>; /*wakeup-irq = <227>;*/ pd_dma2_chan12: PD_UART2_RX { reg = ; power-domains =<&pd_dma_lpuart2>; #power-domain-cells = <0>; #address-cells = <1>; #size-cells = <0>; pd_dma2_chan13: PD_UART2_TX { reg = ; power-domains =<&pd_dma2_chan12>; #power-domain-cells = <0>; #address-cells = <1>; #size-cells = <0>; }; }; }; }; }; mu2: mu@5d1d0000 { compatible = "fsl,imx8-mu"; reg = <0x0 0x5d1d0000 0x0 0x10000>; interrupts = ; fsl,scu_ap_mu_id = <0>; status = "okay"; }; pci@fd700000 { 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 90 IRQ_TYPE_EDGE_RISING>; reg = <0x0 0xfd700000 0x0 0x100000>; ranges = <0x02000000 0x00 0x10000000 0x0 0x10000000 0x00 0x10000>; }; usdhc1: usdhc@5b010000 { compatible = "fsl,imx8qm-usdhc", "fsl,imx6sl-usdhc"; interrupt-parent = <&gic>; interrupts = ; reg = <0x0 0x5b010000 0x0 0x10000>; clocks = <&clk IMX8QXP_SDHC0_IPG_CLK>, <&clk IMX8QXP_SDHC0_CLK>, <&clk IMX8QXP_CLK_DUMMY>; clock-names = "ipg", "per", "ahb"; assigned-clocks = <&clk IMX8QXP_SDHC0_SEL>, <&clk IMX8QXP_SDHC0_DIV>; assigned-clock-parents = <&clk IMX8QXP_CONN_PLL0_CLK>; assigned-clock-rates = <0>, <400000000>; power-domains = <&pd_conn_sdch0>; fsl,tuning-start-tap = <20>; fsl,tuning-step= <2>; status = "disabled"; }; /* For early console */ lpuart0: serial@5a060000 { compatible = "fsl,imx8qm-lpuart"; reg = <0x0 0x5a060000 0x0 0x1000>; }; lpuart2: serial@5a080000 { compatible = "fsl,imx8qm-lpuart"; reg = <0x0 0x5a080000 0x0 0x1000>; interrupts = ; interrupt-parent = <&gic>; clocks = <&clk IMX8QXP_UART2_CLK>, <&clk IMX8QXP_UART2_IPG_CLK>; clock-names = "per", "ipg"; assigned-clocks = <&clk IMX8QXP_UART2_CLK>; assigned-clock-rates = <80000000>; power-domains = <&pd_dma2_chan13>; /* * dma-names = "tx","rx"; * dmas = <&edma2 13 0 0>, * <&edma2 12 0 1>; */ status = "disabled"; }; }; &iomuxc { imx8qxp-mek { pinctrl_lpuart2: lpuart2grp { fsl,pins = < SC_P_UART2_TX_ADMA_UART2_TX 0x06000020 SC_P_UART2_RX_ADMA_UART2_RX 0x06000020 >; }; pinctrl_usdhc1: usdhc1grp { fsl,pins = < SC_P_EMMC0_CLK_CONN_EMMC0_CLK 0x06000041 SC_P_EMMC0_CMD_CONN_EMMC0_CMD 0x00000021 SC_P_EMMC0_DATA0_CONN_EMMC0_DATA0 0x00000021 SC_P_EMMC0_DATA1_CONN_EMMC0_DATA1 0x00000021 SC_P_EMMC0_DATA2_CONN_EMMC0_DATA2 0x00000021 SC_P_EMMC0_DATA3_CONN_EMMC0_DATA3 0x00000021 SC_P_EMMC0_DATA4_CONN_EMMC0_DATA4 0x00000021 SC_P_EMMC0_DATA5_CONN_EMMC0_DATA5 0x00000021 SC_P_EMMC0_DATA6_CONN_EMMC0_DATA6 0x00000021 SC_P_EMMC0_DATA7_CONN_EMMC0_DATA7 0x00000021 SC_P_EMMC0_STROBE_CONN_EMMC0_STROBE 0x00000041 >; }; pinctrl_usdhc1_100mhz: usdhc1grp100mhz { fsl,pins = < SC_P_EMMC0_CLK_CONN_EMMC0_CLK 0x06000040 SC_P_EMMC0_CMD_CONN_EMMC0_CMD 0x00000020 SC_P_EMMC0_DATA0_CONN_EMMC0_DATA0 0x00000020 SC_P_EMMC0_DATA1_CONN_EMMC0_DATA1 0x00000020 SC_P_EMMC0_DATA2_CONN_EMMC0_DATA2 0x00000020 SC_P_EMMC0_DATA3_CONN_EMMC0_DATA3 0x00000020 SC_P_EMMC0_DATA4_CONN_EMMC0_DATA4 0x00000020 SC_P_EMMC0_DATA5_CONN_EMMC0_DATA5 0x00000020 SC_P_EMMC0_DATA6_CONN_EMMC0_DATA6 0x00000020 SC_P_EMMC0_DATA7_CONN_EMMC0_DATA7 0x00000020 SC_P_EMMC0_STROBE_CONN_EMMC0_STROBE 0x00000040 >; }; pinctrl_usdhc1_200mhz: usdhc1grp200mhz { fsl,pins = < SC_P_EMMC0_CLK_CONN_EMMC0_CLK 0x06000040 SC_P_EMMC0_CMD_CONN_EMMC0_CMD 0x00000020 SC_P_EMMC0_DATA0_CONN_EMMC0_DATA0 0x00000020 SC_P_EMMC0_DATA1_CONN_EMMC0_DATA1 0x00000020 SC_P_EMMC0_DATA2_CONN_EMMC0_DATA2 0x00000020 SC_P_EMMC0_DATA3_CONN_EMMC0_DATA3 0x00000020 SC_P_EMMC0_DATA4_CONN_EMMC0_DATA4 0x00000020 SC_P_EMMC0_DATA5_CONN_EMMC0_DATA5 0x00000020 SC_P_EMMC0_DATA6_CONN_EMMC0_DATA6 0x00000020 SC_P_EMMC0_DATA7_CONN_EMMC0_DATA7 0x00000020 SC_P_EMMC0_STROBE_CONN_EMMC0_STROBE 0x00000040 >; }; }; }; &lpuart2 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_lpuart2>; status = "okay"; }; &usdhc1 { pinctrl-names = "default", "state_100mhz", "state_200mhz"; pinctrl-0 = <&pinctrl_usdhc1>; pinctrl-1 = <&pinctrl_usdhc1_100mhz>; pinctrl-2 = <&pinctrl_usdhc1_200mhz>; bus-width = <8>; non-removable; status = "okay"; };