1*4882a593Smuzhiyun// SPDX-License-Identifier: GPL-2.0 2*4882a593Smuzhiyun/* 3*4882a593Smuzhiyun * Based on Mans Rullgard's Tango3 DT 4*4882a593Smuzhiyun * https://github.com/mansr/linux-tangox 5*4882a593Smuzhiyun */ 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun#include <dt-bindings/interrupt-controller/arm-gic.h> 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun#define CPU_CLK 0 10*4882a593Smuzhiyun#define SYS_CLK 1 11*4882a593Smuzhiyun#define USB_CLK 2 12*4882a593Smuzhiyun#define SDIO_CLK 3 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun/ { 15*4882a593Smuzhiyun interrupt-parent = <&gic>; 16*4882a593Smuzhiyun #address-cells = <1>; 17*4882a593Smuzhiyun #size-cells = <1>; 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun periph_clk: periph_clk { 20*4882a593Smuzhiyun compatible = "fixed-factor-clock"; 21*4882a593Smuzhiyun clocks = <&clkgen CPU_CLK>; 22*4882a593Smuzhiyun clock-mult = <1>; 23*4882a593Smuzhiyun clock-div = <2>; 24*4882a593Smuzhiyun #clock-cells = <0>; 25*4882a593Smuzhiyun }; 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun mpcore { 28*4882a593Smuzhiyun compatible = "simple-bus"; 29*4882a593Smuzhiyun ranges = <0x00000000 0x20000000 0x2000>; 30*4882a593Smuzhiyun #address-cells = <1>; 31*4882a593Smuzhiyun #size-cells = <1>; 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun scu@0 { 34*4882a593Smuzhiyun compatible = "arm,cortex-a9-scu"; 35*4882a593Smuzhiyun reg = <0x0 0x100>; 36*4882a593Smuzhiyun }; 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun twd@600 { 39*4882a593Smuzhiyun compatible = "arm,cortex-a9-twd-timer"; 40*4882a593Smuzhiyun reg = <0x600 0x10>; 41*4882a593Smuzhiyun interrupts = <GIC_PPI 13 IRQ_TYPE_EDGE_RISING>; 42*4882a593Smuzhiyun clocks = <&periph_clk>; 43*4882a593Smuzhiyun always-on; 44*4882a593Smuzhiyun }; 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun gic: interrupt-controller@1000 { 47*4882a593Smuzhiyun compatible = "arm,cortex-a9-gic"; 48*4882a593Smuzhiyun #interrupt-cells = <3>; 49*4882a593Smuzhiyun interrupt-controller; 50*4882a593Smuzhiyun reg = <0x1000 0x1000>, <0x100 0x100>; 51*4882a593Smuzhiyun }; 52*4882a593Smuzhiyun }; 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun l2cc: cache-controller@20100000 { 55*4882a593Smuzhiyun compatible = "arm,pl310-cache"; 56*4882a593Smuzhiyun reg = <0x20100000 0x1000>; 57*4882a593Smuzhiyun cache-level = <2>; 58*4882a593Smuzhiyun cache-unified; 59*4882a593Smuzhiyun }; 60*4882a593Smuzhiyun 61*4882a593Smuzhiyun soc { 62*4882a593Smuzhiyun compatible = "simple-bus"; 63*4882a593Smuzhiyun interrupt-parent = <&irq0>; 64*4882a593Smuzhiyun #address-cells = <1>; 65*4882a593Smuzhiyun #size-cells = <1>; 66*4882a593Smuzhiyun ranges; 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun xtal: xtal { 69*4882a593Smuzhiyun compatible = "fixed-clock"; 70*4882a593Smuzhiyun clock-frequency = <27000000>; 71*4882a593Smuzhiyun #clock-cells = <0>; 72*4882a593Smuzhiyun }; 73*4882a593Smuzhiyun 74*4882a593Smuzhiyun clkgen: clkgen@10000 { 75*4882a593Smuzhiyun compatible = "sigma,tango4-clkgen"; 76*4882a593Smuzhiyun reg = <0x10000 0x100>; 77*4882a593Smuzhiyun clocks = <&xtal>; 78*4882a593Smuzhiyun #clock-cells = <1>; 79*4882a593Smuzhiyun }; 80*4882a593Smuzhiyun 81*4882a593Smuzhiyun tick-counter@10048 { 82*4882a593Smuzhiyun compatible = "sigma,tick-counter"; 83*4882a593Smuzhiyun reg = <0x10048 0x4>; 84*4882a593Smuzhiyun clocks = <&xtal>; 85*4882a593Smuzhiyun }; 86*4882a593Smuzhiyun 87*4882a593Smuzhiyun uart: serial@10700 { 88*4882a593Smuzhiyun compatible = "ralink,rt2880-uart", "ns16550a"; 89*4882a593Smuzhiyun reg = <0x10700 0x30>; 90*4882a593Smuzhiyun interrupts = <1 IRQ_TYPE_LEVEL_HIGH>; 91*4882a593Smuzhiyun clock-frequency = <7372800>; 92*4882a593Smuzhiyun reg-shift = <2>; 93*4882a593Smuzhiyun }; 94*4882a593Smuzhiyun 95*4882a593Smuzhiyun watchdog@1fd00 { 96*4882a593Smuzhiyun compatible = "sigma,smp8759-wdt"; 97*4882a593Smuzhiyun reg = <0x1fd00 8>; 98*4882a593Smuzhiyun clocks = <&xtal>; 99*4882a593Smuzhiyun }; 100*4882a593Smuzhiyun 101*4882a593Smuzhiyun mmc0: mmc@21000 { 102*4882a593Smuzhiyun compatible = "arasan,sdhci-8.9a"; 103*4882a593Smuzhiyun reg = <0x21000 0x200>; 104*4882a593Smuzhiyun clock-names = "clk_xin", "clk_ahb"; 105*4882a593Smuzhiyun clocks = <&clkgen SDIO_CLK>, <&clkgen SYS_CLK>; 106*4882a593Smuzhiyun interrupts = <60 IRQ_TYPE_LEVEL_HIGH>; 107*4882a593Smuzhiyun }; 108*4882a593Smuzhiyun 109*4882a593Smuzhiyun mmc1: mmc@21200 { 110*4882a593Smuzhiyun compatible = "arasan,sdhci-8.9a"; 111*4882a593Smuzhiyun reg = <0x21200 0x200>; 112*4882a593Smuzhiyun clock-names = "clk_xin", "clk_ahb"; 113*4882a593Smuzhiyun clocks = <&clkgen SDIO_CLK>, <&clkgen SYS_CLK>; 114*4882a593Smuzhiyun interrupts = <8 IRQ_TYPE_LEVEL_HIGH>; 115*4882a593Smuzhiyun }; 116*4882a593Smuzhiyun 117*4882a593Smuzhiyun usb0: usb@21400 { 118*4882a593Smuzhiyun compatible = "chipidea,usb2"; 119*4882a593Smuzhiyun reg = <0x21400 0x200>; 120*4882a593Smuzhiyun interrupts = <40 IRQ_TYPE_LEVEL_HIGH>; 121*4882a593Smuzhiyun phys = <&usb0_phy>; 122*4882a593Smuzhiyun phy-names = "usb-phy"; 123*4882a593Smuzhiyun }; 124*4882a593Smuzhiyun 125*4882a593Smuzhiyun usb0_phy: phy@21700 { 126*4882a593Smuzhiyun compatible = "sigma,smp8642-usb-phy"; 127*4882a593Smuzhiyun reg = <0x21700 0x100>; 128*4882a593Smuzhiyun #phy-cells = <0>; 129*4882a593Smuzhiyun clocks = <&clkgen USB_CLK>; 130*4882a593Smuzhiyun }; 131*4882a593Smuzhiyun 132*4882a593Smuzhiyun usb1: usb@25400 { 133*4882a593Smuzhiyun compatible = "chipidea,usb2"; 134*4882a593Smuzhiyun reg = <0x25400 0x200>; 135*4882a593Smuzhiyun interrupts = <7 IRQ_TYPE_LEVEL_HIGH>; 136*4882a593Smuzhiyun phys = <&usb1_phy>; 137*4882a593Smuzhiyun phy-names = "usb-phy"; 138*4882a593Smuzhiyun }; 139*4882a593Smuzhiyun 140*4882a593Smuzhiyun usb1_phy: phy@25700 { 141*4882a593Smuzhiyun compatible = "sigma,smp8642-usb-phy"; 142*4882a593Smuzhiyun reg = <0x25700 0x100>; 143*4882a593Smuzhiyun #phy-cells = <0>; 144*4882a593Smuzhiyun clocks = <&clkgen USB_CLK>; 145*4882a593Smuzhiyun }; 146*4882a593Smuzhiyun 147*4882a593Smuzhiyun eth0: ethernet@26000 { 148*4882a593Smuzhiyun compatible = "sigma,smp8734-ethernet"; 149*4882a593Smuzhiyun reg = <0x26000 0x800>; 150*4882a593Smuzhiyun interrupts = <38 IRQ_TYPE_LEVEL_HIGH>; 151*4882a593Smuzhiyun clocks = <&clkgen SYS_CLK>; 152*4882a593Smuzhiyun }; 153*4882a593Smuzhiyun 154*4882a593Smuzhiyun intc: interrupt-controller@6e000 { 155*4882a593Smuzhiyun compatible = "sigma,smp8642-intc"; 156*4882a593Smuzhiyun reg = <0x6e000 0x400>; 157*4882a593Smuzhiyun ranges = <0 0x6e000 0x400>; 158*4882a593Smuzhiyun interrupt-parent = <&gic>; 159*4882a593Smuzhiyun #address-cells = <1>; 160*4882a593Smuzhiyun #size-cells = <1>; 161*4882a593Smuzhiyun 162*4882a593Smuzhiyun irq0: irq0@0 { 163*4882a593Smuzhiyun reg = <0x000 0x100>; 164*4882a593Smuzhiyun interrupt-controller; 165*4882a593Smuzhiyun #interrupt-cells = <2>; 166*4882a593Smuzhiyun interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>; 167*4882a593Smuzhiyun }; 168*4882a593Smuzhiyun 169*4882a593Smuzhiyun irq1: irq1@100 { 170*4882a593Smuzhiyun reg = <0x100 0x100>; 171*4882a593Smuzhiyun interrupt-controller; 172*4882a593Smuzhiyun #interrupt-cells = <2>; 173*4882a593Smuzhiyun interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>; 174*4882a593Smuzhiyun }; 175*4882a593Smuzhiyun 176*4882a593Smuzhiyun irq2: irq2@300 { 177*4882a593Smuzhiyun reg = <0x300 0x100>; 178*4882a593Smuzhiyun interrupt-controller; 179*4882a593Smuzhiyun #interrupt-cells = <2>; 180*4882a593Smuzhiyun interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>; 181*4882a593Smuzhiyun }; 182*4882a593Smuzhiyun }; 183*4882a593Smuzhiyun }; 184*4882a593Smuzhiyun}; 185