1*f126890aSEmmanuel Vadot// SPDX-License-Identifier: ISC 2*f126890aSEmmanuel Vadot/* 3*f126890aSEmmanuel Vadot * Device Tree file for Intel XScale Network Processors 4*f126890aSEmmanuel Vadot * in the IXP 4xx series. 5*f126890aSEmmanuel Vadot */ 6*f126890aSEmmanuel Vadot#include <dt-bindings/interrupt-controller/irq.h> 7*f126890aSEmmanuel Vadot#include <dt-bindings/gpio/gpio.h> 8*f126890aSEmmanuel Vadot 9*f126890aSEmmanuel Vadot/ { 10*f126890aSEmmanuel Vadot soc { 11*f126890aSEmmanuel Vadot #address-cells = <1>; 12*f126890aSEmmanuel Vadot #size-cells = <1>; 13*f126890aSEmmanuel Vadot ranges; 14*f126890aSEmmanuel Vadot compatible = "simple-bus"; 15*f126890aSEmmanuel Vadot interrupt-parent = <&intcon>; 16*f126890aSEmmanuel Vadot 17*f126890aSEmmanuel Vadot /* 18*f126890aSEmmanuel Vadot * The IXP4xx expansion bus is a set of up to 7 each up to 16MB 19*f126890aSEmmanuel Vadot * windows in the 256MB space from 0x50000000 to 0x5fffffff. 20*f126890aSEmmanuel Vadot */ 21*f126890aSEmmanuel Vadot bus@c4000000 { 22*f126890aSEmmanuel Vadot /* compatible and reg filled in by per-soc device tree */ 23*f126890aSEmmanuel Vadot native-endian; 24*f126890aSEmmanuel Vadot #address-cells = <2>; 25*f126890aSEmmanuel Vadot #size-cells = <1>; 26*f126890aSEmmanuel Vadot ranges = <0 0x0 0x50000000 0x01000000>, 27*f126890aSEmmanuel Vadot <1 0x0 0x51000000 0x01000000>, 28*f126890aSEmmanuel Vadot <2 0x0 0x52000000 0x01000000>, 29*f126890aSEmmanuel Vadot <3 0x0 0x53000000 0x01000000>, 30*f126890aSEmmanuel Vadot <4 0x0 0x54000000 0x01000000>, 31*f126890aSEmmanuel Vadot <5 0x0 0x55000000 0x01000000>, 32*f126890aSEmmanuel Vadot <6 0x0 0x56000000 0x01000000>, 33*f126890aSEmmanuel Vadot <7 0x0 0x57000000 0x01000000>; 34*f126890aSEmmanuel Vadot dma-ranges = <0 0x0 0x50000000 0x01000000>, 35*f126890aSEmmanuel Vadot <1 0x0 0x51000000 0x01000000>, 36*f126890aSEmmanuel Vadot <2 0x0 0x52000000 0x01000000>, 37*f126890aSEmmanuel Vadot <3 0x0 0x53000000 0x01000000>, 38*f126890aSEmmanuel Vadot <4 0x0 0x54000000 0x01000000>, 39*f126890aSEmmanuel Vadot <5 0x0 0x55000000 0x01000000>, 40*f126890aSEmmanuel Vadot <6 0x0 0x56000000 0x01000000>, 41*f126890aSEmmanuel Vadot <7 0x0 0x57000000 0x01000000>; 42*f126890aSEmmanuel Vadot }; 43*f126890aSEmmanuel Vadot 44*f126890aSEmmanuel Vadot qmgr: queue-manager@60000000 { 45*f126890aSEmmanuel Vadot compatible = "intel,ixp4xx-ahb-queue-manager"; 46*f126890aSEmmanuel Vadot reg = <0x60000000 0x4000>; 47*f126890aSEmmanuel Vadot interrupts = <3 IRQ_TYPE_LEVEL_HIGH>, <4 IRQ_TYPE_LEVEL_HIGH>; 48*f126890aSEmmanuel Vadot }; 49*f126890aSEmmanuel Vadot 50*f126890aSEmmanuel Vadot pci@c0000000 { 51*f126890aSEmmanuel Vadot /* compatible filled in by per-soc device tree */ 52*f126890aSEmmanuel Vadot reg = <0xc0000000 0x1000>; 53*f126890aSEmmanuel Vadot interrupts = <8 IRQ_TYPE_LEVEL_HIGH>, 54*f126890aSEmmanuel Vadot <9 IRQ_TYPE_LEVEL_HIGH>, 55*f126890aSEmmanuel Vadot <10 IRQ_TYPE_LEVEL_HIGH>; 56*f126890aSEmmanuel Vadot #address-cells = <3>; 57*f126890aSEmmanuel Vadot #size-cells = <2>; 58*f126890aSEmmanuel Vadot device_type = "pci"; 59*f126890aSEmmanuel Vadot bus-range = <0x00 0xff>; 60*f126890aSEmmanuel Vadot status = "disabled"; 61*f126890aSEmmanuel Vadot 62*f126890aSEmmanuel Vadot ranges = 63*f126890aSEmmanuel Vadot /* 64*f126890aSEmmanuel Vadot * 64MB 32bit non-prefetchable memory 0x48000000-0x4bffffff 65*f126890aSEmmanuel Vadot * done in 4 chunks of 16MB each. 66*f126890aSEmmanuel Vadot */ 67*f126890aSEmmanuel Vadot <0x02000000 0 0x48000000 0x48000000 0 0x04000000>, 68*f126890aSEmmanuel Vadot /* 64KB I/O space at 0x4c000000 */ 69*f126890aSEmmanuel Vadot <0x01000000 0 0x00000000 0x4c000000 0 0x00010000>; 70*f126890aSEmmanuel Vadot 71*f126890aSEmmanuel Vadot /* 72*f126890aSEmmanuel Vadot * This needs to map to the start of physical memory so 73*f126890aSEmmanuel Vadot * PCI devices can see all (hopefully) memory. This is done 74*f126890aSEmmanuel Vadot * using 4 1:1 16MB windows, so the RAM should not be more than 75*f126890aSEmmanuel Vadot * 64 MB for this to work. If your memory is anywhere else 76*f126890aSEmmanuel Vadot * than at 0x0 you need to alter this. 77*f126890aSEmmanuel Vadot */ 78*f126890aSEmmanuel Vadot dma-ranges = 79*f126890aSEmmanuel Vadot <0x02000000 0 0x00000000 0x00000000 0 0x04000000>; 80*f126890aSEmmanuel Vadot 81*f126890aSEmmanuel Vadot /* Each unique DTS using PCI must specify the swizzling */ 82*f126890aSEmmanuel Vadot }; 83*f126890aSEmmanuel Vadot 84*f126890aSEmmanuel Vadot uart0: serial@c8000000 { 85*f126890aSEmmanuel Vadot compatible = "intel,xscale-uart"; 86*f126890aSEmmanuel Vadot reg = <0xc8000000 0x1000>; 87*f126890aSEmmanuel Vadot /* 88*f126890aSEmmanuel Vadot * The reg-offset and reg-shift is a side effect 89*f126890aSEmmanuel Vadot * of running the platform in big endian mode. 90*f126890aSEmmanuel Vadot */ 91*f126890aSEmmanuel Vadot reg-offset = <3>; 92*f126890aSEmmanuel Vadot reg-shift = <2>; 93*f126890aSEmmanuel Vadot interrupts = <15 IRQ_TYPE_LEVEL_HIGH>; 94*f126890aSEmmanuel Vadot clock-frequency = <14745600>; 95*f126890aSEmmanuel Vadot no-loopback-test; 96*f126890aSEmmanuel Vadot }; 97*f126890aSEmmanuel Vadot 98*f126890aSEmmanuel Vadot uart1: serial@c8001000 { 99*f126890aSEmmanuel Vadot compatible = "intel,xscale-uart"; 100*f126890aSEmmanuel Vadot reg = <0xc8001000 0x1000>; 101*f126890aSEmmanuel Vadot /* 102*f126890aSEmmanuel Vadot * The reg-offset and reg-shift is a side effect 103*f126890aSEmmanuel Vadot * of running the platform in big endian mode. 104*f126890aSEmmanuel Vadot */ 105*f126890aSEmmanuel Vadot reg-offset = <3>; 106*f126890aSEmmanuel Vadot reg-shift = <2>; 107*f126890aSEmmanuel Vadot interrupts = <13 IRQ_TYPE_LEVEL_HIGH>; 108*f126890aSEmmanuel Vadot clock-frequency = <14745600>; 109*f126890aSEmmanuel Vadot no-loopback-test; 110*f126890aSEmmanuel Vadot }; 111*f126890aSEmmanuel Vadot 112*f126890aSEmmanuel Vadot gpio0: gpio@c8004000 { 113*f126890aSEmmanuel Vadot compatible = "intel,ixp4xx-gpio"; 114*f126890aSEmmanuel Vadot reg = <0xc8004000 0x1000>; 115*f126890aSEmmanuel Vadot gpio-controller; 116*f126890aSEmmanuel Vadot #gpio-cells = <2>; 117*f126890aSEmmanuel Vadot interrupt-controller; 118*f126890aSEmmanuel Vadot #interrupt-cells = <2>; 119*f126890aSEmmanuel Vadot }; 120*f126890aSEmmanuel Vadot 121*f126890aSEmmanuel Vadot intcon: interrupt-controller@c8003000 { 122*f126890aSEmmanuel Vadot /* 123*f126890aSEmmanuel Vadot * Note: no compatible string. The subvariant of the 124*f126890aSEmmanuel Vadot * chip needs to define what version it is. The 125*f126890aSEmmanuel Vadot * location of the interrupt controller is fixed in 126*f126890aSEmmanuel Vadot * memory across all variants. 127*f126890aSEmmanuel Vadot */ 128*f126890aSEmmanuel Vadot reg = <0xc8003000 0x100>; 129*f126890aSEmmanuel Vadot interrupt-controller; 130*f126890aSEmmanuel Vadot #interrupt-cells = <2>; 131*f126890aSEmmanuel Vadot }; 132*f126890aSEmmanuel Vadot 133*f126890aSEmmanuel Vadot timer@c8005000 { 134*f126890aSEmmanuel Vadot compatible = "intel,ixp4xx-timer"; 135*f126890aSEmmanuel Vadot reg = <0xc8005000 0x100>; 136*f126890aSEmmanuel Vadot interrupts = <5 IRQ_TYPE_LEVEL_HIGH>; 137*f126890aSEmmanuel Vadot }; 138*f126890aSEmmanuel Vadot 139*f126890aSEmmanuel Vadot npe: npe@c8006000 { 140*f126890aSEmmanuel Vadot compatible = "intel,ixp4xx-network-processing-engine"; 141*f126890aSEmmanuel Vadot reg = <0xc8006000 0x1000>, <0xc8007000 0x1000>, <0xc8008000 0x1000>; 142*f126890aSEmmanuel Vadot #address-cells = <1>; 143*f126890aSEmmanuel Vadot #size-cells = <0>; 144*f126890aSEmmanuel Vadot 145*f126890aSEmmanuel Vadot /* NPE-A contains two high-speed serial links */ 146*f126890aSEmmanuel Vadot hss@0 { 147*f126890aSEmmanuel Vadot compatible = "intel,ixp4xx-hss"; 148*f126890aSEmmanuel Vadot reg = <0>; 149*f126890aSEmmanuel Vadot intel,npe-handle = <&npe 0>; 150*f126890aSEmmanuel Vadot status = "disabled"; 151*f126890aSEmmanuel Vadot }; 152*f126890aSEmmanuel Vadot 153*f126890aSEmmanuel Vadot hss@1 { 154*f126890aSEmmanuel Vadot compatible = "intel,ixp4xx-hss"; 155*f126890aSEmmanuel Vadot reg = <1>; 156*f126890aSEmmanuel Vadot intel,npe-handle = <&npe 0>; 157*f126890aSEmmanuel Vadot status = "disabled"; 158*f126890aSEmmanuel Vadot }; 159*f126890aSEmmanuel Vadot 160*f126890aSEmmanuel Vadot /* NPE-C contains a crypto accelerator */ 161*f126890aSEmmanuel Vadot crypto { 162*f126890aSEmmanuel Vadot compatible = "intel,ixp4xx-crypto"; 163*f126890aSEmmanuel Vadot intel,npe-handle = <&npe 2>; 164*f126890aSEmmanuel Vadot queue-rx = <&qmgr 30>; 165*f126890aSEmmanuel Vadot queue-txready = <&qmgr 29>; 166*f126890aSEmmanuel Vadot }; 167*f126890aSEmmanuel Vadot }; 168*f126890aSEmmanuel Vadot 169*f126890aSEmmanuel Vadot /* This is known as EthB */ 170*f126890aSEmmanuel Vadot ethernet@c8009000 { 171*f126890aSEmmanuel Vadot compatible = "intel,ixp4xx-ethernet"; 172*f126890aSEmmanuel Vadot reg = <0xc8009000 0x1000>; 173*f126890aSEmmanuel Vadot status = "disabled"; 174*f126890aSEmmanuel Vadot /* Dummy values that depend on firmware */ 175*f126890aSEmmanuel Vadot queue-rx = <&qmgr 3>; 176*f126890aSEmmanuel Vadot queue-txready = <&qmgr 20>; 177*f126890aSEmmanuel Vadot intel,npe-handle = <&npe 1>; 178*f126890aSEmmanuel Vadot }; 179*f126890aSEmmanuel Vadot 180*f126890aSEmmanuel Vadot /* This is known as EthC */ 181*f126890aSEmmanuel Vadot ethernet@c800a000 { 182*f126890aSEmmanuel Vadot compatible = "intel,ixp4xx-ethernet"; 183*f126890aSEmmanuel Vadot reg = <0xc800a000 0x1000>; 184*f126890aSEmmanuel Vadot status = "disabled"; 185*f126890aSEmmanuel Vadot /* Dummy values that depend on firmware */ 186*f126890aSEmmanuel Vadot queue-rx = <&qmgr 0>; 187*f126890aSEmmanuel Vadot queue-txready = <&qmgr 0>; 188*f126890aSEmmanuel Vadot intel,npe-handle = <&npe 2>; 189*f126890aSEmmanuel Vadot }; 190*f126890aSEmmanuel Vadot 191*f126890aSEmmanuel Vadot /* This is known as EthA */ 192*f126890aSEmmanuel Vadot ethernet@c800c000 { 193*f126890aSEmmanuel Vadot compatible = "intel,ixp4xx-ethernet"; 194*f126890aSEmmanuel Vadot reg = <0xc800c000 0x1000>; 195*f126890aSEmmanuel Vadot status = "disabled"; 196*f126890aSEmmanuel Vadot intel,npe = <0>; 197*f126890aSEmmanuel Vadot /* Dummy values that depend on firmware */ 198*f126890aSEmmanuel Vadot queue-rx = <&qmgr 0>; 199*f126890aSEmmanuel Vadot queue-txready = <&qmgr 0>; 200*f126890aSEmmanuel Vadot }; 201*f126890aSEmmanuel Vadot }; 202*f126890aSEmmanuel Vadot}; 203