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