| // SPDX-License-Identifier: (GPL-2.0+ OR MIT) |
| /* |
| * Device Tree For AC5. |
| * |
| * Copyright (C) 2021 Marvell |
| * Copyright (C) 2022 Allied Telesis Labs |
| */ |
| |
| #include <dt-bindings/gpio/gpio.h> |
| #include <dt-bindings/interrupt-controller/arm-gic.h> |
| |
| / { |
| model = "Marvell AC5 SoC"; |
| compatible = "marvell,ac5"; |
| interrupt-parent = <&gic>; |
| #address-cells = <2>; |
| #size-cells = <2>; |
| |
| cpus { |
| #address-cells = <2>; |
| #size-cells = <0>; |
| |
| cpu-map { |
| cluster0 { |
| core0 { |
| cpu = <&cpu0>; |
| }; |
| core1 { |
| cpu = <&cpu1>; |
| }; |
| }; |
| }; |
| |
| cpu0: cpu@0 { |
| device_type = "cpu"; |
| compatible = "arm,cortex-a55"; |
| reg = <0x0 0x0>; |
| enable-method = "psci"; |
| next-level-cache = <&l2>; |
| }; |
| |
| cpu1: cpu@1 { |
| device_type = "cpu"; |
| compatible = "arm,cortex-a55"; |
| reg = <0x0 0x100>; |
| enable-method = "psci"; |
| next-level-cache = <&l2>; |
| }; |
| |
| l2: l2-cache { |
| compatible = "cache"; |
| cache-level = <2>; |
| cache-unified; |
| }; |
| }; |
| |
| psci { |
| compatible = "arm,psci-0.2"; |
| method = "smc"; |
| }; |
| |
| timer { |
| compatible = "arm,armv8-timer"; |
| interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>, |
| <GIC_PPI 8 IRQ_TYPE_LEVEL_HIGH>, |
| <GIC_PPI 10 IRQ_TYPE_LEVEL_HIGH>, |
| <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>; |
| }; |
| |
| pmu { |
| compatible = "arm,cortex-a55-pmu"; |
| interrupts = <GIC_PPI 12 IRQ_TYPE_LEVEL_HIGH>; |
| }; |
| |
| soc { |
| compatible = "simple-bus"; |
| #address-cells = <2>; |
| #size-cells = <2>; |
| ranges; |
| |
| internal-regs@7f000000 { |
| #address-cells = <1>; |
| #size-cells = <1>; |
| compatible = "simple-bus"; |
| /* 16M internal register @ 0x7f00_0000 */ |
| ranges = <0x0 0x0 0x7f000000 0x1000000>; |
| dma-coherent; |
| |
| uart0: serial@12000 { |
| compatible = "snps,dw-apb-uart"; |
| reg = <0x12000 0x100>; |
| reg-shift = <2>; |
| interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>; |
| reg-io-width = <1>; |
| clocks = <&cnm_clock>; |
| status = "okay"; |
| }; |
| |
| uart1: serial@12100 { |
| compatible = "snps,dw-apb-uart"; |
| reg = <0x12100 0x100>; |
| reg-shift = <2>; |
| interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>; |
| reg-io-width = <1>; |
| clocks = <&cnm_clock>; |
| status = "disabled"; |
| }; |
| |
| uart2: serial@12200 { |
| compatible = "snps,dw-apb-uart"; |
| reg = <0x12200 0x100>; |
| reg-shift = <2>; |
| interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>; |
| reg-io-width = <1>; |
| clocks = <&cnm_clock>; |
| status = "disabled"; |
| }; |
| |
| uart3: serial@12300 { |
| compatible = "snps,dw-apb-uart"; |
| reg = <0x12300 0x100>; |
| reg-shift = <2>; |
| interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>; |
| reg-io-width = <1>; |
| clocks = <&cnm_clock>; |
| status = "disabled"; |
| }; |
| |
| mdio: mdio@22004 { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| compatible = "marvell,orion-mdio"; |
| reg = <0x22004 0x4>; |
| clocks = <&cnm_clock>; |
| }; |
| |
| i2c0: i2c@11000 { |
| compatible = "marvell,mv78230-i2c"; |
| reg = <0x11000 0x20>; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| clocks = <&cnm_clock>; |
| clock-names = "core"; |
| interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>; |
| clock-frequency = <100000>; |
| |
| pinctrl-names = "default", "gpio"; |
| pinctrl-0 = <&i2c0_pins>; |
| pinctrl-1 = <&i2c0_gpio>; |
| scl-gpios = <&gpio0 26 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; |
| sda-gpios = <&gpio0 27 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; |
| status = "disabled"; |
| }; |
| |
| i2c1: i2c@11100 { |
| compatible = "marvell,mv78230-i2c"; |
| reg = <0x11100 0x20>; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| clocks = <&cnm_clock>; |
| clock-names = "core"; |
| interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>; |
| clock-frequency = <100000>; |
| |
| pinctrl-names = "default", "gpio"; |
| pinctrl-0 = <&i2c1_pins>; |
| pinctrl-1 = <&i2c1_gpio>; |
| scl-gpios = <&gpio0 20 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; |
| sda-gpios = <&gpio0 21 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; |
| status = "disabled"; |
| }; |
| |
| gpio0: gpio@18100 { |
| compatible = "marvell,orion-gpio"; |
| reg = <0x18100 0x40>; |
| ngpios = <32>; |
| gpio-controller; |
| #gpio-cells = <2>; |
| gpio-ranges = <&pinctrl0 0 0 32>; |
| marvell,pwm-offset = <0x1f0>; |
| interrupt-controller; |
| #interrupt-cells = <2>; |
| interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>, |
| <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>, |
| <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>, |
| <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>; |
| }; |
| |
| gpio1: gpio@18140 { |
| reg = <0x18140 0x40>; |
| compatible = "marvell,orion-gpio"; |
| ngpios = <14>; |
| gpio-controller; |
| #gpio-cells = <2>; |
| gpio-ranges = <&pinctrl0 0 32 14>; |
| marvell,pwm-offset = <0x1f0>; |
| interrupt-controller; |
| #interrupt-cells = <2>; |
| interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>, |
| <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>; |
| }; |
| }; |
| |
| mmc_dma: bus@80500000 { |
| compatible = "simple-bus"; |
| ranges; |
| #address-cells = <0x2>; |
| #size-cells = <0x2>; |
| reg = <0x0 0x80500000 0x0 0x100000>; |
| dma-ranges = <0x0 0x0 0x2 0x0 0x0 0x80000000>; |
| dma-coherent; |
| |
| sdhci: mmc@805c0000 { |
| compatible = "marvell,ac5-sdhci", |
| "marvell,armada-ap806-sdhci"; |
| reg = <0x0 0x805c0000 0x0 0x1000>; |
| interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>; |
| clocks = <&emmc_clock>, <&cnm_clock>; |
| clock-names = "core", "axi"; |
| bus-width = <8>; |
| non-removable; |
| mmc-ddr-1_8v; |
| mmc-hs200-1_8v; |
| mmc-hs400-1_8v; |
| }; |
| }; |
| |
| /* |
| * Dedicated section for devices behind 32bit controllers so we |
| * can configure specific DMA mapping for them |
| */ |
| behind-32bit-controller@7f000000 { |
| compatible = "simple-bus"; |
| #address-cells = <0x2>; |
| #size-cells = <0x2>; |
| ranges = <0x0 0x0 0x0 0x7f000000 0x0 0x1000000>; |
| /* Host phy ram starts at 0x200M */ |
| dma-ranges = <0x0 0x0 0x2 0x0 0x1 0x0>; |
| dma-coherent; |
| |
| eth0: ethernet@20000 { |
| compatible = "marvell,armada-ac5-neta"; |
| reg = <0x0 0x20000 0x0 0x4000>; |
| interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>; |
| clocks = <&cnm_clock>; |
| phy-mode = "sgmii"; |
| status = "disabled"; |
| }; |
| |
| eth1: ethernet@24000 { |
| compatible = "marvell,armada-ac5-neta"; |
| reg = <0x0 0x24000 0x0 0x4000>; |
| interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>; |
| clocks = <&cnm_clock>; |
| phy-mode = "sgmii"; |
| status = "disabled"; |
| }; |
| |
| usb0: usb@80000 { |
| compatible = "marvell,orion-ehci"; |
| reg = <0x0 0x80000 0x0 0x500>; |
| interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>; |
| status = "disabled"; |
| }; |
| |
| usb1: usb@a0000 { |
| compatible = "marvell,orion-ehci"; |
| reg = <0x0 0xa0000 0x0 0x500>; |
| interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>; |
| status = "disabled"; |
| }; |
| }; |
| |
| pinctrl0: pinctrl@80020100 { |
| compatible = "marvell,ac5-pinctrl"; |
| reg = <0 0x80020100 0 0x20>; |
| |
| i2c0_pins: i2c0-pins { |
| marvell,pins = "mpp26", "mpp27"; |
| marvell,function = "i2c0"; |
| }; |
| |
| i2c0_gpio: i2c0-gpio-pins { |
| marvell,pins = "mpp26", "mpp27"; |
| marvell,function = "gpio"; |
| }; |
| |
| i2c1_pins: i2c1-pins { |
| marvell,pins = "mpp20", "mpp21"; |
| marvell,function = "i2c1"; |
| }; |
| |
| i2c1_gpio: i2c1-gpio-pins { |
| marvell,pins = "mpp20", "mpp21"; |
| marvell,function = "i2c1"; |
| }; |
| }; |
| |
| spi0: spi@805a0000 { |
| compatible = "marvell,armada-3700-spi"; |
| reg = <0x0 0x805a0000 0x0 0x50>; |
| #address-cells = <0x1>; |
| #size-cells = <0x0>; |
| clocks = <&spi_clock>; |
| interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>; |
| num-cs = <1>; |
| status = "disabled"; |
| }; |
| |
| spi1: spi@805a8000 { |
| compatible = "marvell,armada-3700-spi"; |
| reg = <0x0 0x805a8000 0x0 0x50>; |
| #address-cells = <0x1>; |
| #size-cells = <0x0>; |
| clocks = <&spi_clock>; |
| interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>; |
| num-cs = <1>; |
| status = "disabled"; |
| }; |
| |
| nand: nand-controller@805b0000 { |
| compatible = "marvell,ac5-nand-controller"; |
| reg = <0x0 0x805b0000 0x0 0x00000054>; |
| #address-cells = <0x1>; |
| #size-cells = <0x0>; |
| interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>; |
| clocks = <&nand_clock>; |
| status = "disabled"; |
| }; |
| |
| gic: interrupt-controller@80600000 { |
| compatible = "arm,gic-v3"; |
| #interrupt-cells = <3>; |
| interrupt-controller; |
| reg = <0x0 0x80600000 0x0 0x10000>, /* GICD */ |
| <0x0 0x80660000 0x0 0x40000>; /* GICR */ |
| interrupts = <GIC_PPI 6 IRQ_TYPE_LEVEL_HIGH>; |
| }; |
| }; |
| |
| clocks { |
| cnm_clock: cnm-clock { |
| compatible = "fixed-clock"; |
| #clock-cells = <0>; |
| clock-frequency = <328000000>; |
| }; |
| |
| spi_clock: spi-clock { |
| compatible = "fixed-clock"; |
| #clock-cells = <0>; |
| clock-frequency = <200000000>; |
| }; |
| |
| nand_clock: nand-clock { |
| compatible = "fixed-clock"; |
| #clock-cells = <0>; |
| clock-frequency = <400000000>; |
| }; |
| |
| emmc_clock: emmc-clock { |
| compatible = "fixed-clock"; |
| #clock-cells = <0>; |
| clock-frequency = <400000000>; |
| }; |
| }; |
| }; |