1*4882a593Smuzhiyun/* 2*4882a593Smuzhiyun * Copyright 2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Antoine Tenart <antoine.tenart@free-electrons.com> 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * This software is available to you under a choice of one of two 7*4882a593Smuzhiyun * licenses. You may choose to be licensed under the terms of the GNU 8*4882a593Smuzhiyun * General Public License (GPL) Version 2, available from the file 9*4882a593Smuzhiyun * COPYING in the main directory of this source tree, or the 10*4882a593Smuzhiyun * BSD license below: 11*4882a593Smuzhiyun * 12*4882a593Smuzhiyun * Redistribution and use in source and binary forms, with or 13*4882a593Smuzhiyun * without modification, are permitted provided that the following 14*4882a593Smuzhiyun * conditions are met: 15*4882a593Smuzhiyun * 16*4882a593Smuzhiyun * - Redistributions of source code must retain the above 17*4882a593Smuzhiyun * copyright notice, this list of conditions and the following 18*4882a593Smuzhiyun * disclaimer. 19*4882a593Smuzhiyun * 20*4882a593Smuzhiyun * - Redistributions in binary form must reproduce the above 21*4882a593Smuzhiyun * copyright notice, this list of conditions and the following 22*4882a593Smuzhiyun * disclaimer in the documentation and/or other materials 23*4882a593Smuzhiyun * provided with the distribution. 24*4882a593Smuzhiyun * 25*4882a593Smuzhiyun * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 26*4882a593Smuzhiyun * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 27*4882a593Smuzhiyun * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 28*4882a593Smuzhiyun * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 29*4882a593Smuzhiyun * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 30*4882a593Smuzhiyun * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 31*4882a593Smuzhiyun * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 32*4882a593Smuzhiyun * SOFTWARE. 33*4882a593Smuzhiyun */ 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun/dts-v1/; 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun#include <dt-bindings/interrupt-controller/arm-gic.h> 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun/ { 40*4882a593Smuzhiyun model = "Annapurna Labs Alpine v2"; 41*4882a593Smuzhiyun compatible = "al,alpine-v2"; 42*4882a593Smuzhiyun #address-cells = <2>; 43*4882a593Smuzhiyun #size-cells = <2>; 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun cpus { 46*4882a593Smuzhiyun #address-cells = <2>; 47*4882a593Smuzhiyun #size-cells = <0>; 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun cpu@0 { 50*4882a593Smuzhiyun compatible = "arm,cortex-a57"; 51*4882a593Smuzhiyun device_type = "cpu"; 52*4882a593Smuzhiyun reg = <0x0 0x0>; 53*4882a593Smuzhiyun enable-method = "psci"; 54*4882a593Smuzhiyun }; 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun cpu@1 { 57*4882a593Smuzhiyun compatible = "arm,cortex-a57"; 58*4882a593Smuzhiyun device_type = "cpu"; 59*4882a593Smuzhiyun reg = <0x0 0x1>; 60*4882a593Smuzhiyun enable-method = "psci"; 61*4882a593Smuzhiyun }; 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun cpu@2 { 64*4882a593Smuzhiyun compatible = "arm,cortex-a57"; 65*4882a593Smuzhiyun device_type = "cpu"; 66*4882a593Smuzhiyun reg = <0x0 0x2>; 67*4882a593Smuzhiyun enable-method = "psci"; 68*4882a593Smuzhiyun }; 69*4882a593Smuzhiyun 70*4882a593Smuzhiyun cpu@3 { 71*4882a593Smuzhiyun compatible = "arm,cortex-a57"; 72*4882a593Smuzhiyun device_type = "cpu"; 73*4882a593Smuzhiyun reg = <0x0 0x3>; 74*4882a593Smuzhiyun enable-method = "psci"; 75*4882a593Smuzhiyun }; 76*4882a593Smuzhiyun }; 77*4882a593Smuzhiyun 78*4882a593Smuzhiyun psci { 79*4882a593Smuzhiyun compatible = "arm,psci-0.2", "arm,psci"; 80*4882a593Smuzhiyun method = "smc"; 81*4882a593Smuzhiyun cpu_suspend = <0x84000001>; 82*4882a593Smuzhiyun cpu_off = <0x84000002>; 83*4882a593Smuzhiyun cpu_on = <0x84000003>; 84*4882a593Smuzhiyun }; 85*4882a593Smuzhiyun 86*4882a593Smuzhiyun sbclk: sbclk { 87*4882a593Smuzhiyun compatible = "fixed-clock"; 88*4882a593Smuzhiyun #clock-cells = <0>; 89*4882a593Smuzhiyun clock-frequency = <1000000>; 90*4882a593Smuzhiyun }; 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun soc { 93*4882a593Smuzhiyun compatible = "simple-bus"; 94*4882a593Smuzhiyun #address-cells = <2>; 95*4882a593Smuzhiyun #size-cells = <2>; 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun interrupt-parent = <&gic>; 98*4882a593Smuzhiyun ranges; 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun timer { 101*4882a593Smuzhiyun compatible = "arm,armv8-timer"; 102*4882a593Smuzhiyun interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>, 103*4882a593Smuzhiyun <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>, 104*4882a593Smuzhiyun <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>, 105*4882a593Smuzhiyun <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>; 106*4882a593Smuzhiyun }; 107*4882a593Smuzhiyun 108*4882a593Smuzhiyun pmu { 109*4882a593Smuzhiyun compatible = "arm,armv8-pmuv3"; 110*4882a593Smuzhiyun interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>, 111*4882a593Smuzhiyun <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>, 112*4882a593Smuzhiyun <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>, 113*4882a593Smuzhiyun <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>; 114*4882a593Smuzhiyun }; 115*4882a593Smuzhiyun 116*4882a593Smuzhiyun gic: interrupt-controller@f0200000 { 117*4882a593Smuzhiyun compatible = "arm,gic-v3"; 118*4882a593Smuzhiyun reg = <0x0 0xf0200000 0x0 0x10000>, /* GIC Dist */ 119*4882a593Smuzhiyun <0x0 0xf0280000 0x0 0x200000>, /* GICR */ 120*4882a593Smuzhiyun <0x0 0xf0100000 0x0 0x2000>, /* GICC */ 121*4882a593Smuzhiyun <0x0 0xf0110000 0x0 0x2000>, /* GICV */ 122*4882a593Smuzhiyun <0x0 0xf0120000 0x0 0x2000>; /* GICH */ 123*4882a593Smuzhiyun interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>; 124*4882a593Smuzhiyun interrupt-controller; 125*4882a593Smuzhiyun #interrupt-cells = <3>; 126*4882a593Smuzhiyun }; 127*4882a593Smuzhiyun 128*4882a593Smuzhiyun pci@fbc00000 { 129*4882a593Smuzhiyun compatible = "pci-host-ecam-generic"; 130*4882a593Smuzhiyun device_type = "pci"; 131*4882a593Smuzhiyun #size-cells = <2>; 132*4882a593Smuzhiyun #address-cells = <3>; 133*4882a593Smuzhiyun #interrupt-cells = <1>; 134*4882a593Smuzhiyun reg = <0x0 0xfbc00000 0x0 0x100000>; 135*4882a593Smuzhiyun interrupt-map-mask = <0xf800 0 0 7>; 136*4882a593Smuzhiyun /* add legacy interrupts for SATA only */ 137*4882a593Smuzhiyun interrupt-map = <0x4000 0 0 1 &gic 0 53 4>, 138*4882a593Smuzhiyun <0x4800 0 0 1 &gic 0 54 4>; 139*4882a593Smuzhiyun /* 32 bit non prefetchable memory space */ 140*4882a593Smuzhiyun ranges = <0x2000000 0x0 0xfe000000 0x0 0xfe000000 0x0 0x1000000>; 141*4882a593Smuzhiyun bus-range = <0x00 0x00>; 142*4882a593Smuzhiyun msi-parent = <&msix>; 143*4882a593Smuzhiyun }; 144*4882a593Smuzhiyun 145*4882a593Smuzhiyun msix: msix@fbe00000 { 146*4882a593Smuzhiyun compatible = "al,alpine-msix"; 147*4882a593Smuzhiyun reg = <0x0 0xfbe00000 0x0 0x100000>; 148*4882a593Smuzhiyun interrupt-controller; 149*4882a593Smuzhiyun msi-controller; 150*4882a593Smuzhiyun al,msi-base-spi = <160>; 151*4882a593Smuzhiyun al,msi-num-spis = <160>; 152*4882a593Smuzhiyun }; 153*4882a593Smuzhiyun 154*4882a593Smuzhiyun io-fabric { 155*4882a593Smuzhiyun compatible = "simple-bus"; 156*4882a593Smuzhiyun #address-cells = <1>; 157*4882a593Smuzhiyun #size-cells = <1>; 158*4882a593Smuzhiyun ranges = <0x0 0x0 0xfc000000 0x2000000>; 159*4882a593Smuzhiyun 160*4882a593Smuzhiyun uart0: serial@1883000 { 161*4882a593Smuzhiyun compatible = "ns16550a"; 162*4882a593Smuzhiyun device_type = "serial"; 163*4882a593Smuzhiyun reg = <0x1883000 0x1000>; 164*4882a593Smuzhiyun interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>; 165*4882a593Smuzhiyun clock-frequency = <500000000>; 166*4882a593Smuzhiyun reg-shift = <2>; 167*4882a593Smuzhiyun reg-io-width = <4>; 168*4882a593Smuzhiyun status = "disabled"; 169*4882a593Smuzhiyun }; 170*4882a593Smuzhiyun 171*4882a593Smuzhiyun uart1: serial@1884000 { 172*4882a593Smuzhiyun compatible = "ns16550a"; 173*4882a593Smuzhiyun device_type = "serial"; 174*4882a593Smuzhiyun reg = <0x1884000 0x1000>; 175*4882a593Smuzhiyun interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>; 176*4882a593Smuzhiyun clock-frequency = <500000000>; 177*4882a593Smuzhiyun reg-shift = <2>; 178*4882a593Smuzhiyun reg-io-width = <4>; 179*4882a593Smuzhiyun status = "disabled"; 180*4882a593Smuzhiyun }; 181*4882a593Smuzhiyun 182*4882a593Smuzhiyun uart2: serial@1885000 { 183*4882a593Smuzhiyun compatible = "ns16550a"; 184*4882a593Smuzhiyun device_type = "serial"; 185*4882a593Smuzhiyun reg = <0x1885000 0x1000>; 186*4882a593Smuzhiyun interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>; 187*4882a593Smuzhiyun clock-frequency = <500000000>; 188*4882a593Smuzhiyun reg-shift = <2>; 189*4882a593Smuzhiyun reg-io-width = <4>; 190*4882a593Smuzhiyun status = "disabled"; 191*4882a593Smuzhiyun }; 192*4882a593Smuzhiyun 193*4882a593Smuzhiyun uart3: serial@1886000 { 194*4882a593Smuzhiyun compatible = "ns16550a"; 195*4882a593Smuzhiyun device_type = "serial"; 196*4882a593Smuzhiyun reg = <0x1886000 0x1000>; 197*4882a593Smuzhiyun interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>; 198*4882a593Smuzhiyun clock-frequency = <500000000>; 199*4882a593Smuzhiyun reg-shift = <2>; 200*4882a593Smuzhiyun reg-io-width = <4>; 201*4882a593Smuzhiyun status = "disabled"; 202*4882a593Smuzhiyun }; 203*4882a593Smuzhiyun 204*4882a593Smuzhiyun timer0: timer@1890000 { 205*4882a593Smuzhiyun compatible = "arm,sp804", "arm,primecell"; 206*4882a593Smuzhiyun reg = <0x1890000 0x1000>; 207*4882a593Smuzhiyun interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>; 208*4882a593Smuzhiyun clocks = <&sbclk>; 209*4882a593Smuzhiyun }; 210*4882a593Smuzhiyun 211*4882a593Smuzhiyun timer1: timer@1891000 { 212*4882a593Smuzhiyun compatible = "arm,sp804", "arm,primecell"; 213*4882a593Smuzhiyun reg = <0x1891000 0x1000>; 214*4882a593Smuzhiyun interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>; 215*4882a593Smuzhiyun clocks = <&sbclk>; 216*4882a593Smuzhiyun status = "disabled"; 217*4882a593Smuzhiyun }; 218*4882a593Smuzhiyun 219*4882a593Smuzhiyun timer2: timer@1892000 { 220*4882a593Smuzhiyun compatible = "arm,sp804", "arm,primecell"; 221*4882a593Smuzhiyun reg = <0x1892000 0x1000>; 222*4882a593Smuzhiyun interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>; 223*4882a593Smuzhiyun clocks = <&sbclk>; 224*4882a593Smuzhiyun status = "disabled"; 225*4882a593Smuzhiyun }; 226*4882a593Smuzhiyun 227*4882a593Smuzhiyun timer3: timer@1893000 { 228*4882a593Smuzhiyun compatible = "arm,sp804", "arm,primecell"; 229*4882a593Smuzhiyun reg = <0x1893000 0x1000>; 230*4882a593Smuzhiyun interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>; 231*4882a593Smuzhiyun clocks = <&sbclk>; 232*4882a593Smuzhiyun status = "disabled"; 233*4882a593Smuzhiyun }; 234*4882a593Smuzhiyun }; 235*4882a593Smuzhiyun }; 236*4882a593Smuzhiyun}; 237