// SPDX-License-Identifier: (GPL-2.0 OR MIT) // // Device Tree Include file for Layerscape-LX2160A family SoC. // // Copyright 2018 NXP #include #include /memreserve/ 0x80000000 0x00010000; / { compatible = "fsl,lx2160a"; interrupt-parent = <&gic>; #address-cells = <2>; #size-cells = <2>; cpus { #address-cells = <1>; #size-cells = <0>; // 8 clusters having 2 Cortex-A72 cores each cpu@0 { device_type = "cpu"; compatible = "arm,cortex-a72"; enable-method = "psci"; reg = <0x0>; clocks = <&clockgen 1 0>; d-cache-size = <0x8000>; d-cache-line-size = <64>; d-cache-sets = <128>; i-cache-size = <0xC000>; i-cache-line-size = <64>; i-cache-sets = <192>; next-level-cache = <&cluster0_l2>; cpu-idle-states = <&cpu_pw20>; }; cpu@1 { device_type = "cpu"; compatible = "arm,cortex-a72"; enable-method = "psci"; reg = <0x1>; clocks = <&clockgen 1 0>; d-cache-size = <0x8000>; d-cache-line-size = <64>; d-cache-sets = <128>; i-cache-size = <0xC000>; i-cache-line-size = <64>; i-cache-sets = <192>; next-level-cache = <&cluster0_l2>; cpu-idle-states = <&cpu_pw20>; }; cpu@100 { device_type = "cpu"; compatible = "arm,cortex-a72"; enable-method = "psci"; reg = <0x100>; clocks = <&clockgen 1 1>; d-cache-size = <0x8000>; d-cache-line-size = <64>; d-cache-sets = <128>; i-cache-size = <0xC000>; i-cache-line-size = <64>; i-cache-sets = <192>; next-level-cache = <&cluster1_l2>; cpu-idle-states = <&cpu_pw20>; }; cpu@101 { device_type = "cpu"; compatible = "arm,cortex-a72"; enable-method = "psci"; reg = <0x101>; clocks = <&clockgen 1 1>; d-cache-size = <0x8000>; d-cache-line-size = <64>; d-cache-sets = <128>; i-cache-size = <0xC000>; i-cache-line-size = <64>; i-cache-sets = <192>; next-level-cache = <&cluster1_l2>; cpu-idle-states = <&cpu_pw20>; }; cpu@200 { device_type = "cpu"; compatible = "arm,cortex-a72"; enable-method = "psci"; reg = <0x200>; clocks = <&clockgen 1 2>; d-cache-size = <0x8000>; d-cache-line-size = <64>; d-cache-sets = <128>; i-cache-size = <0xC000>; i-cache-line-size = <64>; i-cache-sets = <192>; next-level-cache = <&cluster2_l2>; cpu-idle-states = <&cpu_pw20>; }; cpu@201 { device_type = "cpu"; compatible = "arm,cortex-a72"; enable-method = "psci"; reg = <0x201>; clocks = <&clockgen 1 2>; d-cache-size = <0x8000>; d-cache-line-size = <64>; d-cache-sets = <128>; i-cache-size = <0xC000>; i-cache-line-size = <64>; i-cache-sets = <192>; next-level-cache = <&cluster2_l2>; cpu-idle-states = <&cpu_pw20>; }; cpu@300 { device_type = "cpu"; compatible = "arm,cortex-a72"; enable-method = "psci"; reg = <0x300>; clocks = <&clockgen 1 3>; d-cache-size = <0x8000>; d-cache-line-size = <64>; d-cache-sets = <128>; i-cache-size = <0xC000>; i-cache-line-size = <64>; i-cache-sets = <192>; next-level-cache = <&cluster3_l2>; cpu-idle-states = <&cpu_pw20>; }; cpu@301 { device_type = "cpu"; compatible = "arm,cortex-a72"; enable-method = "psci"; reg = <0x301>; clocks = <&clockgen 1 3>; d-cache-size = <0x8000>; d-cache-line-size = <64>; d-cache-sets = <128>; i-cache-size = <0xC000>; i-cache-line-size = <64>; i-cache-sets = <192>; next-level-cache = <&cluster3_l2>; cpu-idle-states = <&cpu_pw20>; }; cpu@400 { device_type = "cpu"; compatible = "arm,cortex-a72"; enable-method = "psci"; reg = <0x400>; clocks = <&clockgen 1 4>; d-cache-size = <0x8000>; d-cache-line-size = <64>; d-cache-sets = <128>; i-cache-size = <0xC000>; i-cache-line-size = <64>; i-cache-sets = <192>; next-level-cache = <&cluster4_l2>; cpu-idle-states = <&cpu_pw20>; }; cpu@401 { device_type = "cpu"; compatible = "arm,cortex-a72"; enable-method = "psci"; reg = <0x401>; clocks = <&clockgen 1 4>; d-cache-size = <0x8000>; d-cache-line-size = <64>; d-cache-sets = <128>; i-cache-size = <0xC000>; i-cache-line-size = <64>; i-cache-sets = <192>; next-level-cache = <&cluster4_l2>; cpu-idle-states = <&cpu_pw20>; }; cpu@500 { device_type = "cpu"; compatible = "arm,cortex-a72"; enable-method = "psci"; reg = <0x500>; clocks = <&clockgen 1 5>; d-cache-size = <0x8000>; d-cache-line-size = <64>; d-cache-sets = <128>; i-cache-size = <0xC000>; i-cache-line-size = <64>; i-cache-sets = <192>; next-level-cache = <&cluster5_l2>; cpu-idle-states = <&cpu_pw20>; }; cpu@501 { device_type = "cpu"; compatible = "arm,cortex-a72"; enable-method = "psci"; reg = <0x501>; clocks = <&clockgen 1 5>; d-cache-size = <0x8000>; d-cache-line-size = <64>; d-cache-sets = <128>; i-cache-size = <0xC000>; i-cache-line-size = <64>; i-cache-sets = <192>; next-level-cache = <&cluster5_l2>; cpu-idle-states = <&cpu_pw20>; }; cpu@600 { device_type = "cpu"; compatible = "arm,cortex-a72"; enable-method = "psci"; reg = <0x600>; clocks = <&clockgen 1 6>; d-cache-size = <0x8000>; d-cache-line-size = <64>; d-cache-sets = <128>; i-cache-size = <0xC000>; i-cache-line-size = <64>; i-cache-sets = <192>; next-level-cache = <&cluster6_l2>; cpu-idle-states = <&cpu_pw20>; }; cpu@601 { device_type = "cpu"; compatible = "arm,cortex-a72"; enable-method = "psci"; reg = <0x601>; clocks = <&clockgen 1 6>; d-cache-size = <0x8000>; d-cache-line-size = <64>; d-cache-sets = <128>; i-cache-size = <0xC000>; i-cache-line-size = <64>; i-cache-sets = <192>; next-level-cache = <&cluster6_l2>; cpu-idle-states = <&cpu_pw20>; }; cpu@700 { device_type = "cpu"; compatible = "arm,cortex-a72"; enable-method = "psci"; reg = <0x700>; clocks = <&clockgen 1 7>; d-cache-size = <0x8000>; d-cache-line-size = <64>; d-cache-sets = <128>; i-cache-size = <0xC000>; i-cache-line-size = <64>; i-cache-sets = <192>; next-level-cache = <&cluster7_l2>; cpu-idle-states = <&cpu_pw20>; }; cpu@701 { device_type = "cpu"; compatible = "arm,cortex-a72"; enable-method = "psci"; reg = <0x701>; clocks = <&clockgen 1 7>; d-cache-size = <0x8000>; d-cache-line-size = <64>; d-cache-sets = <128>; i-cache-size = <0xC000>; i-cache-line-size = <64>; i-cache-sets = <192>; next-level-cache = <&cluster7_l2>; cpu-idle-states = <&cpu_pw20>; }; cluster0_l2: l2-cache0 { compatible = "cache"; cache-size = <0x100000>; cache-line-size = <64>; cache-sets = <1024>; cache-level = <2>; }; cluster1_l2: l2-cache1 { compatible = "cache"; cache-size = <0x100000>; cache-line-size = <64>; cache-sets = <1024>; cache-level = <2>; }; cluster2_l2: l2-cache2 { compatible = "cache"; cache-size = <0x100000>; cache-line-size = <64>; cache-sets = <1024>; cache-level = <2>; }; cluster3_l2: l2-cache3 { compatible = "cache"; cache-size = <0x100000>; cache-line-size = <64>; cache-sets = <1024>; cache-level = <2>; }; cluster4_l2: l2-cache4 { compatible = "cache"; cache-size = <0x100000>; cache-line-size = <64>; cache-sets = <1024>; cache-level = <2>; }; cluster5_l2: l2-cache5 { compatible = "cache"; cache-size = <0x100000>; cache-line-size = <64>; cache-sets = <1024>; cache-level = <2>; }; cluster6_l2: l2-cache6 { compatible = "cache"; cache-size = <0x100000>; cache-line-size = <64>; cache-sets = <1024>; cache-level = <2>; }; cluster7_l2: l2-cache7 { compatible = "cache"; cache-size = <0x100000>; cache-line-size = <64>; cache-sets = <1024>; cache-level = <2>; }; cpu_pw20: cpu-pw20 { compatible = "arm,idle-state"; idle-state-name = "PW20"; arm,psci-suspend-param = <0x0>; entry-latency-us = <2000>; exit-latency-us = <2000>; min-residency-us = <6000>; }; }; gic: interrupt-controller@6000000 { compatible = "arm,gic-v3"; reg = <0x0 0x06000000 0 0x10000>, // GIC Dist <0x0 0x06200000 0 0x200000>, // GICR (RD_base + // SGI_base) <0x0 0x0c0c0000 0 0x2000>, // GICC <0x0 0x0c0d0000 0 0x1000>, // GICH <0x0 0x0c0e0000 0 0x20000>; // GICV #interrupt-cells = <3>; #address-cells = <2>; #size-cells = <2>; ranges; interrupt-controller; interrupts = ; its: gic-its@6020000 { compatible = "arm,gic-v3-its"; msi-controller; reg = <0x0 0x6020000 0 0x20000>; }; }; timer { compatible = "arm,armv8-timer"; interrupts = , , , ; }; pmu { compatible = "arm,cortex-a72-pmu"; interrupts = ; }; psci { compatible = "arm,psci-0.2"; method = "smc"; }; memory@80000000 { // DRAM space - 1, size : 2 GB DRAM device_type = "memory"; reg = <0x00000000 0x80000000 0 0x80000000>; }; ddr1: memory-controller@1080000 { compatible = "fsl,qoriq-memory-controller"; reg = <0x0 0x1080000 0x0 0x1000>; interrupts = ; little-endian; }; ddr2: memory-controller@1090000 { compatible = "fsl,qoriq-memory-controller"; reg = <0x0 0x1090000 0x0 0x1000>; interrupts = ; little-endian; }; // One clock unit-sysclk node which bootloader require during DT fix-up sysclk: sysclk { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <100000000>; // fixed up by bootloader clock-output-names = "sysclk"; }; soc { compatible = "simple-bus"; #address-cells = <2>; #size-cells = <2>; ranges; dma-ranges = <0x0 0x0 0x0 0x0 0x10000 0x00000000>; crypto: crypto@8000000 { compatible = "fsl,sec-v5.0", "fsl,sec-v4.0"; fsl,sec-era = <10>; #address-cells = <1>; #size-cells = <1>; ranges = <0x0 0x00 0x8000000 0x100000>; reg = <0x00 0x8000000 0x0 0x100000>; interrupts = ; dma-coherent; status = "disabled"; sec_jr0: jr@10000 { compatible = "fsl,sec-v5.0-job-ring", "fsl,sec-v4.0-job-ring"; reg = <0x10000 0x10000>; interrupts = ; }; sec_jr1: jr@20000 { compatible = "fsl,sec-v5.0-job-ring", "fsl,sec-v4.0-job-ring"; reg = <0x20000 0x10000>; interrupts = ; }; sec_jr2: jr@30000 { compatible = "fsl,sec-v5.0-job-ring", "fsl,sec-v4.0-job-ring"; reg = <0x30000 0x10000>; interrupts = ; }; sec_jr3: jr@40000 { compatible = "fsl,sec-v5.0-job-ring", "fsl,sec-v4.0-job-ring"; reg = <0x40000 0x10000>; interrupts = ; }; }; clockgen: clock-controller@1300000 { compatible = "fsl,lx2160a-clockgen"; reg = <0 0x1300000 0 0xa0000>; #clock-cells = <2>; clocks = <&sysclk>; }; dcfg: syscon@1e00000 { compatible = "fsl,lx2160a-dcfg", "syscon"; reg = <0x0 0x1e00000 0x0 0x10000>; little-endian; }; i2c0: i2c@2000000 { compatible = "fsl,vf610-i2c"; #address-cells = <1>; #size-cells = <0>; reg = <0x0 0x2000000 0x0 0x10000>; interrupts = ; clock-names = "i2c"; clocks = <&clockgen 4 15>; scl-gpio = <&gpio2 15 GPIO_ACTIVE_HIGH>; status = "disabled"; }; i2c1: i2c@2010000 { compatible = "fsl,vf610-i2c"; #address-cells = <1>; #size-cells = <0>; reg = <0x0 0x2010000 0x0 0x10000>; interrupts = ; clock-names = "i2c"; clocks = <&clockgen 4 15>; status = "disabled"; }; i2c2: i2c@2020000 { compatible = "fsl,vf610-i2c"; #address-cells = <1>; #size-cells = <0>; reg = <0x0 0x2020000 0x0 0x10000>; interrupts = ; clock-names = "i2c"; clocks = <&clockgen 4 15>; status = "disabled"; }; i2c3: i2c@2030000 { compatible = "fsl,vf610-i2c"; #address-cells = <1>; #size-cells = <0>; reg = <0x0 0x2030000 0x0 0x10000>; interrupts = ; clock-names = "i2c"; clocks = <&clockgen 4 15>; status = "disabled"; }; i2c4: i2c@2040000 { compatible = "fsl,vf610-i2c"; #address-cells = <1>; #size-cells = <0>; reg = <0x0 0x2040000 0x0 0x10000>; interrupts = ; clock-names = "i2c"; clocks = <&clockgen 4 15>; scl-gpio = <&gpio2 16 GPIO_ACTIVE_HIGH>; status = "disabled"; }; i2c5: i2c@2050000 { compatible = "fsl,vf610-i2c"; #address-cells = <1>; #size-cells = <0>; reg = <0x0 0x2050000 0x0 0x10000>; interrupts = ; clock-names = "i2c"; clocks = <&clockgen 4 15>; status = "disabled"; }; i2c6: i2c@2060000 { compatible = "fsl,vf610-i2c"; #address-cells = <1>; #size-cells = <0>; reg = <0x0 0x2060000 0x0 0x10000>; interrupts = ; clock-names = "i2c"; clocks = <&clockgen 4 15>; status = "disabled"; }; i2c7: i2c@2070000 { compatible = "fsl,vf610-i2c"; #address-cells = <1>; #size-cells = <0>; reg = <0x0 0x2070000 0x0 0x10000>; interrupts = ; clock-names = "i2c"; clocks = <&clockgen 4 15>; status = "disabled"; }; fspi: spi@20c0000 { compatible = "nxp,lx2160a-fspi"; #address-cells = <1>; #size-cells = <0>; reg = <0x0 0x20c0000 0x0 0x10000>, <0x0 0x20000000 0x0 0x10000000>; reg-names = "fspi_base", "fspi_mmap"; interrupts = ; clocks = <&clockgen 4 3>, <&clockgen 4 3>; clock-names = "fspi_en", "fspi"; status = "disabled"; }; esdhc0: esdhc@2140000 { compatible = "fsl,esdhc"; reg = <0x0 0x2140000 0x0 0x10000>; interrupts = <0 28 0x4>; /* Level high type */ clocks = <&clockgen 4 1>; voltage-ranges = <1800 1800 3300 3300>; sdhci,auto-cmd12; little-endian; bus-width = <4>; status = "disabled"; }; esdhc1: esdhc@2150000 { compatible = "fsl,esdhc"; reg = <0x0 0x2150000 0x0 0x10000>; interrupts = <0 63 0x4>; /* Level high type */ clocks = <&clockgen 4 1>; voltage-ranges = <1800 1800 3300 3300>; sdhci,auto-cmd12; broken-cd; little-endian; bus-width = <4>; status = "disabled"; }; uart0: serial@21c0000 { compatible = "arm,sbsa-uart","arm,pl011"; reg = <0x0 0x21c0000 0x0 0x1000>; interrupts = ; current-speed = <115200>; status = "disabled"; }; uart1: serial@21d0000 { compatible = "arm,sbsa-uart","arm,pl011"; reg = <0x0 0x21d0000 0x0 0x1000>; interrupts = ; current-speed = <115200>; status = "disabled"; }; uart2: serial@21e0000 { compatible = "arm,sbsa-uart","arm,pl011"; reg = <0x0 0x21e0000 0x0 0x1000>; interrupts = ; current-speed = <115200>; status = "disabled"; }; uart3: serial@21f0000 { compatible = "arm,sbsa-uart","arm,pl011"; reg = <0x0 0x21f0000 0x0 0x1000>; interrupts = ; current-speed = <115200>; status = "disabled"; }; gpio0: gpio@2300000 { compatible = "fsl,qoriq-gpio"; reg = <0x0 0x2300000 0x0 0x10000>; interrupts = ; gpio-controller; little-endian; #gpio-cells = <2>; interrupt-controller; #interrupt-cells = <2>; }; gpio1: gpio@2310000 { compatible = "fsl,qoriq-gpio"; reg = <0x0 0x2310000 0x0 0x10000>; interrupts = ; gpio-controller; little-endian; #gpio-cells = <2>; interrupt-controller; #interrupt-cells = <2>; }; gpio2: gpio@2320000 { compatible = "fsl,qoriq-gpio"; reg = <0x0 0x2320000 0x0 0x10000>; interrupts = ; gpio-controller; little-endian; #gpio-cells = <2>; interrupt-controller; #interrupt-cells = <2>; }; gpio3: gpio@2330000 { compatible = "fsl,qoriq-gpio"; reg = <0x0 0x2330000 0x0 0x10000>; interrupts = ; gpio-controller; little-endian; #gpio-cells = <2>; interrupt-controller; #interrupt-cells = <2>; }; watchdog@23a0000 { compatible = "arm,sbsa-gwdt"; reg = <0x0 0x23a0000 0 0x1000>, <0x0 0x2390000 0 0x1000>; interrupts = ; timeout-sec = <30>; }; usb0: usb@3100000 { compatible = "snps,dwc3"; reg = <0x0 0x3100000 0x0 0x10000>; interrupts = ; dr_mode = "host"; snps,quirk-frame-length-adjustment = <0x20>; snps,dis_rxdet_inp3_quirk; snps,incr-burst-type-adjustment = <1>, <4>, <8>, <16>; status = "disabled"; }; usb1: usb@3110000 { compatible = "snps,dwc3"; reg = <0x0 0x3110000 0x0 0x10000>; interrupts = ; dr_mode = "host"; snps,quirk-frame-length-adjustment = <0x20>; snps,dis_rxdet_inp3_quirk; snps,incr-burst-type-adjustment = <1>, <4>, <8>, <16>; status = "disabled"; }; sata0: sata@3200000 { compatible = "fsl,lx2160a-ahci"; reg = <0x0 0x3200000 0x0 0x10000>, <0x7 0x100520 0x0 0x4>; reg-names = "ahci", "sata-ecc"; interrupts = ; clocks = <&clockgen 4 3>; dma-coherent; status = "disabled"; }; sata1: sata@3210000 { compatible = "fsl,lx2160a-ahci"; reg = <0x0 0x3210000 0x0 0x10000>, <0x7 0x100520 0x0 0x4>; reg-names = "ahci", "sata-ecc"; interrupts = ; clocks = <&clockgen 4 3>; dma-coherent; status = "disabled"; }; sata2: sata@3220000 { compatible = "fsl,lx2160a-ahci"; reg = <0x0 0x3220000 0x0 0x10000>, <0x7 0x100520 0x0 0x4>; reg-names = "ahci", "sata-ecc"; interrupts = ; clocks = <&clockgen 4 3>; dma-coherent; status = "disabled"; }; sata3: sata@3230000 { compatible = "fsl,lx2160a-ahci"; reg = <0x0 0x3230000 0x0 0x10000>, <0x7 0x100520 0x0 0x4>; reg-names = "ahci", "sata-ecc"; interrupts = ; clocks = <&clockgen 4 3>; dma-coherent; status = "disabled"; }; smmu: iommu@5000000 { compatible = "arm,mmu-500"; reg = <0 0x5000000 0 0x800000>; #iommu-cells = <1>; #global-interrupts = <14>; // global secure fault interrupts = , // combined secure , // global non-secure fault , // combined non-secure , // performance counter interrupts 0-9 , , , , , , , , , , // per context interrupt, 64 interrupts , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ; dma-coherent; }; console@8340020 { compatible = "fsl,dpaa2-console"; reg = <0x00000000 0x08340020 0 0x2>; }; ptp-timer@8b95000 { compatible = "fsl,dpaa2-ptp"; reg = <0x0 0x8b95000 0x0 0x100>; clocks = <&clockgen 4 1>; little-endian; fsl,extts-fifo; }; fsl_mc: fsl-mc@80c000000 { compatible = "fsl,qoriq-mc"; reg = <0x00000008 0x0c000000 0 0x40>, <0x00000000 0x08340000 0 0x40000>; msi-parent = <&its>; /* iommu-map property is fixed up by u-boot */ iommu-map = <0 &smmu 0 0>; dma-coherent; #address-cells = <3>; #size-cells = <1>; /* * Region type 0x0 - MC portals * Region type 0x1 - QBMAN portals */ ranges = <0x0 0x0 0x0 0x8 0x0c000000 0x4000000 0x1 0x0 0x0 0x8 0x18000000 0x8000000>; /* * Define the maximum number of MACs present on the SoC. */ dpmacs { #address-cells = <1>; #size-cells = <0>; dpmac1: dpmac@1 { compatible = "fsl,qoriq-mc-dpmac"; reg = <0x1>; }; dpmac2: dpmac@2 { compatible = "fsl,qoriq-mc-dpmac"; reg = <0x2>; }; dpmac3: dpmac@3 { compatible = "fsl,qoriq-mc-dpmac"; reg = <0x3>; }; dpmac4: dpmac@4 { compatible = "fsl,qoriq-mc-dpmac"; reg = <0x4>; }; dpmac5: dpmac@5 { compatible = "fsl,qoriq-mc-dpmac"; reg = <0x5>; }; dpmac6: dpmac@6 { compatible = "fsl,qoriq-mc-dpmac"; reg = <0x6>; }; dpmac7: dpmac@7 { compatible = "fsl,qoriq-mc-dpmac"; reg = <0x7>; }; dpmac8: dpmac@8 { compatible = "fsl,qoriq-mc-dpmac"; reg = <0x8>; }; dpmac9: dpmac@9 { compatible = "fsl,qoriq-mc-dpmac"; reg = <0x9>; }; dpmac10: dpmac@a { compatible = "fsl,qoriq-mc-dpmac"; reg = <0xa>; }; dpmac11: dpmac@b { compatible = "fsl,qoriq-mc-dpmac"; reg = <0xb>; }; dpmac12: dpmac@c { compatible = "fsl,qoriq-mc-dpmac"; reg = <0xc>; }; dpmac13: dpmac@d { compatible = "fsl,qoriq-mc-dpmac"; reg = <0xd>; }; dpmac14: dpmac@e { compatible = "fsl,qoriq-mc-dpmac"; reg = <0xe>; }; dpmac15: dpmac@f { compatible = "fsl,qoriq-mc-dpmac"; reg = <0xf>; }; dpmac16: dpmac@10 { compatible = "fsl,qoriq-mc-dpmac"; reg = <0x10>; }; dpmac17: dpmac@11 { compatible = "fsl,qoriq-mc-dpmac"; reg = <0x11>; }; dpmac18: dpmac@12 { compatible = "fsl,qoriq-mc-dpmac"; reg = <0x12>; }; }; }; }; };