xref: /rk3399_rockchip-uboot/arch/arm/dts/bcm283x.dtsi (revision ff5d7ae713ac6de37f3a93f3a4fed13ab4ffd154)
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