1*10d8bc5aSChen-Yu Tsai/* 2*10d8bc5aSChen-Yu Tsai * Copyright 2016 Chen-Yu Tsai 3*10d8bc5aSChen-Yu Tsai * 4*10d8bc5aSChen-Yu Tsai * Chen-Yu Tsai <wens@csie.org> 5*10d8bc5aSChen-Yu Tsai * 6*10d8bc5aSChen-Yu Tsai * This file is dual-licensed: you can use it either under the terms 7*10d8bc5aSChen-Yu Tsai * of the GPL or the X11 license, at your option. Note that this dual 8*10d8bc5aSChen-Yu Tsai * licensing only applies to this file, and not this project as a 9*10d8bc5aSChen-Yu Tsai * whole. 10*10d8bc5aSChen-Yu Tsai * 11*10d8bc5aSChen-Yu Tsai * a) This file is free software; you can redistribute it and/or 12*10d8bc5aSChen-Yu Tsai * modify it under the terms of the GNU General Public License as 13*10d8bc5aSChen-Yu Tsai * published by the Free Software Foundation; either version 2 of the 14*10d8bc5aSChen-Yu Tsai * License, or (at your option) any later version. 15*10d8bc5aSChen-Yu Tsai * 16*10d8bc5aSChen-Yu Tsai * This file is distributed in the hope that it will be useful, 17*10d8bc5aSChen-Yu Tsai * but WITHOUT ANY WARRANTY; without even the implied warranty of 18*10d8bc5aSChen-Yu Tsai * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19*10d8bc5aSChen-Yu Tsai * GNU General Public License for more details. 20*10d8bc5aSChen-Yu Tsai * 21*10d8bc5aSChen-Yu Tsai * Or, alternatively, 22*10d8bc5aSChen-Yu Tsai * 23*10d8bc5aSChen-Yu Tsai * b) Permission is hereby granted, free of charge, to any person 24*10d8bc5aSChen-Yu Tsai * obtaining a copy of this software and associated documentation 25*10d8bc5aSChen-Yu Tsai * files (the "Software"), to deal in the Software without 26*10d8bc5aSChen-Yu Tsai * restriction, including without limitation the rights to use, 27*10d8bc5aSChen-Yu Tsai * copy, modify, merge, publish, distribute, sublicense, and/or 28*10d8bc5aSChen-Yu Tsai * sell copies of the Software, and to permit persons to whom the 29*10d8bc5aSChen-Yu Tsai * Software is furnished to do so, subject to the following 30*10d8bc5aSChen-Yu Tsai * conditions: 31*10d8bc5aSChen-Yu Tsai * 32*10d8bc5aSChen-Yu Tsai * The above copyright notice and this permission notice shall be 33*10d8bc5aSChen-Yu Tsai * included in all copies or substantial portions of the Software. 34*10d8bc5aSChen-Yu Tsai * 35*10d8bc5aSChen-Yu Tsai * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 36*10d8bc5aSChen-Yu Tsai * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 37*10d8bc5aSChen-Yu Tsai * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 38*10d8bc5aSChen-Yu Tsai * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 39*10d8bc5aSChen-Yu Tsai * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 40*10d8bc5aSChen-Yu Tsai * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 41*10d8bc5aSChen-Yu Tsai * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 42*10d8bc5aSChen-Yu Tsai * OTHER DEALINGS IN THE SOFTWARE. 43*10d8bc5aSChen-Yu Tsai */ 44*10d8bc5aSChen-Yu Tsai 45*10d8bc5aSChen-Yu Tsai#include <dt-bindings/interrupt-controller/arm-gic.h> 46*10d8bc5aSChen-Yu Tsai 47*10d8bc5aSChen-Yu Tsai/ { 48*10d8bc5aSChen-Yu Tsai #address-cells = <1>; 49*10d8bc5aSChen-Yu Tsai #size-cells = <1>; 50*10d8bc5aSChen-Yu Tsai interrupt-parent = <&gic>; 51*10d8bc5aSChen-Yu Tsai 52*10d8bc5aSChen-Yu Tsai aliases { 53*10d8bc5aSChen-Yu Tsai }; 54*10d8bc5aSChen-Yu Tsai 55*10d8bc5aSChen-Yu Tsai chosen { 56*10d8bc5aSChen-Yu Tsai }; 57*10d8bc5aSChen-Yu Tsai 58*10d8bc5aSChen-Yu Tsai clocks { 59*10d8bc5aSChen-Yu Tsai #address-cells = <1>; 60*10d8bc5aSChen-Yu Tsai #size-cells = <1>; 61*10d8bc5aSChen-Yu Tsai ranges; 62*10d8bc5aSChen-Yu Tsai 63*10d8bc5aSChen-Yu Tsai osc24M: osc24M_clk { 64*10d8bc5aSChen-Yu Tsai #clock-cells = <0>; 65*10d8bc5aSChen-Yu Tsai compatible = "fixed-clock"; 66*10d8bc5aSChen-Yu Tsai clock-frequency = <24000000>; 67*10d8bc5aSChen-Yu Tsai }; 68*10d8bc5aSChen-Yu Tsai 69*10d8bc5aSChen-Yu Tsai osc32k: osc32k_clk { 70*10d8bc5aSChen-Yu Tsai #clock-cells = <0>; 71*10d8bc5aSChen-Yu Tsai compatible = "fixed-clock"; 72*10d8bc5aSChen-Yu Tsai clock-frequency = <32768>; 73*10d8bc5aSChen-Yu Tsai clock-output-names = "osc32k"; 74*10d8bc5aSChen-Yu Tsai }; 75*10d8bc5aSChen-Yu Tsai }; 76*10d8bc5aSChen-Yu Tsai 77*10d8bc5aSChen-Yu Tsai cpus { 78*10d8bc5aSChen-Yu Tsai #address-cells = <1>; 79*10d8bc5aSChen-Yu Tsai #size-cells = <0>; 80*10d8bc5aSChen-Yu Tsai 81*10d8bc5aSChen-Yu Tsai cpu0: cpu@0 { 82*10d8bc5aSChen-Yu Tsai compatible = "arm,cortex-a7"; 83*10d8bc5aSChen-Yu Tsai device_type = "cpu"; 84*10d8bc5aSChen-Yu Tsai reg = <0>; 85*10d8bc5aSChen-Yu Tsai }; 86*10d8bc5aSChen-Yu Tsai 87*10d8bc5aSChen-Yu Tsai cpu@1 { 88*10d8bc5aSChen-Yu Tsai compatible = "arm,cortex-a7"; 89*10d8bc5aSChen-Yu Tsai device_type = "cpu"; 90*10d8bc5aSChen-Yu Tsai reg = <1>; 91*10d8bc5aSChen-Yu Tsai }; 92*10d8bc5aSChen-Yu Tsai 93*10d8bc5aSChen-Yu Tsai cpu@2 { 94*10d8bc5aSChen-Yu Tsai compatible = "arm,cortex-a7"; 95*10d8bc5aSChen-Yu Tsai device_type = "cpu"; 96*10d8bc5aSChen-Yu Tsai reg = <2>; 97*10d8bc5aSChen-Yu Tsai }; 98*10d8bc5aSChen-Yu Tsai 99*10d8bc5aSChen-Yu Tsai cpu@3 { 100*10d8bc5aSChen-Yu Tsai compatible = "arm,cortex-a7"; 101*10d8bc5aSChen-Yu Tsai device_type = "cpu"; 102*10d8bc5aSChen-Yu Tsai reg = <3>; 103*10d8bc5aSChen-Yu Tsai }; 104*10d8bc5aSChen-Yu Tsai }; 105*10d8bc5aSChen-Yu Tsai 106*10d8bc5aSChen-Yu Tsai memory@40000000 { 107*10d8bc5aSChen-Yu Tsai device_type = "memory"; 108*10d8bc5aSChen-Yu Tsai reg = <0x40000000 0x80000000>; 109*10d8bc5aSChen-Yu Tsai }; 110*10d8bc5aSChen-Yu Tsai 111*10d8bc5aSChen-Yu Tsai soc { 112*10d8bc5aSChen-Yu Tsai compatible = "simple-bus"; 113*10d8bc5aSChen-Yu Tsai #address-cells = <1>; 114*10d8bc5aSChen-Yu Tsai #size-cells = <1>; 115*10d8bc5aSChen-Yu Tsai ranges; 116*10d8bc5aSChen-Yu Tsai 117*10d8bc5aSChen-Yu Tsai pio: pinctrl@1c20800 { 118*10d8bc5aSChen-Yu Tsai compatible = "allwinner,sun8i-r40-pinctrl"; 119*10d8bc5aSChen-Yu Tsai reg = <0x01c20800 0x400>; 120*10d8bc5aSChen-Yu Tsai interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>; 121*10d8bc5aSChen-Yu Tsai /* apb should be replaced once CCU is implemented */ 122*10d8bc5aSChen-Yu Tsai clocks = <&osc24M>, <&osc24M>, <&osc32k>; 123*10d8bc5aSChen-Yu Tsai clock-names = "apb", "hosc", "losc"; 124*10d8bc5aSChen-Yu Tsai gpio-controller; 125*10d8bc5aSChen-Yu Tsai interrupt-controller; 126*10d8bc5aSChen-Yu Tsai #interrupt-cells = <3>; 127*10d8bc5aSChen-Yu Tsai #gpio-cells = <3>; 128*10d8bc5aSChen-Yu Tsai 129*10d8bc5aSChen-Yu Tsai i2c0_pins: i2c0_pins { 130*10d8bc5aSChen-Yu Tsai pins = "PB0", "PB1"; 131*10d8bc5aSChen-Yu Tsai function = "i2c0"; 132*10d8bc5aSChen-Yu Tsai bias-pull-up; 133*10d8bc5aSChen-Yu Tsai }; 134*10d8bc5aSChen-Yu Tsai 135*10d8bc5aSChen-Yu Tsai uart0_pb_pins: uart0_pb_pins { 136*10d8bc5aSChen-Yu Tsai pins = "PB22", "PB23"; 137*10d8bc5aSChen-Yu Tsai function = "uart0"; 138*10d8bc5aSChen-Yu Tsai bias-pull-up; 139*10d8bc5aSChen-Yu Tsai }; 140*10d8bc5aSChen-Yu Tsai }; 141*10d8bc5aSChen-Yu Tsai 142*10d8bc5aSChen-Yu Tsai uart0: serial@1c28000 { 143*10d8bc5aSChen-Yu Tsai compatible = "snps,dw-apb-uart"; 144*10d8bc5aSChen-Yu Tsai reg = <0x01c28000 0x400>; 145*10d8bc5aSChen-Yu Tsai interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>; 146*10d8bc5aSChen-Yu Tsai reg-shift = <2>; 147*10d8bc5aSChen-Yu Tsai reg-io-width = <4>; 148*10d8bc5aSChen-Yu Tsai clocks = <&osc24M>; 149*10d8bc5aSChen-Yu Tsai status = "disabled"; 150*10d8bc5aSChen-Yu Tsai }; 151*10d8bc5aSChen-Yu Tsai 152*10d8bc5aSChen-Yu Tsai i2c0: i2c@1c2ac00 { 153*10d8bc5aSChen-Yu Tsai compatible = "allwinner,sun6i-a31-i2c"; 154*10d8bc5aSChen-Yu Tsai reg = <0x01c2ac00 0x400>; 155*10d8bc5aSChen-Yu Tsai interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>; 156*10d8bc5aSChen-Yu Tsai clocks = <&osc24M>; 157*10d8bc5aSChen-Yu Tsai status = "disabled"; 158*10d8bc5aSChen-Yu Tsai #address-cells = <1>; 159*10d8bc5aSChen-Yu Tsai #size-cells = <0>; 160*10d8bc5aSChen-Yu Tsai }; 161*10d8bc5aSChen-Yu Tsai 162*10d8bc5aSChen-Yu Tsai gic: interrupt-controller@1c81000 { 163*10d8bc5aSChen-Yu Tsai compatible = "arm,cortex-a7-gic", "arm,cortex-a15-gic"; 164*10d8bc5aSChen-Yu Tsai reg = <0x01c81000 0x1000>, 165*10d8bc5aSChen-Yu Tsai <0x01c82000 0x1000>, 166*10d8bc5aSChen-Yu Tsai <0x01c84000 0x2000>, 167*10d8bc5aSChen-Yu Tsai <0x01c86000 0x2000>; 168*10d8bc5aSChen-Yu Tsai interrupt-controller; 169*10d8bc5aSChen-Yu Tsai #interrupt-cells = <3>; 170*10d8bc5aSChen-Yu Tsai interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>; 171*10d8bc5aSChen-Yu Tsai }; 172*10d8bc5aSChen-Yu Tsai }; 173*10d8bc5aSChen-Yu Tsai 174*10d8bc5aSChen-Yu Tsai timer { 175*10d8bc5aSChen-Yu Tsai compatible = "arm,armv7-timer"; 176*10d8bc5aSChen-Yu Tsai interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 177*10d8bc5aSChen-Yu Tsai <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 178*10d8bc5aSChen-Yu Tsai <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 179*10d8bc5aSChen-Yu Tsai <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>; 180*10d8bc5aSChen-Yu Tsai clock-frequency = <24000000>; 181*10d8bc5aSChen-Yu Tsai arm,cpu-registers-not-fw-configured; 182*10d8bc5aSChen-Yu Tsai }; 183*10d8bc5aSChen-Yu Tsai}; 184