146025584SFabian Vogt#include <dt-bindings/pinctrl/bcm2835.h> 246025584SFabian Vogt#include <dt-bindings/clock/bcm2835.h> 346025584SFabian Vogt#include <dt-bindings/clock/bcm2835-aux.h> 446025584SFabian Vogt#include <dt-bindings/gpio/gpio.h> 546025584SFabian Vogt 646025584SFabian Vogt/* This include file covers the common peripherals and configuration between 746025584SFabian Vogt * bcm2835 and bcm2836 implementations, leaving the CPU configuration to 846025584SFabian Vogt * bcm2835.dtsi and bcm2836.dtsi. 946025584SFabian Vogt */ 1046025584SFabian Vogt 1146025584SFabian Vogt/ { 1246025584SFabian Vogt compatible = "brcm,bcm2835"; 1346025584SFabian Vogt model = "BCM2835"; 1446025584SFabian Vogt interrupt-parent = <&intc>; 1546025584SFabian Vogt #address-cells = <1>; 1646025584SFabian Vogt #size-cells = <1>; 1746025584SFabian Vogt 1846025584SFabian Vogt chosen { 1946025584SFabian Vogt bootargs = "earlyprintk console=ttyAMA0"; 2046025584SFabian Vogt }; 2146025584SFabian Vogt 22*ff5d7ae7SFabian Vogt soc: soc { 2346025584SFabian Vogt compatible = "simple-bus"; 2446025584SFabian Vogt #address-cells = <1>; 2546025584SFabian Vogt #size-cells = <1>; 2646025584SFabian Vogt 2746025584SFabian Vogt timer@7e003000 { 2846025584SFabian Vogt compatible = "brcm,bcm2835-system-timer"; 2946025584SFabian Vogt reg = <0x7e003000 0x1000>; 3046025584SFabian Vogt interrupts = <1 0>, <1 1>, <1 2>, <1 3>; 3146025584SFabian Vogt /* This could be a reference to BCM2835_CLOCK_TIMER, 3246025584SFabian Vogt * but we don't have the driver using the common clock 3346025584SFabian Vogt * support yet. 3446025584SFabian Vogt */ 3546025584SFabian Vogt clock-frequency = <1000000>; 3646025584SFabian Vogt }; 3746025584SFabian Vogt 3846025584SFabian Vogt dma: dma@7e007000 { 3946025584SFabian Vogt compatible = "brcm,bcm2835-dma"; 4046025584SFabian Vogt reg = <0x7e007000 0xf00>; 4146025584SFabian Vogt interrupts = <1 16>, 4246025584SFabian Vogt <1 17>, 4346025584SFabian Vogt <1 18>, 4446025584SFabian Vogt <1 19>, 4546025584SFabian Vogt <1 20>, 4646025584SFabian Vogt <1 21>, 4746025584SFabian Vogt <1 22>, 4846025584SFabian Vogt <1 23>, 4946025584SFabian Vogt <1 24>, 5046025584SFabian Vogt <1 25>, 5146025584SFabian Vogt <1 26>, 5246025584SFabian Vogt /* dma channel 11-14 share one irq */ 5346025584SFabian Vogt <1 27>, 5446025584SFabian Vogt <1 27>, 5546025584SFabian Vogt <1 27>, 5646025584SFabian Vogt <1 27>, 5746025584SFabian Vogt /* unused shared irq for all channels */ 5846025584SFabian Vogt <1 28>; 5946025584SFabian Vogt interrupt-names = "dma0", 6046025584SFabian Vogt "dma1", 6146025584SFabian Vogt "dma2", 6246025584SFabian Vogt "dma3", 6346025584SFabian Vogt "dma4", 6446025584SFabian Vogt "dma5", 6546025584SFabian Vogt "dma6", 6646025584SFabian Vogt "dma7", 6746025584SFabian Vogt "dma8", 6846025584SFabian Vogt "dma9", 6946025584SFabian Vogt "dma10", 7046025584SFabian Vogt "dma11", 7146025584SFabian Vogt "dma12", 7246025584SFabian Vogt "dma13", 7346025584SFabian Vogt "dma14", 7446025584SFabian Vogt "dma-shared-all"; 7546025584SFabian Vogt #dma-cells = <1>; 7646025584SFabian Vogt brcm,dma-channel-mask = <0x7f35>; 7746025584SFabian Vogt }; 7846025584SFabian Vogt 7946025584SFabian Vogt intc: interrupt-controller@7e00b200 { 8046025584SFabian Vogt compatible = "brcm,bcm2835-armctrl-ic"; 8146025584SFabian Vogt reg = <0x7e00b200 0x200>; 8246025584SFabian Vogt interrupt-controller; 8346025584SFabian Vogt #interrupt-cells = <2>; 8446025584SFabian Vogt }; 8546025584SFabian Vogt 8646025584SFabian Vogt watchdog@7e100000 { 8746025584SFabian Vogt compatible = "brcm,bcm2835-pm-wdt"; 8846025584SFabian Vogt reg = <0x7e100000 0x28>; 8946025584SFabian Vogt }; 9046025584SFabian Vogt 9146025584SFabian Vogt clocks: cprman@7e101000 { 9246025584SFabian Vogt compatible = "brcm,bcm2835-cprman"; 9346025584SFabian Vogt #clock-cells = <1>; 9446025584SFabian Vogt reg = <0x7e101000 0x2000>; 9546025584SFabian Vogt 9646025584SFabian Vogt /* CPRMAN derives everything from the platform's 9746025584SFabian Vogt * oscillator. 9846025584SFabian Vogt */ 9946025584SFabian Vogt clocks = <&clk_osc>; 10046025584SFabian Vogt }; 10146025584SFabian Vogt 10246025584SFabian Vogt rng@7e104000 { 10346025584SFabian Vogt compatible = "brcm,bcm2835-rng"; 10446025584SFabian Vogt reg = <0x7e104000 0x10>; 10546025584SFabian Vogt }; 10646025584SFabian Vogt 10746025584SFabian Vogt mailbox: mailbox@7e00b800 { 10846025584SFabian Vogt compatible = "brcm,bcm2835-mbox"; 10946025584SFabian Vogt reg = <0x7e00b880 0x40>; 11046025584SFabian Vogt interrupts = <0 1>; 11146025584SFabian Vogt #mbox-cells = <0>; 11246025584SFabian Vogt }; 11346025584SFabian Vogt 11446025584SFabian Vogt gpio: gpio@7e200000 { 11546025584SFabian Vogt compatible = "brcm,bcm2835-gpio"; 11646025584SFabian Vogt reg = <0x7e200000 0xb4>; 11746025584SFabian Vogt /* 11846025584SFabian Vogt * The GPIO IP block is designed for 3 banks of GPIOs. 11946025584SFabian Vogt * Each bank has a GPIO interrupt for itself. 12046025584SFabian Vogt * There is an overall "any bank" interrupt. 12146025584SFabian Vogt * In order, these are GIC interrupts 17, 18, 19, 20. 12246025584SFabian Vogt * Since the BCM2835 only has 2 banks, the 2nd bank 12346025584SFabian Vogt * interrupt output appears to be mirrored onto the 12446025584SFabian Vogt * 3rd bank's interrupt signal. 12546025584SFabian Vogt * So, a bank0 interrupt shows up on 17, 20, and 12646025584SFabian Vogt * a bank1 interrupt shows up on 18, 19, 20! 12746025584SFabian Vogt */ 12846025584SFabian Vogt interrupts = <2 17>, <2 18>, <2 19>, <2 20>; 12946025584SFabian Vogt 13046025584SFabian Vogt gpio-controller; 13146025584SFabian Vogt #gpio-cells = <2>; 13246025584SFabian Vogt 13346025584SFabian Vogt interrupt-controller; 13446025584SFabian Vogt #interrupt-cells = <2>; 13546025584SFabian Vogt }; 13646025584SFabian Vogt 13746025584SFabian Vogt uart0: serial@7e201000 { 13846025584SFabian Vogt compatible = "brcm,bcm2835-pl011", "arm,pl011", "arm,primecell"; 13946025584SFabian Vogt reg = <0x7e201000 0x1000>; 14046025584SFabian Vogt interrupts = <2 25>; 14146025584SFabian Vogt clocks = <&clocks BCM2835_CLOCK_UART>, 14246025584SFabian Vogt <&clocks BCM2835_CLOCK_VPU>; 14346025584SFabian Vogt clock-names = "uartclk", "apb_pclk"; 14446025584SFabian Vogt arm,primecell-periphid = <0x00241011>; 14546025584SFabian Vogt }; 14646025584SFabian Vogt 14746025584SFabian Vogt i2s: i2s@7e203000 { 14846025584SFabian Vogt compatible = "brcm,bcm2835-i2s"; 14946025584SFabian Vogt reg = <0x7e203000 0x20>, 15046025584SFabian Vogt <0x7e101098 0x02>; 15146025584SFabian Vogt 15246025584SFabian Vogt dmas = <&dma 2>, 15346025584SFabian Vogt <&dma 3>; 15446025584SFabian Vogt dma-names = "tx", "rx"; 15546025584SFabian Vogt status = "disabled"; 15646025584SFabian Vogt }; 15746025584SFabian Vogt 15846025584SFabian Vogt spi: spi@7e204000 { 15946025584SFabian Vogt compatible = "brcm,bcm2835-spi"; 16046025584SFabian Vogt reg = <0x7e204000 0x1000>; 16146025584SFabian Vogt interrupts = <2 22>; 16246025584SFabian Vogt clocks = <&clocks BCM2835_CLOCK_VPU>; 16346025584SFabian Vogt #address-cells = <1>; 16446025584SFabian Vogt #size-cells = <0>; 16546025584SFabian Vogt status = "disabled"; 16646025584SFabian Vogt }; 16746025584SFabian Vogt 16846025584SFabian Vogt i2c0: i2c@7e205000 { 16946025584SFabian Vogt compatible = "brcm,bcm2835-i2c"; 17046025584SFabian Vogt reg = <0x7e205000 0x1000>; 17146025584SFabian Vogt interrupts = <2 21>; 17246025584SFabian Vogt clocks = <&clocks BCM2835_CLOCK_VPU>; 17346025584SFabian Vogt #address-cells = <1>; 17446025584SFabian Vogt #size-cells = <0>; 17546025584SFabian Vogt status = "disabled"; 17646025584SFabian Vogt }; 17746025584SFabian Vogt 17846025584SFabian Vogt pixelvalve@7e206000 { 17946025584SFabian Vogt compatible = "brcm,bcm2835-pixelvalve0"; 18046025584SFabian Vogt reg = <0x7e206000 0x100>; 18146025584SFabian Vogt interrupts = <2 13>; /* pwa0 */ 18246025584SFabian Vogt }; 18346025584SFabian Vogt 18446025584SFabian Vogt pixelvalve@7e207000 { 18546025584SFabian Vogt compatible = "brcm,bcm2835-pixelvalve1"; 18646025584SFabian Vogt reg = <0x7e207000 0x100>; 18746025584SFabian Vogt interrupts = <2 14>; /* pwa1 */ 18846025584SFabian Vogt }; 18946025584SFabian Vogt 19046025584SFabian Vogt aux: aux@0x7e215000 { 19146025584SFabian Vogt compatible = "brcm,bcm2835-aux"; 19246025584SFabian Vogt #clock-cells = <1>; 19346025584SFabian Vogt reg = <0x7e215000 0x8>; 19446025584SFabian Vogt clocks = <&clocks BCM2835_CLOCK_VPU>; 19546025584SFabian Vogt }; 19646025584SFabian Vogt 19746025584SFabian Vogt uart1: serial@7e215040 { 19846025584SFabian Vogt compatible = "brcm,bcm2835-aux-uart"; 19946025584SFabian Vogt reg = <0x7e215040 0x40>; 20046025584SFabian Vogt interrupts = <1 29>; 20146025584SFabian Vogt clocks = <&aux BCM2835_AUX_CLOCK_UART>; 20246025584SFabian Vogt status = "disabled"; 20346025584SFabian Vogt }; 20446025584SFabian Vogt 20546025584SFabian Vogt spi1: spi@7e215080 { 20646025584SFabian Vogt compatible = "brcm,bcm2835-aux-spi"; 20746025584SFabian Vogt reg = <0x7e215080 0x40>; 20846025584SFabian Vogt interrupts = <1 29>; 20946025584SFabian Vogt clocks = <&aux BCM2835_AUX_CLOCK_SPI1>; 21046025584SFabian Vogt #address-cells = <1>; 21146025584SFabian Vogt #size-cells = <0>; 21246025584SFabian Vogt status = "disabled"; 21346025584SFabian Vogt }; 21446025584SFabian Vogt 21546025584SFabian Vogt spi2: spi@7e2150c0 { 21646025584SFabian Vogt compatible = "brcm,bcm2835-aux-spi"; 21746025584SFabian Vogt reg = <0x7e2150c0 0x40>; 21846025584SFabian Vogt interrupts = <1 29>; 21946025584SFabian Vogt clocks = <&aux BCM2835_AUX_CLOCK_SPI2>; 22046025584SFabian Vogt #address-cells = <1>; 22146025584SFabian Vogt #size-cells = <0>; 22246025584SFabian Vogt status = "disabled"; 22346025584SFabian Vogt }; 22446025584SFabian Vogt 22546025584SFabian Vogt pwm: pwm@7e20c000 { 22646025584SFabian Vogt compatible = "brcm,bcm2835-pwm"; 22746025584SFabian Vogt reg = <0x7e20c000 0x28>; 22846025584SFabian Vogt clocks = <&clocks BCM2835_CLOCK_PWM>; 22946025584SFabian Vogt assigned-clocks = <&clocks BCM2835_CLOCK_PWM>; 23046025584SFabian Vogt assigned-clock-rates = <10000000>; 23146025584SFabian Vogt #pwm-cells = <2>; 23246025584SFabian Vogt status = "disabled"; 23346025584SFabian Vogt }; 23446025584SFabian Vogt 23546025584SFabian Vogt sdhci: sdhci@7e300000 { 23646025584SFabian Vogt compatible = "brcm,bcm2835-sdhci"; 23746025584SFabian Vogt reg = <0x7e300000 0x100>; 23846025584SFabian Vogt interrupts = <2 30>; 23946025584SFabian Vogt clocks = <&clocks BCM2835_CLOCK_EMMC>; 24046025584SFabian Vogt status = "disabled"; 24146025584SFabian Vogt }; 24246025584SFabian Vogt 24346025584SFabian Vogt hvs@7e400000 { 24446025584SFabian Vogt compatible = "brcm,bcm2835-hvs"; 24546025584SFabian Vogt reg = <0x7e400000 0x6000>; 24646025584SFabian Vogt interrupts = <2 1>; 24746025584SFabian Vogt }; 24846025584SFabian Vogt 24946025584SFabian Vogt i2c1: i2c@7e804000 { 25046025584SFabian Vogt compatible = "brcm,bcm2835-i2c"; 25146025584SFabian Vogt reg = <0x7e804000 0x1000>; 25246025584SFabian Vogt interrupts = <2 21>; 25346025584SFabian Vogt clocks = <&clocks BCM2835_CLOCK_VPU>; 25446025584SFabian Vogt #address-cells = <1>; 25546025584SFabian Vogt #size-cells = <0>; 25646025584SFabian Vogt status = "disabled"; 25746025584SFabian Vogt }; 25846025584SFabian Vogt 25946025584SFabian Vogt i2c2: i2c@7e805000 { 26046025584SFabian Vogt compatible = "brcm,bcm2835-i2c"; 26146025584SFabian Vogt reg = <0x7e805000 0x1000>; 26246025584SFabian Vogt interrupts = <2 21>; 26346025584SFabian Vogt clocks = <&clocks BCM2835_CLOCK_VPU>; 26446025584SFabian Vogt #address-cells = <1>; 26546025584SFabian Vogt #size-cells = <0>; 26646025584SFabian Vogt status = "disabled"; 26746025584SFabian Vogt }; 26846025584SFabian Vogt 26946025584SFabian Vogt pixelvalve@7e807000 { 27046025584SFabian Vogt compatible = "brcm,bcm2835-pixelvalve2"; 27146025584SFabian Vogt reg = <0x7e807000 0x100>; 27246025584SFabian Vogt interrupts = <2 10>; /* pixelvalve */ 27346025584SFabian Vogt }; 27446025584SFabian Vogt 27546025584SFabian Vogt hdmi: hdmi@7e902000 { 27646025584SFabian Vogt compatible = "brcm,bcm2835-hdmi"; 27746025584SFabian Vogt reg = <0x7e902000 0x600>, 27846025584SFabian Vogt <0x7e808000 0x100>; 27946025584SFabian Vogt interrupts = <2 8>, <2 9>; 28046025584SFabian Vogt ddc = <&i2c2>; 28146025584SFabian Vogt clocks = <&clocks BCM2835_PLLH_PIX>, 28246025584SFabian Vogt <&clocks BCM2835_CLOCK_HSM>; 28346025584SFabian Vogt clock-names = "pixel", "hdmi"; 28446025584SFabian Vogt status = "disabled"; 28546025584SFabian Vogt }; 28646025584SFabian Vogt 28746025584SFabian Vogt usb: usb@7e980000 { 28846025584SFabian Vogt compatible = "brcm,bcm2835-usb"; 28946025584SFabian Vogt reg = <0x7e980000 0x10000>; 29046025584SFabian Vogt interrupts = <1 9>; 29146025584SFabian Vogt #address-cells = <1>; 29246025584SFabian Vogt #size-cells = <0>; 29346025584SFabian Vogt }; 29446025584SFabian Vogt 29546025584SFabian Vogt v3d: v3d@7ec00000 { 29646025584SFabian Vogt compatible = "brcm,bcm2835-v3d"; 29746025584SFabian Vogt reg = <0x7ec00000 0x1000>; 29846025584SFabian Vogt interrupts = <1 10>; 29946025584SFabian Vogt }; 30046025584SFabian Vogt 30146025584SFabian Vogt vc4: gpu { 30246025584SFabian Vogt compatible = "brcm,bcm2835-vc4"; 30346025584SFabian Vogt }; 30446025584SFabian Vogt }; 30546025584SFabian Vogt 30646025584SFabian Vogt clocks { 30746025584SFabian Vogt compatible = "simple-bus"; 30846025584SFabian Vogt #address-cells = <1>; 30946025584SFabian Vogt #size-cells = <0>; 31046025584SFabian Vogt 31146025584SFabian Vogt /* The oscillator is the root of the clock tree. */ 31246025584SFabian Vogt clk_osc: clock@3 { 31346025584SFabian Vogt compatible = "fixed-clock"; 31446025584SFabian Vogt reg = <3>; 31546025584SFabian Vogt #clock-cells = <0>; 31646025584SFabian Vogt clock-output-names = "osc"; 31746025584SFabian Vogt clock-frequency = <19200000>; 31846025584SFabian Vogt }; 31946025584SFabian Vogt 32046025584SFabian Vogt }; 32146025584SFabian Vogt}; 322*ff5d7ae7SFabian Vogt 323*ff5d7ae7SFabian Vogt#include "bcm283x-uboot.dtsi" 324