/* * Copyright 2015-2016 Freescale Semiconductor, Inc. * Copyright 2017 NXP * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ #include #include #include #include #include "skeleton.dtsi" #include "imx7ulp-pinfunc.h" / { interrupt-parent = <&intc>; aliases { gpio0 = &gpio_ptc; gpio1 = &gpio_ptd; gpio2 = &gpio_pte; gpio3 = &gpio_ptf; mmc0 = &usdhc0; mmc1 = &usdhc1; serial0 = &lpuart4; serial1 = &lpuart5; serial2 = &lpuart6; serial3 = &lpuart7; usbphy0 = &usbphy1; }; cpus { #address-cells = <1>; #size-cells = <0>; cpu0: cpu@0 { compatible = "arm,cortex-a7"; device_type = "cpu"; clock-latency = <61036>; /* two CLK32 periods */ reg = <0>; operating-points = < /* KHz uV */ 720000 1125000 500210 1025000 >; clocks = <&clks IMX7ULP_CLK_ARM>, <&clks IMX7ULP_CLK_CORE_DIV>, <&clks IMX7ULP_CLK_SYS_SEL>, <&clks IMX7ULP_CLK_HSRUN_SYS_SEL>, <&clks IMX7ULP_CLK_HSRUN_CORE>, <&clks IMX7ULP_CLK_SPLL_PFD0>, <&clks IMX7ULP_CLK_SPLL_SEL>, <&clks IMX7ULP_CLK_FIRC>, <&clks IMX7ULP_CLK_SPLL>; clock-names = "arm", "core_div", "sys_sel", "hsrun_sys_sel", "hsrun_core", "spll_pfd0", "spll_sel", "firc", "spll"; }; }; reserved-memory { #address-cells = <1>; #size-cells = <1>; ranges; /* global autoconfigured region for contiguous allocations */ linux,cma { compatible = "shared-dma-pool"; reusable; size = <0xC000000>; alignment = <0x2000>; linux,cma-default; }; rpmsg_reserved: rpmsg@9FFF0000 { no-map; reg = <0x9FF00000 0x100000>; }; }; intc: interrupt-controller@40021000 { compatible = "arm,cortex-a7-gic"; #interrupt-cells = <3>; interrupt-controller; reg = <0x40021000 0x1000>, <0x40022000 0x100>; }; clocks { #address-cells = <1>; #size-cells = <0>; rosc: clock@0 { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <32768>; clock-output-names = "rosc"; }; sosc: clock@1 { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <24000000>; clock-output-names = "sosc"; }; sirc: clock@2 { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <16000000>; clock-output-names = "sirc"; }; firc: clock@3 { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <48000000>; clock-output-names = "firc"; }; upll: clock@4 { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <480000000>; clock-output-names = "upll"; }; mpll: clock@5 { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <480000000>; clock-output-names = "mpll"; }; }; sram: sram@20000000 { compatible = "fsl,lpm-sram"; reg = <0x1fffc000 0x4000>; }; pmu: pmu@a7 { compatible = "arm,cortex-a7-pmu"; }; caam_sm: caam-sm@26000000 { compatible = "fsl,imx6q-caam-sm"; reg = <0x26000000 0x8000>; }; ahbbridge0: ahb-bridge0@40000000 { compatible = "fsl,aips-bus", "simple-bus"; #address-cells = <1>; #size-cells = <1>; reg = <0x40000000 0x800000>; ranges; edma0: dma-controller@40080000 { #dma-cells = <2>; compatible = "nxp,imx7ulp-edma"; reg = <0x40080000 0x2000>, <0x40210000 0x1000>; dma-channels = <32>; interrupts = , , , , , , , , , , , , , , , , ; clock-names = "dma", "dmamux0"; clocks = <&clks IMX7ULP_CLK_DMA1>, <&clks IMX7ULP_CLK_DMA_MUX1>; }; mu: mu@40220000 { compatible = "fsl,imx7ulp-mu", "fsl,imx6sx-mu"; reg = <0x40220000 0x1000>; interrupts = , ; status = "okay"; }; nmi: nmi@40220000 { compatible = "fsl,imx7ulp-nmi"; reg = <0x40220000 0x1000>; interrupts = ; status = "okay"; }; crypto: caam@40240000 { compatible = "fsl,imx7d-caam", "fsl,sec-v4.0"; #address-cells = <1>; #size-cells = <1>; reg = <0x40240000 0x40000>; ranges = <0 0x40240000 0x40000>; clocks = <&clks IMX7ULP_CLK_CAAM>, <&clks IMX7ULP_CLK_NIC1_DIV>; clock-names = "ipg", "aclk"; sec_ctrl: ctrl@0 { /* CAAM Page 0 only accessible */ /* by secure world */ compatible = "fsl,sec-v4.0-ctrl"; reg = <0x40240000 0x1000>; secure-status = "okay"; status = "disabled"; }; sec_jr0: jr0@1000 { compatible = "fsl,sec-v4.0-job-ring"; reg = <0x1000 0x1000>; interrupts = ; }; sec_jr1: jr1@2000 { compatible = "fsl,sec-v4.0-job-ring"; reg = <0x2000 0x1000>; interrupts = ; status = "disabled"; }; }; rpmsg: rpmsg{ compatible = "fsl,imx7ulp-rpmsg"; memory-region = <&rpmsg_reserved>; status = "disabled"; }; pwm0: tpm@40250000 { compatible = "nxp,tpm-pwm"; reg = <0x40250000 0x1000>; nxp,pwm-number = <6>; assigned-clocks = <&clks IMX7ULP_CLK_LPTPM4>; assigned-clock-parents = <&clks IMX7ULP_CLK_SOSC_BUS_CLK>; clocks = <&clks IMX7ULP_CLK_LPTPM4>; #pwm-cells = <2>; }; tpm5: tpm@40260000 { compatible = "fsl,imx7ulp-tpm"; reg = <0x40260000 0x1000>; interrupts = ; clocks = <&clks IMX7ULP_CLK_LPTPM5>, <&clks IMX7ULP_CLK_NIC1_BUS_DIV>; clock-names = "per", "ipg"; }; lpit: 1@40270000 { compatible = "fsl,imx-lpit"; reg = <0x40270000 0x1000>; interrupts = ; /* clocks = <&lpclk>;*/ clocks = <&clks IMX7ULP_CLK_LPIT1>; assigned-clock-rates = <48000000>; assigned-clocks = <&clks IMX7ULP_CLK_LPIT1>; assigned-clock-parents = <&clks IMX7ULP_CLK_FIRC_BUS_CLK>; }; lpi2c4: lpi2c4@402B0000 { compatible = "fsl,imx7ulp-lpi2c"; reg = <0x402B0000 0x10000>; interrupts = ; clocks = <&clks IMX7ULP_CLK_LPI2C4>, <&clks IMX7ULP_CLK_NIC1_BUS_DIV>; clock-names = "per", "ipg"; assigned-clocks = <&clks IMX7ULP_CLK_LPI2C4>; assigned-clock-parents = <&clks IMX7ULP_CLK_FIRC_BUS_CLK>; assigned-clock-rates = <48000000>; status = "disabled"; }; lpi2c5: lpi2c5@402C0000 { compatible = "fsl,imx7ulp-lpi2c"; reg = <0x402C0000 0x10000>; interrupts = ; clocks = <&clks IMX7ULP_CLK_LPI2C5>, <&clks IMX7ULP_CLK_NIC1_BUS_DIV>; clock-names = "per", "ipg"; assigned-clocks = <&clks IMX7ULP_CLK_LPI2C5>; assigned-clock-parents = <&clks IMX7ULP_CLK_FIRC_BUS_CLK>; assigned-clock-rates = <48000000>; }; lpspi2: lpspi@40290000 { compatible = "fsl,imx7ulp-spi"; reg = <0x40290000 0x10000>; interrupts = ; clocks = <&clks IMX7ULP_CLK_LPSPI2>, <&clks IMX7ULP_CLK_DUMMY>; clock-names = "per", "ipg"; assigned-clocks = <&clks IMX7ULP_CLK_LPSPI2>; assigned-clock-parents = <&clks IMX7ULP_CLK_FIRC_BUS_CLK>; assigned-clock-rates = <48000000>; dmas = <&edma0 0 26>, <&edma0 0 25>; dma-names = "tx","rx"; status = "disabled"; }; lpspi3: lpspi@402A0000 { compatible = "fsl,imx7ulp-spi"; reg = <0x402A0000 0x10000>; interrupts = ; clocks = <&clks IMX7ULP_CLK_LPSPI3>, <&clks IMX7ULP_CLK_DUMMY>; clock-names = "per", "ipg"; assigned-clocks = <&clks IMX7ULP_CLK_LPSPI3>; assigned-clock-parents = <&clks IMX7ULP_CLK_FIRC_BUS_CLK>; assigned-clock-rates = <48000000>; dmas = <&edma0 0 28>, <&edma0 0 27>; dma-names = "tx","rx"; status = "disabled"; }; lpuart4: serial@402D0000 { compatible = "fsl,imx7ulp-lpuart"; reg = <0x402D0000 0x1000>; interrupts = ; clocks = <&clks IMX7ULP_CLK_LPUART4>; clock-names = "ipg"; assigned-clocks = <&clks IMX7ULP_CLK_LPUART4>; assigned-clock-parents = <&clks IMX7ULP_CLK_SOSC_BUS_CLK>; assigned-clock-rates = <24000000>; status = "disabled"; }; lpuart5: serial@402E0000 { compatible = "fsl,imx7ulp-lpuart"; reg = <0x402E0000 0x1000>; interrupts = ; clocks = <&clks IMX7ULP_CLK_LPUART5>; clock-names = "ipg"; assigned-clocks = <&clks IMX7ULP_CLK_LPUART5>; assigned-clock-parents = <&clks IMX7ULP_CLK_FIRC_BUS_CLK>; assigned-clock-rates = <48000000>; dmas = <&edma0 0 20>, <&edma0 0 19>; dma-names = "tx","rx"; status = "disabled"; }; usbotg1: usb@40330000 { compatible = "fsl,imx7ulp-usb", "fsl,imx6ul-usb", "fsl,imx27-usb"; reg = <0x40330000 0x200>; interrupts = ; clocks = <&clks IMX7ULP_CLK_USB0>; fsl,usbphy = <&usbphy1>; fsl,usbmisc = <&usbmisc1 0>; ahb-burst-config = <0x0>; tx-burst-size-dword = <0x8>; rx-burst-size-dword = <0x8>; status = "disabled"; }; usbmisc1: usbmisc@40330200 { #index-cells = <1>; compatible = "fsl,imx7ulp-usbmisc", "fsl,imx7d-usbmisc", "fsl,imx6q-usbmisc"; reg = <0x40330200 0x200>; }; usbphy1: usbphy@0x40350000 { compatible = "fsl,imx7ulp-usbphy", "fsl,imx6ul-usbphy", "fsl,imx23-usbphy"; reg = <0x40350000 0x1000>; interrupts = ; clocks = <&clks IMX7ULP_CLK_USB_PHY>; nxp,sim = <&sim>; }; usdhc0: usdhc@40370000 { compatible = "fsl,imx7ulp-usdhc"; reg = <0x40370000 0x10000>; interrupts = ; clocks = <&clks IMX7ULP_CLK_NIC1_BUS_DIV>, <&clks IMX7ULP_CLK_NIC1_DIV>, <&clks IMX7ULP_CLK_USDHC0>; clock-names ="ipg", "ahb", "per"; bus-width = <4>; assigned-clocks = <&clks IMX7ULP_CLK_APLL_PFD1>, <&clks IMX7ULP_CLK_USDHC0>; assigned-clock-parents = <0>, <&clks IMX7ULP_CLK_APLL_PFD1>; assigned-clock-rates = <0>, <352800000>; fsl,tuning-start-tap = <20>; fsl,tuning-step= <2>; status = "disabled"; }; usdhc1: usdhc@40380000 { compatible = "fsl,imx7ulp-usdhc"; reg = <0x40380000 0x10000>; interrupts = ; clocks = <&clks IMX7ULP_CLK_NIC1_BUS_DIV>, <&clks IMX7ULP_CLK_NIC1_DIV>, <&clks IMX7ULP_CLK_USDHC1>; clock-names ="ipg", "ahb", "per"; bus-width = <4>; assigned-clocks = <&clks IMX7ULP_CLK_APLL_PFD1>, <&clks IMX7ULP_CLK_USDHC1>; assigned-clock-parents = <0>, <&clks IMX7ULP_CLK_APLL_PFD1>; assigned-clock-rates = <0>, <176400000>; fsl,tuning-start-tap = <20>; fsl,tuning-step= <2>; status = "disabled"; }; wdog1: wdog@403D0000 { compatible = "fsl,imx7ulp-wdt"; reg = <0x403D0000 0x10000>; interrupts = ; clocks = <&clks IMX7ULP_CLK_WDG1>; assigned-clocks = <&clks IMX7ULP_CLK_WDG1>; assigned-clocks-parents = <&clks IMX7ULP_CLK_FIRC_BUS_CLK>; /* * As the 1KHz LPO clock rate is not trimed,the actually clock * is about 667Hz, so the init timeout 60s should set 40*1000 * in the TOVAL register. */ timeout-sec = <40>; }; wdog2: wdog@40430000 { compatible = "fsl,imx7ulp-wdt"; reg = <0x40430000 0x10000>; interrupts = ; clocks = <&clks IMX7ULP_CLK_WDG2>; assigned-clocks = <&clks IMX7ULP_CLK_WDG2>; assigned-clocks-parents = <&clks IMX7ULP_CLK_FIRC_BUS_CLK>; timeout-sec = <40>; }; clks: scg1@403E0000 { compatible = "fsl,imx7ulp-scg1"; reg = <0x403E0000 0x10000>; clocks = <&rosc>, <&sosc>, <&sirc>, <&firc>, <&upll>, <&mpll>; clock-names = "rosc", "sosc", "sirc", "firc", "upll", "mpll"; #clock-cells = <1>; assigned-clocks = <&clks IMX7ULP_CLK_LPTPM5>; assigned-clock-parents = <&clks IMX7ULP_CLK_SOSC_BUS_CLK>; }; pcc2: pcc2@403F0000 { compatible = "fsl,imx7ulp-pcc2"; reg = <0x403F0000 0x10000>; }; pmc1: pmc1@40400000 { compatible = "fsl,imx7ulp-pmc1"; reg = <0x40400000 0x1000>; }; smc1: smc1@40410000 { compatible = "fsl,imx7ulp-smc1"; reg = <0x40410000 0x1000>; }; }; ahbbridge1: ahb-bridge1@40800000 { compatible = "fsl,aips-bus", "simple-bus"; #address-cells = <1>; #size-cells = <1>; reg = <0x40800000 0x800000>; ranges; lpi2c6: lpi2c6@40A40000 { compatible = "fsl,imx7ulp-lpi2c"; reg = <0x40A40000 0x10000>; interrupts = ; clocks = <&clks IMX7ULP_CLK_LPI2C6>, <&clks IMX7ULP_CLK_NIC1_BUS_DIV>; clock-names = "per", "ipg"; assigned-clocks = <&clks IMX7ULP_CLK_LPI2C6>; assigned-clock-parents = <&clks IMX7ULP_CLK_FIRC_BUS_CLK>; assigned-clock-rates = <48000000>; status = "disabled"; }; lpi2c7: lpi2c7@40A50000 { compatible = "fsl,imx7ulp-lpi2c"; reg = <0x40A50000 0x10000>; interrupts = ; clocks = <&clks IMX7ULP_CLK_LPI2C7>, <&clks IMX7ULP_CLK_NIC1_BUS_DIV>; clock-names = "per", "ipg"; assigned-clocks = <&clks IMX7ULP_CLK_LPI2C7>; assigned-clock-parents = <&clks IMX7ULP_CLK_FIRC_BUS_CLK>; assigned-clock-rates = <48000000>; status = "disabled"; }; lpuart6: serial@40A60000 { compatible = "fsl,imx7ulp-lpuart"; reg = <0x40A60000 0x1000>; interrupts = ; clocks = <&clks IMX7ULP_CLK_LPUART6>; clock-names = "ipg"; assigned-clocks = <&clks IMX7ULP_CLK_LPUART6>; assigned-clock-parents = <&clks IMX7ULP_CLK_FIRC_BUS_CLK>; assigned-clock-rates = <48000000>; dmas = <&edma0 0 22>, <&edma0 0 21>; dma-names = "tx","rx"; status = "disabled"; }; lpuart7: serial@40A70000 { compatible = "fsl,imx7ulp-lpuart"; reg = <0x40A70000 0x1000>; interrupts = ; clocks = <&clks IMX7ULP_CLK_LPUART7>; clock-names = "ipg"; assigned-clocks = <&clks IMX7ULP_CLK_LPUART7>; assigned-clock-parents = <&clks IMX7ULP_CLK_FIRC_BUS_CLK>; assigned-clock-rates = <48000000>; dmas = <&edma0 0 24>, <&edma0 0 23>; dma-names = "tx","rx"; status = "disabled"; }; lcdif: lcdif@40AA0000 { compatible = "fsl,imx7ulp-lcdif"; reg = <0x40aa0000 0x10000>; interrupts = ; clocks = <&clks IMX7ULP_CLK_DUMMY>, <&clks IMX7ULP_CLK_LCDIF>, <&clks IMX7ULP_CLK_DUMMY>; clock-names = "axi", "pix", "disp_axi"; status = "disabled"; }; mipi_dsi: mipi_dsi@40A90000 { compatible = "fsl,imx7ulp-mipi-dsi"; reg = <0x40A90000 0x10000>; interrupts = ; clocks = <&clks IMX7ULP_CLK_DSI>; clock-names = "mipi_dsi_clk"; data-lanes-num = <2>; phy-ref-clkfreq = <24000000>; max-data-rate = <800000000>; sim = <&sim>; status = "disabled"; }; mmdc: mmdc@40ab0000 { compatible = "fsl,imx7ulp-mmdc", "fsl,imx6q-mmdc"; reg = <0x40ab0000 0x4000>; }; pcc3: pcc3@40B30000 { compatible = "fsl,imx7ulp-pcc3"; reg = <0x40B30000 0x10000>; }; iomuxc: iomuxc@4103D000 { compatible = "fsl,imx7ulp-iomuxc-0"; reg = <0x4103D000 0x1000>; status = "disabled"; }; iomuxc1: iomuxc1@40ac0000 { compatible = "fsl,imx7ulp-iomuxc-1"; reg = <0x40ac0000 0x1000>; }; gpio_ptc: gpio@40ae0000 { compatible = "fsl,vf610-gpio"; reg = <0x40ae0000 0x1000 0x400F0000 0x40>; gpio-controller; #gpio-cells = <2>; interrupts = ; interrupt-controller; #interrupt-cells = <2>; clocks = <&clks IMX7ULP_CLK_RGPIO2P1>, <&clks IMX7ULP_CLK_PCTLC>; clock-names = "port", "gpio"; gpio-ranges = <&iomuxc1 0 0 32>; }; gpio_ptd: gpio@40af0000 { compatible = "fsl,vf610-gpio"; reg = <0x40af0000 0x1000 0x400F0040 0x40>; gpio-controller; #gpio-cells = <2>; interrupts = ; interrupt-controller; #interrupt-cells = <2>; clocks = <&clks IMX7ULP_CLK_RGPIO2P1>, <&clks IMX7ULP_CLK_PCTLD>; clock-names = "port", "gpio"; gpio-ranges = <&iomuxc1 0 32 32>; }; gpio_pte: gpio@40b00000 { compatible = "fsl,vf610-gpio"; reg = <0x40b00000 0x1000 0x400F0080 0x40>; gpio-controller; #gpio-cells = <2>; interrupts = ; interrupt-controller; #interrupt-cells = <2>; clocks = <&clks IMX7ULP_CLK_RGPIO2P1>, <&clks IMX7ULP_CLK_PCTLE>; clock-names = "port", "gpio"; gpio-ranges = <&iomuxc1 0 64 32>; }; gpio_ptf: gpio@40b10000 { compatible = "fsl,vf610-gpio"; reg = <0x40b10000 0x1000 0x400F00c0 0x40>; gpio-controller; #gpio-cells = <2>; interrupts = ; interrupt-controller; #interrupt-cells = <2>; clocks = <&clks IMX7ULP_CLK_RGPIO2P1>, <&clks IMX7ULP_CLK_PCTLF>; clock-names = "port", "gpio"; gpio-ranges = <&iomuxc1 0 96 32>; }; pmc0: pmc0@410a1000 { compatible = "fsl,imx7ulp-pmc0"; reg = <0x410a1000 0x1000>; }; sim: sim@410a3000 { compatible = "fsl,imx7ulp-sim", "syscon"; reg = <0x410a3000 0x1000>; }; qspi1: qspi@410A5000 { #address-cells = <1>; #size-cells = <0>; compatible = "fsl,imx7ulp-qspi"; reg = <0x410A5000 0x1000>, <0xC0000000 0x10000000>; reg-names = "QuadSPI", "QuadSPI-memory"; interrupts = ; clocks = <&clks IMX7ULP_CLK_DUMMY>, <&clks IMX7ULP_CLK_DUMMY>; clock-names = "qspi_en", "qspi"; status = "disabled"; }; ocotp: ocotp@410a6000 { compatible = "fsl,imx7ulp-ocotp"; reg = <0x410a6000 0x4000>; clocks = <&clks IMX7ULP_CLK_DUMMY>; }; gpu: gpu@41800000 { compatible = "fsl,imx7ulp-gpu", "fsl,imx6q-gpu"; reg = <0x41800000 0x80000>, <0x41880000 0x80000>, <0x60000000 0x40000000>, <0x0 0x4000000>; reg-names = "iobase_3d", "iobase_2d", "phys_baseaddr", "contiguous_mem"; interrupts = , ; interrupt-names = "irq_3d", "irq_2d"; clocks = <&clks IMX7ULP_CLK_GPU3D>, <&clks IMX7ULP_CLK_DUMMY>, <&clks IMX7ULP_CLK_GPU_DIV>, <&clks IMX7ULP_CLK_GPU2D>, <&clks IMX7ULP_CLK_NIC1_DIV>; clock-names = "gpu3d_clk", "gpu3d_shader_clk", "gpu3d_axi_clk", "gpu2d_clk", "gpu2d_axi_clk"; }; }; heartbeat-rpmsg { compatible = "fsl,heartbeat-rpmsg"; }; rtc-rpmsg { compatible = "fsl,imx-rpmsg-rtc"; }; imx_ion { compatible = "fsl,mxc-ion"; fsl,heap-id = <0>; }; };