diff --git a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts index 7f844737ed991f..4a8607f33eaaa9 100644 --- a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts +++ b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts @@ -16,6 +16,7 @@ intc = &intc; leds = &leds; sound = &sound; + uart = &uart; }; sound: sound { @@ -44,6 +45,10 @@ }; }; +&uart { + status = "okay"; +}; + &spi0 { pinctrl-names = "default"; pinctrl-0 = <&spi0_pins>; @@ -99,6 +104,7 @@ / { __overrides__ { + uart = <&uart>,"status"; i2s = <&i2s>,"status"; spi = <&spi0>,"status"; i2c0 = <&i2c0>,"status"; diff --git a/arch/arm/boot/dts/bcm2708-rpi-b.dts b/arch/arm/boot/dts/bcm2708-rpi-b.dts index a39562fefffd6a..e6c6e257fad4b8 100644 --- a/arch/arm/boot/dts/bcm2708-rpi-b.dts +++ b/arch/arm/boot/dts/bcm2708-rpi-b.dts @@ -16,6 +16,7 @@ intc = &intc; leds = &leds; sound = &sound; + uart = &uart; }; sound: sound { @@ -44,6 +45,10 @@ }; }; +&uart { + status = "okay"; +}; + &spi0 { pinctrl-names = "default"; pinctrl-0 = <&spi0_pins>; @@ -93,6 +98,7 @@ / { __overrides__ { + uart = <&uart>,"status"; i2s = <&i2s>,"status"; spi = <&spi0>,"status"; i2c0 = <&i2c0>,"status"; diff --git a/arch/arm/boot/dts/bcm2708.dtsi b/arch/arm/boot/dts/bcm2708.dtsi index 0713a1edbe7e82..4377f11e082c63 100644 --- a/arch/arm/boot/dts/bcm2708.dtsi +++ b/arch/arm/boot/dts/bcm2708.dtsi @@ -36,6 +36,16 @@ #interrupt-cells = <2>; }; + uart: uart@7e201000 { + compatible = "arm,primecell", "arm,pl011"; + reg = <0x7e201000 0x1000>; + interrupts = <2 25>; + clocks = <&clk_uart>; + clock-names = "apb_pclk"; + arm,primecell-periphid = <0x00241011>; + status = "disabled"; + }; + i2s: i2s@7e203000 { compatible = "brcm,bcm2708-i2s"; reg = <0x7e203000 0x20>, @@ -91,7 +101,7 @@ #address-cells = <1>; #size-cells = <0>; - clk_i2c: i2c { + clk_i2c: clock@1 { compatible = "fixed-clock"; reg = <1>; #clock-cells = <0>; @@ -105,5 +115,13 @@ clock-output-names = "spi"; clock-frequency = <250000000>; }; + + clk_uart: clock@3 { + compatible = "fixed-clock"; + reg = <3>; + #clock-cells = <0>; + clock-output-names = "uart"; + clock-frequency = <3000000>; + }; }; }; diff --git a/arch/arm/boot/dts/bcm2709-rpi-2-b.dts b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts index 75c222f89373a1..8e56ee1c9ae70c 100644 --- a/arch/arm/boot/dts/bcm2709-rpi-2-b.dts +++ b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts @@ -16,6 +16,7 @@ intc = &intc; leds = &leds; sound = &sound; + uart = &uart; }; sound: sound { @@ -44,6 +45,10 @@ }; }; +&uart { + status = "okay"; +}; + &spi0 { pinctrl-names = "default"; pinctrl-0 = <&spi0_pins>; @@ -99,6 +104,7 @@ / { __overrides__ { + uart = <&uart>,"status"; i2s = <&i2s>,"status"; spi = <&spi0>,"status"; i2c0 = <&i2c0>,"status"; diff --git a/arch/arm/boot/dts/bcm2709.dtsi b/arch/arm/boot/dts/bcm2709.dtsi index 34d2226aba62c7..5dcb04fbdd6c09 100644 --- a/arch/arm/boot/dts/bcm2709.dtsi +++ b/arch/arm/boot/dts/bcm2709.dtsi @@ -36,6 +36,16 @@ #interrupt-cells = <2>; }; + uart: uart@7e201000 { + compatible = "arm,primecell", "arm,pl011"; + reg = <0x7e201000 0x1000>; + interrupts = <2 25>; + clocks = <&clk_uart>; + clock-names = "apb_pclk"; + arm,primecell-periphid = <0x00241011>; + status = "disabled"; + }; + i2s: i2s@7e203000 { compatible = "brcm,bcm2708-i2s"; reg = <0x7e203000 0x20>, @@ -92,7 +102,7 @@ #address-cells = <1>; #size-cells = <0>; - clk_i2c: i2c { + clk_i2c: clock@1 { compatible = "fixed-clock"; reg = <1>; #clock-cells = <0>; @@ -106,6 +116,14 @@ clock-output-names = "spi"; clock-frequency = <250000000>; }; + + clk_uart: clock@3 { + compatible = "fixed-clock"; + reg = <3>; + #clock-cells = <0>; + clock-output-names = "uart"; + clock-frequency = <3000000>; + }; }; timer { diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c index 762e17c175a5ae..c262537bbd07a4 100644 --- a/arch/arm/mach-bcm2708/bcm2708.c +++ b/arch/arm/mach-bcm2708/bcm2708.c @@ -932,10 +932,11 @@ void __init bcm2708_init(void) i2c_register_board_info_dt(1, snd_pcm512x_i2c_devices, ARRAY_SIZE(snd_pcm512x_i2c_devices)); #endif - - for (i = 0; i < ARRAY_SIZE(amba_devs); i++) { - struct amba_device *d = amba_devs[i]; - amba_device_register(d, &iomem_resource); + if (!use_dt) { + for (i = 0; i < ARRAY_SIZE(amba_devs); i++) { + struct amba_device *d = amba_devs[i]; + amba_device_register(d, &iomem_resource); + } } system_rev = boardrev; system_serial_low = serial; diff --git a/arch/arm/mach-bcm2709/bcm2709.c b/arch/arm/mach-bcm2709/bcm2709.c index 7e3affdcbcf509..db713c2a5041e9 100644 --- a/arch/arm/mach-bcm2709/bcm2709.c +++ b/arch/arm/mach-bcm2709/bcm2709.c @@ -954,10 +954,11 @@ void __init bcm2709_init(void) i2c_register_board_info_dt(1, snd_pcm512x_i2c_devices, ARRAY_SIZE(snd_pcm512x_i2c_devices)); #endif - - for (i = 0; i < ARRAY_SIZE(amba_devs); i++) { - struct amba_device *d = amba_devs[i]; - amba_device_register(d, &iomem_resource); + if (!use_dt) { + for (i = 0; i < ARRAY_SIZE(amba_devs); i++) { + struct amba_device *d = amba_devs[i]; + amba_device_register(d, &iomem_resource); + } } system_rev = boardrev; system_serial_low = serial;