1#include <dt-bindings/pinctrl/bcm2835.h> 2#include <dt-bindings/clock/bcm2835.h> 3#include "skeleton.dtsi" 4 5/ { 6 compatible = "brcm,bcm2835"; 7 model = "BCM2835"; 8 interrupt-parent = <&intc>; 9 10 chosen { 11 bootargs = "earlyprintk console=ttyAMA0"; 12 }; 13 14 soc { 15 compatible = "simple-bus"; 16 #address-cells = <1>; 17 #size-cells = <1>; 18 ranges = <0x7e000000 0x20000000 0x02000000>; 19 dma-ranges = <0x40000000 0x00000000 0x20000000>; 20 21 timer@7e003000 { 22 compatible = "brcm,bcm2835-system-timer"; 23 reg = <0x7e003000 0x1000>; 24 interrupts = <1 0>, <1 1>, <1 2>, <1 3>; 25 /* This could be a reference to BCM2835_CLOCK_TIMER, 26 * but we don't have the driver using the common clock 27 * support yet. 28 */ 29 clock-frequency = <1000000>; 30 }; 31 32 dma: dma@7e007000 { 33 compatible = "brcm,bcm2835-dma"; 34 reg = <0x7e007000 0xf00>; 35 interrupts = <1 16>, 36 <1 17>, 37 <1 18>, 38 <1 19>, 39 <1 20>, 40 <1 21>, 41 <1 22>, 42 <1 23>, 43 <1 24>, 44 <1 25>, 45 <1 26>, 46 <1 27>, 47 <1 28>; 48 49 #dma-cells = <1>; 50 brcm,dma-channel-mask = <0x7f35>; 51 }; 52 53 intc: interrupt-controller@7e00b200 { 54 compatible = "brcm,bcm2835-armctrl-ic"; 55 reg = <0x7e00b200 0x200>; 56 interrupt-controller; 57 #interrupt-cells = <2>; 58 }; 59 60 watchdog@7e100000 { 61 compatible = "brcm,bcm2835-pm-wdt"; 62 reg = <0x7e100000 0x28>; 63 }; 64 65 clocks: cprman@7e101000 { 66 compatible = "brcm,bcm2835-cprman"; 67 #clock-cells = <1>; 68 reg = <0x7e101000 0x2000>; 69 70 /* CPRMAN derives everything from the platform's 71 * oscillator. 72 */ 73 clocks = <&clk_osc>; 74 }; 75 76 rng@7e104000 { 77 compatible = "brcm,bcm2835-rng"; 78 reg = <0x7e104000 0x10>; 79 }; 80 81 mailbox: mailbox@7e00b800 { 82 compatible = "brcm,bcm2835-mbox"; 83 reg = <0x7e00b880 0x40>; 84 interrupts = <0 1>; 85 #mbox-cells = <0>; 86 }; 87 88 gpio: gpio@7e200000 { 89 compatible = "brcm,bcm2835-gpio"; 90 reg = <0x7e200000 0xb4>; 91 /* 92 * The GPIO IP block is designed for 3 banks of GPIOs. 93 * Each bank has a GPIO interrupt for itself. 94 * There is an overall "any bank" interrupt. 95 * In order, these are GIC interrupts 17, 18, 19, 20. 96 * Since the BCM2835 only has 2 banks, the 2nd bank 97 * interrupt output appears to be mirrored onto the 98 * 3rd bank's interrupt signal. 99 * So, a bank0 interrupt shows up on 17, 20, and 100 * a bank1 interrupt shows up on 18, 19, 20! 101 */ 102 interrupts = <2 17>, <2 18>, <2 19>, <2 20>; 103 104 gpio-controller; 105 #gpio-cells = <2>; 106 107 interrupt-controller; 108 #interrupt-cells = <2>; 109 }; 110 111 uart0: uart@7e201000 { 112 compatible = "brcm,bcm2835-pl011", "arm,pl011", "arm,primecell"; 113 reg = <0x7e201000 0x1000>; 114 interrupts = <2 25>; 115 clocks = <&clocks BCM2835_CLOCK_UART>, 116 <&clocks BCM2835_CLOCK_VPU>; 117 clock-names = "uartclk", "apb_pclk"; 118 arm,primecell-periphid = <0x00241011>; 119 }; 120 121 i2s: i2s@7e203000 { 122 compatible = "brcm,bcm2835-i2s"; 123 reg = <0x7e203000 0x20>, 124 <0x7e101098 0x02>; 125 126 dmas = <&dma 2>, 127 <&dma 3>; 128 dma-names = "tx", "rx"; 129 status = "disabled"; 130 }; 131 132 spi: spi@7e204000 { 133 compatible = "brcm,bcm2835-spi"; 134 reg = <0x7e204000 0x1000>; 135 interrupts = <2 22>; 136 clocks = <&clocks BCM2835_CLOCK_VPU>; 137 #address-cells = <1>; 138 #size-cells = <0>; 139 status = "disabled"; 140 }; 141 142 i2c0: i2c@7e205000 { 143 compatible = "brcm,bcm2835-i2c"; 144 reg = <0x7e205000 0x1000>; 145 interrupts = <2 21>; 146 clocks = <&clocks BCM2835_CLOCK_VPU>; 147 #address-cells = <1>; 148 #size-cells = <0>; 149 status = "disabled"; 150 }; 151 152 sdhci: sdhci@7e300000 { 153 compatible = "brcm,bcm2835-sdhci"; 154 reg = <0x7e300000 0x100>; 155 interrupts = <2 30>; 156 clocks = <&clocks BCM2835_CLOCK_EMMC>; 157 status = "disabled"; 158 }; 159 160 i2c1: i2c@7e804000 { 161 compatible = "brcm,bcm2835-i2c"; 162 reg = <0x7e804000 0x1000>; 163 interrupts = <2 21>; 164 clocks = <&clocks BCM2835_CLOCK_VPU>; 165 #address-cells = <1>; 166 #size-cells = <0>; 167 status = "disabled"; 168 }; 169 170 i2c2: i2c@7e805000 { 171 compatible = "brcm,bcm2835-i2c"; 172 reg = <0x7e805000 0x1000>; 173 interrupts = <2 21>; 174 clocks = <&clocks BCM2835_CLOCK_VPU>; 175 #address-cells = <1>; 176 #size-cells = <0>; 177 status = "disabled"; 178 }; 179 180 usb@7e980000 { 181 compatible = "brcm,bcm2835-usb"; 182 reg = <0x7e980000 0x10000>; 183 interrupts = <1 9>; 184 }; 185 186 arm-pmu { 187 compatible = "arm,arm1176-pmu"; 188 }; 189 }; 190 191 clocks { 192 compatible = "simple-bus"; 193 #address-cells = <1>; 194 #size-cells = <0>; 195 196 /* The oscillator is the root of the clock tree. */ 197 clk_osc: clock@3 { 198 compatible = "fixed-clock"; 199 reg = <3>; 200 #clock-cells = <0>; 201 clock-output-names = "osc"; 202 clock-frequency = <19200000>; 203 }; 204 205 }; 206}; 207