Skip to contentSkip to conversation

Switch bcm283x platform to use OF_CONTROL

PATCH New Fabian Vogt 7 participants 39 messages Sep 26, 2016 – Nov 29, 2016

Subsystems (7)
lore
Share & tools
lore
#0 lore raw

cover Switch bcm283x platform to use OF_CONTROL

This patch series modifies the used drivers to work with OF_CONTROL and switches the board code and configs to use it.
The added device trees are directly from the linux kernel tree and can thus be used for booting the (upstream) kernel.

Fabian Vogt (9):
gpio: bcm2835: add device tree support
serial: bcm283x_mu: add device tree support
serial: pl01x: expose skip_init platdata option in DT
fdt: add dt-bindings for bcm2835
fdt: import bcm283x device tree sources from the linux kernel tree
fdt: adjust bcm283x device tree for u-boot
serial: bcm283x_mu: support disabling after initialization
board: rpi: move uart deactivation to board_init
ARM: bcm283x: use OF_CONTROL for bcm283x

 arch/arm/Kconfig                                   |   1 +
 arch/arm/dts/Makefile                              |   9 +
 arch/arm/dts/bcm2835-rpi-a-plus.dts                |  35 +++
 arch/arm/dts/bcm2835-rpi-a.dts                     |  28 ++
 arch/arm/dts/bcm2835-rpi-b-plus.dts                |  36 +++
 arch/arm/dts/bcm2835-rpi-b-rev2.dts                |  29 ++
 arch/arm/dts/bcm2835-rpi-b.dts                     |  23 ++
 arch/arm/dts/bcm2835-rpi.dtsi                      |  86 ++++++
 arch/arm/dts/bcm2835.dtsi                          |  25 ++
 arch/arm/dts/bcm2836-rpi-2-b.dts                   |  40 +++
 arch/arm/dts/bcm2836.dtsi                          |  78 +++++
 arch/arm/dts/bcm2837-rpi-3-b.dts                   |  30 ++
 arch/arm/dts/bcm2837.dtsi                          |  76 +++++
 arch/arm/dts/bcm283x-rpi-smsc9512.dtsi             |  19 ++
 arch/arm/dts/bcm283x-rpi-smsc9514.dtsi             |  19 ++
 arch/arm/dts/bcm283x-uboot.dtsi                    |  22 ++
 arch/arm/dts/bcm283x.dtsi                          | 323 +++++++++++++++++++++
 board/raspberrypi/rpi/rpi.c                        |  77 ++---
 configs/rpi_2_defconfig                            |   2 +
 configs/rpi_3_32b_defconfig                        |   2 +
 configs/rpi_3_defconfig                            |   2 +
 configs/rpi_defconfig                              |   2 +
 doc/device-tree-bindings/gpio/bcm2835-gpio.txt     |   5 +
 .../serial/bcm2835-aux-uart.txt                    |  10 +
 doc/device-tree-bindings/serial/pl01x.txt          |   3 +
 drivers/gpio/bcm2835_gpio.c                        |  24 ++
 drivers/serial/serial_bcm283x_mu.c                 |  46 ++-
 drivers/serial/serial_pl01x.c                      |   2 +
 include/configs/rpi.h                              |   1 -
 include/dt-bindings/clock/bcm2835-aux.h            |  17 ++
 include/dt-bindings/clock/bcm2835.h                |  66 +++++
 include/dt-bindings/pinctrl/bcm2835.h              |  27 ++
 include/dt-bindings/power/raspberrypi-power.h      |  41 +++
 33 files changed, 1152 insertions(+), 54 deletions(-)
 create mode 100644 arch/arm/dts/bcm2835-rpi-a-plus.dts
 create mode 100644 arch/arm/dts/bcm2835-rpi-a.dts
 create mode 100644 arch/arm/dts/bcm2835-rpi-b-plus.dts
 create mode 100644 arch/arm/dts/bcm2835-rpi-b-rev2.dts
 create mode 100644 arch/arm/dts/bcm2835-rpi-b.dts
 create mode 100644 arch/arm/dts/bcm2835-rpi.dtsi
 create mode 100644 arch/arm/dts/bcm2835.dtsi
 create mode 100644 arch/arm/dts/bcm2836-rpi-2-b.dts
 create mode 100644 arch/arm/dts/bcm2836.dtsi
 create mode 100644 arch/arm/dts/bcm2837-rpi-3-b.dts
 create mode 100644 arch/arm/dts/bcm2837.dtsi
 create mode 100644 arch/arm/dts/bcm283x-rpi-smsc9512.dtsi
 create mode 100644 arch/arm/dts/bcm283x-rpi-smsc9514.dtsi
 create mode 100644 arch/arm/dts/bcm283x-uboot.dtsi
 create mode 100644 arch/arm/dts/bcm283x.dtsi
 create mode 100644 doc/device-tree-bindings/gpio/bcm2835-gpio.txt
 create mode 100644 doc/device-tree-bindings/serial/bcm2835-aux-uart.txt
 create mode 100644 include/dt-bindings/clock/bcm2835-aux.h
 create mode 100644 include/dt-bindings/clock/bcm2835.h
 create mode 100644 include/dt-bindings/pinctrl/bcm2835.h
 create mode 100644 include/dt-bindings/power/raspberrypi-power.h
Signature · 1 line
2.6.2
#1 lore raw

PATCH 1/9 gpio: bcm2835: add device tree support

This patch adds device tree support for the bcm2835 GPIO driver.

---
 doc/device-tree-bindings/gpio/bcm2835-gpio.txt |  5 +++++
 drivers/gpio/bcm2835_gpio.c                    | 24 ++++++++++++++++++++++++
 2 files changed, 29 insertions(+)
 create mode 100644 doc/device-tree-bindings/gpio/bcm2835-gpio.txt
doc/device-tree-bindings/gpio/bcm2835-gpio.txt new file +5 -0
new file mode 100644
index 0000000..21e0610
@@ -0,0 +1,5 @@
+* Broadcom BCM283x GPIO controller
+
+Required properties:
+- compatible: must be "brcm,bcm2835-gpio"
+- reg: exactly one register range with length 0xb4
drivers/gpio/bcm2835_gpio.c +24 -0
index 8dd7a28..cd5480e 100644
@@ -10,6 +10,7 @@
 #include <errno.h>
 #include <asm/gpio.h>
 #include <asm/io.h>
+#include <fdtdec.h>
 
 struct bcm2835_gpios {
 	struct bcm2835_gpio_regs *reg;
@@ -118,9 +119,32 @@ static int bcm2835_gpio_probe(struct udevice *dev)
 	return 0;
 }
 
+#if CONFIG_IS_ENABLED(OF_CONTROL)
+static const struct udevice_id bcm2835_gpio_id[] = {
+	{.compatible = "brcm,bcm2835-gpio"},
+	{}
+};
+
+static int bcm2835_gpio_ofdata_to_platdata(struct udevice *dev)
+{
+	struct bcm2835_gpio_platdata *plat = dev_get_platdata(dev);
+	fdt_addr_t addr;
+
+	addr = dev_get_addr(dev);
+	if (addr == FDT_ADDR_T_NONE)
+		return -EINVAL;
+
+	plat->base = addr;
+	return 0;
+}
+#endif
+
 U_BOOT_DRIVER(gpio_bcm2835) = {
 	.name	= "gpio_bcm2835",
 	.id	= UCLASS_GPIO,
+	.of_match = of_match_ptr(bcm2835_gpio_id),
+	.ofdata_to_platdata = of_match_ptr(bcm2835_gpio_ofdata_to_platdata),
+	.platdata_auto_alloc_size = sizeof(struct bcm2835_gpio_platdata),
 	.ops	= &gpio_bcm2835_ops,
 	.probe	= bcm2835_gpio_probe,
 	.flags	= DM_FLAG_PRE_RELOC,
Signature · 1 line
2.6.2
#2 lore raw

PATCH 1/9 gpio: bcm2835: add device tree support

Quoted 8 lines · Fabian Vogt

This patch adds device tree support for the bcm2835 GPIO driver.

---
 doc/device-tree-bindings/gpio/bcm2835-gpio.txt |  5 +++++
 drivers/gpio/bcm2835_gpio.c                    | 24 ++++++++++++++++++++++++
 2 files changed, 29 insertions(+)
 create mode 100644 doc/device-tree-bindings/gpio/bcm2835-gpio.txt
#3 lore raw

PATCH 1/9 gpio: bcm2835: add device tree support

In reply to Fabian Vogt
Quoted 4 lines · Fabian Vogt

This patch adds device tree support for the bcm2835 GPIO driver.

Applied to u-boot/master, thanks!

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20161129/720ab24f/attachment.sig>
#4 lore raw

PATCH 2/9 serial: bcm283x_mu: add device tree support

In reply to Fabian Vogt

This patch adds device tree support for the bcm283x mini-uart driver.

---
 .../serial/bcm2835-aux-uart.txt                    | 10 ++++++++
 drivers/serial/serial_bcm283x_mu.c                 | 28 ++++++++++++++++++++++
 2 files changed, 38 insertions(+)
 create mode 100644 doc/device-tree-bindings/serial/bcm2835-aux-uart.txt
doc/device-tree-bindings/serial/bcm2835-aux-uart.txt new file +10 -0
new file mode 100644
index 0000000..75886e5
@@ -0,0 +1,10 @@
+* BCM283x mini UART
+
+Required properties:
+- compatible: must be "brcm,bcm2835-aux-uart"
+- reg: exactly one register range with length 0x1000
+- clock: input clock frequency for the UART (used to calculate the baud
+  rate divisor)
+
+Optional properties:
+- skip-init: if present, the baud rate divisor is not changed
drivers/serial/serial_bcm283x_mu.c +28 -0
index f4e062f..e361909 100644
@@ -25,6 +25,8 @@
 #include <linux/compiler.h>
 #include <fdtdec.h>
 
+DECLARE_GLOBAL_DATA_PTR;
+
 struct bcm283x_mu_regs {
 	u32 io;
 	u32 iir;
@@ -132,9 +134,35 @@ static const struct dm_serial_ops bcm283x_mu_serial_ops = {
 	.setbrg = bcm283x_mu_serial_setbrg,
 };
 
+#if CONFIG_IS_ENABLED(OF_CONTROL)
+static const struct udevice_id bcm283x_mu_serial_id[] = {
+	{.compatible = "brcm,bcm2835-aux-uart"},
+	{}
+};
+
+static int bcm283x_mu_serial_ofdata_to_platdata(struct udevice *dev)
+{
+	struct bcm283x_mu_serial_platdata *plat = dev_get_platdata(dev);
+	fdt_addr_t addr;
+
+	addr = dev_get_addr(dev);
+	if (addr == FDT_ADDR_T_NONE)
+		return -EINVAL;
+
+	plat->base = addr;
+	plat->clock = fdtdec_get_int(gd->fdt_blob, dev->of_offset, "clock", 1);
+	plat->skip_init = fdtdec_get_bool(gd->fdt_blob, dev->of_offset,
+	                                  "skip-init");
+	plat->disabled = false;
+	return 0;
+}
+#endif
+
 U_BOOT_DRIVER(serial_bcm283x_mu) = {
 	.name = "serial_bcm283x_mu",
 	.id = UCLASS_SERIAL,
+	.of_match = of_match_ptr(bcm283x_mu_serial_id),
+	.ofdata_to_platdata = of_match_ptr(bcm283x_mu_serial_ofdata_to_platdata),
 	.platdata_auto_alloc_size = sizeof(struct bcm283x_mu_serial_platdata),
 	.probe = bcm283x_mu_serial_probe,
 	.ops = &bcm283x_mu_serial_ops,
Signature · 1 line
2.6.2
#5 lore raw

PATCH 2/9 serial: bcm283x_mu: add device tree support

Quoted 8 lines · Fabian Vogt

This patch adds device tree support for the bcm283x mini-uart driver.

---
 .../serial/bcm2835-aux-uart.txt                    | 10 ++++++++
 drivers/serial/serial_bcm283x_mu.c                 | 28 ++++++++++++++++++++++
 2 files changed, 38 insertions(+)
 create mode 100644 doc/device-tree-bindings/serial/bcm2835-aux-uart.txt
#6 lore raw

PATCH 2/9 serial: bcm283x_mu: add device tree support

In reply to Fabian Vogt
Quoted 4 lines · Fabian Vogt

This patch adds device tree support for the bcm283x mini-uart driver.

Applied to u-boot/master, thanks!

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20161129/c805570e/attachment.sig>
#7 lore raw

PATCH 3/9 serial: pl01x: expose skip_init platdata option in DT

In reply to Fabian Vogt

To be able to represent the skip-init platdata element with OF_CONTROL, it needs to be read from the device tree as well and put into the platform data.

---
 doc/device-tree-bindings/serial/pl01x.txt | 3 +++
 drivers/serial/serial_pl01x.c             | 2 ++
 2 files changed, 5 insertions(+)
doc/device-tree-bindings/serial/pl01x.txt +3 -0
index 61c27d1..017b1e2 100644
@@ -5,3 +5,6 @@ Required properties:
 - reg: exactly one register range with length 0x1000
 - clock: input clock frequency for the UART (used to calculate the baud
   rate divisor)
+
+Optional properties:
+- skip-init: if present, the baud rate divisor is not changed
drivers/serial/serial_pl01x.c +2 -0
index 6f83835..a8d3d67 100644
@@ -356,6 +356,8 @@ static int pl01x_serial_ofdata_to_platdata(struct udevice *dev)
 	plat->base = addr;
 	plat->clock = fdtdec_get_int(gd->fdt_blob, dev->of_offset, "clock", 1);
 	plat->type = dev_get_driver_data(dev);
+	plat->skip_init = fdtdec_get_bool(gd->fdt_blob, dev->of_offset,
+	                                  "skip-init");
 	return 0;
 }
 #endif
Signature · 1 line
2.6.2
#8 lore raw

PATCH 3/9 serial: pl01x: expose skip_init platdata option in DT

Quoted 9 lines · Fabian Vogt

To be able to represent the skip-init platdata element with OF_CONTROL, it needs to be read from the device tree as well and put into the platform data.

---
 doc/device-tree-bindings/serial/pl01x.txt | 3 +++
 drivers/serial/serial_pl01x.c             | 2 ++
 2 files changed, 5 insertions(+)
#9 lore raw

PATCH 3/9 serial: pl01x: expose skip_init platdata option in DT

In reply to Fabian Vogt
Quoted 6 lines · Fabian Vogt

To be able to represent the skip-init platdata element with OF_CONTROL, it needs to be read from the device tree as well and put into the platform data.

Applied to u-boot/master, thanks!

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20161129/d6be33f4/attachment.sig>
#10 lore raw

PATCH 4/9 fdt: add dt-bindings for bcm2835

In reply to Fabian Vogt

This patch adds dt-bindings as used by the linux kernel device trees for the bcm283x family.

Albert Aribaud <[email protected]>

---
 include/dt-bindings/clock/bcm2835-aux.h       | 17 +++++++
 include/dt-bindings/clock/bcm2835.h           | 66 +++++++++++++++++++++++++++
 include/dt-bindings/pinctrl/bcm2835.h         | 27 +++++++++++
 include/dt-bindings/power/raspberrypi-power.h | 41 +++++++++++++++++
 4 files changed, 151 insertions(+)
 create mode 100644 include/dt-bindings/clock/bcm2835-aux.h
 create mode 100644 include/dt-bindings/clock/bcm2835.h
 create mode 100644 include/dt-bindings/pinctrl/bcm2835.h
 create mode 100644 include/dt-bindings/power/raspberrypi-power.h
include/dt-bindings/clock/bcm2835-aux.h new file +17 -0
new file mode 100644
index 0000000..d91156e
@@ -0,0 +1,17 @@
+/*
+ * Copyright (C) 2015 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation version 2.
+ *
+ * This program is distributed "as is" WITHOUT ANY WARRANTY of any
+ * kind, whether express or implied; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#define BCM2835_AUX_CLOCK_UART		0
+#define BCM2835_AUX_CLOCK_SPI1		1
+#define BCM2835_AUX_CLOCK_SPI2		2
+#define BCM2835_AUX_CLOCK_COUNT		3
include/dt-bindings/clock/bcm2835.h new file +66 -0

66 lines not on this page · raw message

include/dt-bindings/pinctrl/bcm2835.h new file +27 -0
new file mode 100644
index 0000000..6f0bc37
@@ -0,0 +1,27 @@
+/*
+ * Header providing constants for bcm2835 pinctrl bindings.
+ *
+ * Copyright (C) 2015 Stefan Wahren <[email protected]>
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+#ifndef __DT_BINDINGS_PINCTRL_BCM2835_H__
+#define __DT_BINDINGS_PINCTRL_BCM2835_H__
+
+/* brcm,function property */
+#define BCM2835_FSEL_GPIO_IN	0
+#define BCM2835_FSEL_GPIO_OUT	1
+#define BCM2835_FSEL_ALT5	2
+#define BCM2835_FSEL_ALT4	3
+#define BCM2835_FSEL_ALT0	4
+#define BCM2835_FSEL_ALT1	5
+#define BCM2835_FSEL_ALT2	6
+#define BCM2835_FSEL_ALT3	7
+
+#endif /* __DT_BINDINGS_PINCTRL_BCM2835_H__ */
include/dt-bindings/power/raspberrypi-power.h new file +41 -0

41 lines not on this page · raw message

Signature · 1 line
2.6.2
#11 lore raw

PATCH 4/9 fdt: add dt-bindings for bcm2835

Quoted 5 lines · Fabian Vogt

This patch adds dt-bindings as used by the linux kernel device trees for the bcm283x family.

Albert Aribaud <[email protected]>

Quoted 10 lines
---
 include/dt-bindings/clock/bcm2835-aux.h       | 17 +++++++
 include/dt-bindings/clock/bcm2835.h           | 66 +++++++++++++++++++++++++++
 include/dt-bindings/pinctrl/bcm2835.h         | 27 +++++++++++
 include/dt-bindings/power/raspberrypi-power.h | 41 +++++++++++++++++
 4 files changed, 151 insertions(+)
 create mode 100644 include/dt-bindings/clock/bcm2835-aux.h
 create mode 100644 include/dt-bindings/clock/bcm2835.h
 create mode 100644 include/dt-bindings/pinctrl/bcm2835.h
 create mode 100644 include/dt-bindings/power/raspberrypi-power.h
#12 lore raw

PATCH 4/9 fdt: add dt-bindings for bcm2835

In reply to Fabian Vogt
Quoted 6 lines · Fabian Vogt

This patch adds dt-bindings as used by the linux kernel device trees for the bcm283x family.

Albert Aribaud <[email protected]>

Applied to u-boot/master, thanks!

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20161129/e94344b7/attachment-0001.sig>
#13 lore raw

PATCH 5/9 fdt: import bcm283x device tree sources from the linux kernel tree

In reply to Fabian Vogt

This patch adds device trees for the bcm283x platform to be used with OF_CONTROL. The version 4.8-rc7 of the linux kernel was used as source.

Cc Albert Aribaud <[email protected]>
---
 arch/arm/dts/Makefile                  |   9 +
 arch/arm/dts/bcm2835-rpi-a-plus.dts    |  35 ++++
 arch/arm/dts/bcm2835-rpi-a.dts         |  28 +++
 arch/arm/dts/bcm2835-rpi-b-plus.dts    |  36 ++++
 arch/arm/dts/bcm2835-rpi-b-rev2.dts    |  29 +++
 arch/arm/dts/bcm2835-rpi-b.dts         |  23 +++
 arch/arm/dts/bcm2835-rpi.dtsi          |  86 +++++++++
 arch/arm/dts/bcm2835.dtsi              |  25 +++
 arch/arm/dts/bcm2836-rpi-2-b.dts       |  40 ++++
 arch/arm/dts/bcm2836.dtsi              |  78 ++++++++
 arch/arm/dts/bcm2837-rpi-3-b.dts       |  30 +++
 arch/arm/dts/bcm2837.dtsi              |  76 ++++++++
 arch/arm/dts/bcm283x-rpi-smsc9512.dtsi |  19 ++
 arch/arm/dts/bcm283x-rpi-smsc9514.dtsi |  19 ++
 arch/arm/dts/bcm283x.dtsi              | 321 +++++++++++++++++++++++++++++++++
 15 files changed, 854 insertions(+)
 create mode 100644 arch/arm/dts/bcm2835-rpi-a-plus.dts
 create mode 100644 arch/arm/dts/bcm2835-rpi-a.dts
 create mode 100644 arch/arm/dts/bcm2835-rpi-b-plus.dts
 create mode 100644 arch/arm/dts/bcm2835-rpi-b-rev2.dts
 create mode 100644 arch/arm/dts/bcm2835-rpi-b.dts
 create mode 100644 arch/arm/dts/bcm2835-rpi.dtsi
 create mode 100644 arch/arm/dts/bcm2835.dtsi
 create mode 100644 arch/arm/dts/bcm2836-rpi-2-b.dts
 create mode 100644 arch/arm/dts/bcm2836.dtsi
 create mode 100644 arch/arm/dts/bcm2837-rpi-3-b.dts
 create mode 100644 arch/arm/dts/bcm2837.dtsi
 create mode 100644 arch/arm/dts/bcm283x-rpi-smsc9512.dtsi
 create mode 100644 arch/arm/dts/bcm283x-rpi-smsc9514.dtsi
 create mode 100644 arch/arm/dts/bcm283x.dtsi
arch/arm/dts/Makefile +9 -0
index 1d41d48..eafcfd4 100644
@@ -283,6 +283,15 @@ dtb-$(CONFIG_SOC_KEYSTONE) += k2hk-evm.dtb \
 dtb-$(CONFIG_TARGET_SAMA5D2_XPLAINED) += \
 	at91-sama5d2_xplained.dtb
 
+dtb-$(CONFIG_ARCH_BCM283X) += \
+	bcm2835-rpi-a-plus.dtb \
+	bcm2835-rpi-a.dtb \
+	bcm2835-rpi-b-plus.dtb \
+	bcm2835-rpi-b-rev2.dtb \
+	bcm2835-rpi-b.dtb \
+	bcm2836-rpi-2-b.dtb \
+	bcm2837-rpi-3-b.dtb
+
 targets += $(dtb-y)
 
 # Add any required device tree compiler flags here
arch/arm/dts/bcm2835-rpi-a-plus.dts new file +35 -0
new file mode 100644
index 0000000..35ff4e7
@@ -0,0 +1,35 @@
+/dts-v1/;
+#include "bcm2835.dtsi"
+#include "bcm2835-rpi.dtsi"
+
+/ {
+	compatible = "raspberrypi,model-a-plus", "brcm,bcm2835";
+	model = "Raspberry Pi Model A+";
+
+	leds {
+		act {
+			gpios = <&gpio 47 0>;
+		};
+
+		pwr {
+			label = "PWR";
+			gpios = <&gpio 35 0>;
+			default-state = "keep";
+			linux,default-trigger = "default-on";
+		};
+	};
+};
+
+&gpio {
+	pinctrl-0 = <&gpioout &alt0 &i2s_alt0 &alt3>;
+
+	/* I2S interface */
+	i2s_alt0: i2s_alt0 {
+		brcm,pins = <18 19 20 21>;
+		brcm,function = <BCM2835_FSEL_ALT0>;
+	};
+};
+
+&hdmi {
+	hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
+};
arch/arm/dts/bcm2835-rpi-a.dts new file +28 -0
new file mode 100644
index 0000000..306a84e
@@ -0,0 +1,28 @@
+/dts-v1/;
+#include "bcm2835.dtsi"
+#include "bcm2835-rpi.dtsi"
+
+/ {
+	compatible = "raspberrypi,model-a", "brcm,bcm2835";
+	model = "Raspberry Pi Model A";
+
+	leds {
+		act {
+			gpios = <&gpio 16 1>;
+		};
+	};
+};
+
+&gpio {
+	pinctrl-0 = <&gpioout &alt0 &i2s_alt2 &alt3>;
+
+	/* I2S interface */
+	i2s_alt2: i2s_alt2 {
+		brcm,pins = <28 29 30 31>;
+		brcm,function = <BCM2835_FSEL_ALT2>;
+	};
+};
+
+&hdmi {
+	hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
+};
arch/arm/dts/bcm2835-rpi-b-plus.dts new file +36 -0
new file mode 100644
index 0000000..d5fdb8e
@@ -0,0 +1,36 @@
+/dts-v1/;
+#include "bcm2835.dtsi"
+#include "bcm2835-rpi.dtsi"
+#include "bcm283x-rpi-smsc9514.dtsi"
+
+/ {
+	compatible = "raspberrypi,model-b-plus", "brcm,bcm2835";
+	model = "Raspberry Pi Model B+";
+
+	leds {
+		act {
+			gpios = <&gpio 47 0>;
+		};
+
+		pwr {
+			label = "PWR";
+			gpios = <&gpio 35 0>;
+			default-state = "keep";
+			linux,default-trigger = "default-on";
+		};
+	};
+};
+
+&gpio {
+	pinctrl-0 = <&gpioout &alt0 &i2s_alt0 &alt3>;
+
+	/* I2S interface */
+	i2s_alt0: i2s_alt0 {
+		brcm,pins = <18 19 20 21>;
+		brcm,function = <BCM2835_FSEL_ALT0>;
+	};
+};
+
+&hdmi {
+	hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
+};
arch/arm/dts/bcm2835-rpi-b-rev2.dts new file +29 -0
new file mode 100644
index 0000000..bfc4bd9
@@ -0,0 +1,29 @@
+/dts-v1/;
+#include "bcm2835.dtsi"
+#include "bcm2835-rpi.dtsi"
+#include "bcm283x-rpi-smsc9512.dtsi"
+
+/ {
+	compatible = "raspberrypi,model-b-rev2", "brcm,bcm2835";
+	model = "Raspberry Pi Model B rev2";
+
+	leds {
+		act {
+			gpios = <&gpio 16 1>;
+		};
+	};
+};
+
+&gpio {
+	pinctrl-0 = <&gpioout &alt0 &i2s_alt2 &alt3>;
+
+	/* I2S interface */
+	i2s_alt2: i2s_alt2 {
+		brcm,pins = <28 29 30 31>;
+		brcm,function = <BCM2835_FSEL_ALT2>;
+	};
+};
+
+&hdmi {
+	hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
+};
arch/arm/dts/bcm2835-rpi-b.dts new file +23 -0
new file mode 100644
index 0000000..0371bb7
@@ -0,0 +1,23 @@
+/dts-v1/;
+#include "bcm2835.dtsi"
+#include "bcm2835-rpi.dtsi"
+#include "bcm283x-rpi-smsc9512.dtsi"
+
+/ {
+	compatible = "raspberrypi,model-b", "brcm,bcm2835";
+	model = "Raspberry Pi Model B";
+
+	leds {
+		act {
+			gpios = <&gpio 16 1>;
+		};
+	};
+};
+
+&gpio {
+	pinctrl-0 = <&gpioout &alt0 &alt3>;
+};
+
+&hdmi {
+	hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
+};
arch/arm/dts/bcm2835-rpi.dtsi new file +86 -0

86 lines not on this page · raw message

arch/arm/dts/bcm2835.dtsi new file +25 -0
new file mode 100644
index 0000000..a78759e
@@ -0,0 +1,25 @@
+#include "bcm283x.dtsi"
+
+/ {
+	compatible = "brcm,bcm2835";
+
+	cpus {
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		cpu at 0 {
+			device_type = "cpu";
+			compatible = "arm,arm1176jzf-s";
+			reg = <0x0>;
+		};
+	};
+
+	soc {
+		ranges = <0x7e000000 0x20000000 0x02000000>;
+		dma-ranges = <0x40000000 0x00000000 0x20000000>;
+
+		arm-pmu {
+			compatible = "arm,arm1176-pmu";
+		};
+	};
+};
arch/arm/dts/bcm2836-rpi-2-b.dts new file +40 -0
new file mode 100644
index 0000000..29e1cfe
@@ -0,0 +1,40 @@
+/dts-v1/;
+#include "bcm2836.dtsi"
+#include "bcm2835-rpi.dtsi"
+#include "bcm283x-rpi-smsc9514.dtsi"
+
+/ {
+	compatible = "raspberrypi,2-model-b", "brcm,bcm2836";
+	model = "Raspberry Pi 2 Model B";
+
+	memory {
+		reg = <0 0x40000000>;
+	};
+
+	leds {
+		act {
+			gpios = <&gpio 47 0>;
+		};
+
+		pwr {
+			label = "PWR";
+			gpios = <&gpio 35 0>;
+			default-state = "keep";
+			linux,default-trigger = "default-on";
+		};
+	};
+};
+
+&gpio {
+	pinctrl-0 = <&gpioout &alt0 &i2s_alt0 &alt3>;
+
+	/* I2S interface */
+	i2s_alt0: i2s_alt0 {
+		brcm,pins = <18 19 20 21>;
+		brcm,function = <BCM2835_FSEL_ALT0>;
+	};
+};
+
+&hdmi {
+	hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
+};
arch/arm/dts/bcm2836.dtsi new file +78 -0

78 lines not on this page · raw message

arch/arm/dts/bcm2837-rpi-3-b.dts new file +30 -0
new file mode 100644
index 0000000..7841b72
@@ -0,0 +1,30 @@
+/dts-v1/;
+#include "bcm2837.dtsi"
+#include "bcm2835-rpi.dtsi"
+#include "bcm283x-rpi-smsc9514.dtsi"
+
+/ {
+	compatible = "raspberrypi,3-model-b", "brcm,bcm2837";
+	model = "Raspberry Pi 3 Model B";
+
+	memory {
+		reg = <0 0x40000000>;
+	};
+
+	leds {
+		act {
+			gpios = <&gpio 47 0>;
+		};
+
+		pwr {
+			label = "PWR";
+			gpios = <&gpio 35 0>;
+			default-state = "keep";
+			linux,default-trigger = "default-on";
+		};
+	};
+};
+
+&uart1 {
+	status = "okay";
+};
arch/arm/dts/bcm2837.dtsi new file +76 -0

76 lines not on this page · raw message

arch/arm/dts/bcm283x-rpi-smsc9512.dtsi new file +19 -0
new file mode 100644
index 0000000..12c981e
@@ -0,0 +1,19 @@
+/ {
+	aliases {
+		ethernet = &ethernet;
+	};
+};
+
+&usb {
+	usb1 at 1 {
+		compatible = "usb424,9512";
+		reg = <1>;
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		ethernet: usbether at 1 {
+			compatible = "usb424,ec00";
+			reg = <1>;
+		};
+	};
+};
arch/arm/dts/bcm283x-rpi-smsc9514.dtsi new file +19 -0
new file mode 100644
index 0000000..3f0a56e
@@ -0,0 +1,19 @@
+/ {
+	aliases {
+		ethernet = &ethernet;
+	};
+};
+
+&usb {
+	usb1 at 1 {
+		compatible = "usb424,9514";
+		reg = <1>;
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		ethernet: usbether at 1 {
+			compatible = "usb424,ec00";
+			reg = <1>;
+		};
+	};
+};
arch/arm/dts/bcm283x.dtsi new file +321 -0

321 lines not on this page · raw message

Signature · 1 line
2.6.2
#14 lore raw

PATCH 5/9 fdt: import bcm283x device tree sources from the linux kernel tree

Quoted 28 lines · Fabian Vogt

This patch adds device trees for the bcm283x platform to be used with OF_CONTROL. The version 4.8-rc7 of the linux kernel was used as source.

Cc Albert Aribaud <[email protected]>
---
 arch/arm/dts/Makefile                  |   9 +
 arch/arm/dts/bcm2835-rpi-a-plus.dts    |  35 ++++
 arch/arm/dts/bcm2835-rpi-a.dts         |  28 +++
 arch/arm/dts/bcm2835-rpi-b-plus.dts    |  36 ++++
 arch/arm/dts/bcm2835-rpi-b-rev2.dts    |  29 +++
 arch/arm/dts/bcm2835-rpi-b.dts         |  23 +++
 arch/arm/dts/bcm2835-rpi.dtsi          |  86 +++++++++
 arch/arm/dts/bcm2835.dtsi              |  25 +++
 arch/arm/dts/bcm2836-rpi-2-b.dts       |  40 ++++
 arch/arm/dts/bcm2836.dtsi              |  78 ++++++++
 arch/arm/dts/bcm2837-rpi-3-b.dts       |  30 +++
 arch/arm/dts/bcm2837.dtsi              |  76 ++++++++
 arch/arm/dts/bcm283x-rpi-smsc9512.dtsi |  19 ++
 arch/arm/dts/bcm283x-rpi-smsc9514.dtsi |  19 ++
 arch/arm/dts/bcm283x.dtsi              | 321 +++++++++++++++++++++++++++++++++
 15 files changed, 854 insertions(+)
 create mode 100644 arch/arm/dts/bcm2835-rpi-a-plus.dts
 create mode 100644 arch/arm/dts/bcm2835-rpi-a.dts
 create mode 100644 arch/arm/dts/bcm2835-rpi-b-plus.dts
 create mode 100644 arch/arm/dts/bcm2835-rpi-b-rev2.dts
 create mode 100644 arch/arm/dts/bcm2835-rpi-b.dts
 create mode 100644 arch/arm/dts/bcm2835-rpi.dtsi
Quoted 8 lines
 create mode 100644 arch/arm/dts/bcm2835.dtsi
 create mode 100644 arch/arm/dts/bcm2836-rpi-2-b.dts
 create mode 100644 arch/arm/dts/bcm2836.dtsi
 create mode 100644 arch/arm/dts/bcm2837-rpi-3-b.dts
 create mode 100644 arch/arm/dts/bcm2837.dtsi
 create mode 100644 arch/arm/dts/bcm283x-rpi-smsc9512.dtsi
 create mode 100644 arch/arm/dts/bcm283x-rpi-smsc9514.dtsi
 create mode 100644 arch/arm/dts/bcm283x.dtsi
#15 lore raw

PATCH 5/9 fdt: import bcm283x device tree sources from the linux kernel tree

In reply to Fabian Vogt
Quoted 6 lines · Fabian Vogt

This patch adds device trees for the bcm283x platform to be used with OF_CONTROL. The version 4.8-rc7 of the linux kernel was used as source.

Applied to u-boot/master, thanks!

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20161129/3ffb6cd4/attachment.sig>
#16 lore raw

PATCH 6/9 fdt: adjust bcm283x device tree for u-boot

In reply to Fabian Vogt

The information currently set via platdata has to be represented in the device tree now. bcm283x-uboot.dtsi adds the u-boot specific "skip-init" property to the serial nodes and enables initialization in the pre-reloc phase.

Cc Albert Aribaud <[email protected]>
---
 arch/arm/dts/bcm283x-uboot.dtsi | 22 ++++++++++++++++++++++
 arch/arm/dts/bcm283x.dtsi       |  4 +++-
 2 files changed, 25 insertions(+), 1 deletion(-)
 create mode 100644 arch/arm/dts/bcm283x-uboot.dtsi
arch/arm/dts/bcm283x-uboot.dtsi new file +22 -0
new file mode 100644
index 0000000..8e4231a
@@ -0,0 +1,22 @@
+/*
+ * U-Boot addition to keep baudrate set by firmware
+ * and also initialize before relocation.
+ *
+ * (C) Copyright 2016 Fabian Vogt <[email protected]>
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+&soc {
+	u-boot,dm-pre-reloc;
+};
+
+&uart0 {
+	skip-init;
+	u-boot,dm-pre-reloc;
+};
+
+&uart1 {
+	skip-init;
+	u-boot,dm-pre-reloc;
+};
arch/arm/dts/bcm283x.dtsi +3 -1
index 445624a..e5b4f20 100644
@@ -19,7 +19,7 @@
 		bootargs = "earlyprintk console=ttyAMA0";
 	};
 
-	soc {
+	soc: soc {
 		compatible = "simple-bus";
 		#address-cells = <1>;
 		#size-cells = <1>;
@@ -319,3 +319,5 @@
 
 	};
 };
+
+#include "bcm283x-uboot.dtsi"
Signature · 1 line
2.6.2
#17 lore raw

PATCH 6/9 fdt: adjust bcm283x device tree for u-boot

Quoted 11 lines · Fabian Vogt

The information currently set via platdata has to be represented in the device tree now. bcm283x-uboot.dtsi adds the u-boot specific "skip-init" property to the serial nodes and enables initialization in the pre-reloc phase.

Cc Albert Aribaud <[email protected]>
---
 arch/arm/dts/bcm283x-uboot.dtsi | 22 ++++++++++++++++++++++
 arch/arm/dts/bcm283x.dtsi       |  4 +++-
 2 files changed, 25 insertions(+), 1 deletion(-)
 create mode 100644 arch/arm/dts/bcm283x-uboot.dtsi

I'd be intrigued to see if Linux would accept a version of this patch.

#18 lore raw

PATCH 6/9 fdt: adjust bcm283x device tree for u-boot

In reply to Fabian Vogt
Quoted 7 lines · Fabian Vogt

The information currently set via platdata has to be represented in the device tree now. bcm283x-uboot.dtsi adds the u-boot specific "skip-init" property to the serial nodes and enables initialization in the pre-reloc phase.

Applied to u-boot/master, thanks!

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20161129/c1f90fb0/attachment.sig>
#19 lore raw

PATCH 7/9 serial: bcm283x_mu: support disabling after initialization

In reply to Fabian Vogt

For the Raspberry Pi 3 it needs to be possible to disable the serial device after initialization happens, as only after the GPIO device is available it is known whether the mini uart is usable.

---
 drivers/serial/serial_bcm283x_mu.c | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)
drivers/serial/serial_bcm283x_mu.c +16 -2
index e361909..3884f74 100644
@@ -59,7 +59,7 @@ static int bcm283x_mu_serial_setbrg(struct udevice *dev, int baudrate)
 	struct bcm283x_mu_regs *regs = priv->regs;
 	u32 divider;
 
-	if (plat->skip_init)
+	if (plat->disabled || plat->skip_init)
 		return 0;
 
 	divider = plat->clock / (baudrate * 8);
@@ -85,10 +85,14 @@ static int bcm283x_mu_serial_probe(struct udevice *dev)
 
 static int bcm283x_mu_serial_getc(struct udevice *dev)
 {
+	struct bcm283x_mu_serial_platdata *plat = dev_get_platdata(dev);
 	struct bcm283x_mu_priv *priv = dev_get_priv(dev);
 	struct bcm283x_mu_regs *regs = priv->regs;
 	u32 data;
 
+	if (plat->disabled)
+		return -EAGAIN;
+
 	/* Wait until there is data in the FIFO */
 	if (!(readl(&regs->lsr) & BCM283X_MU_LSR_RX_READY))
 		return -EAGAIN;
@@ -100,9 +104,13 @@ static int bcm283x_mu_serial_getc(struct udevice *dev)
 
 static int bcm283x_mu_serial_putc(struct udevice *dev, const char data)
 {
+	struct bcm283x_mu_serial_platdata *plat = dev_get_platdata(dev);
 	struct bcm283x_mu_priv *priv = dev_get_priv(dev);
 	struct bcm283x_mu_regs *regs = priv->regs;
 
+	if (plat->disabled)
+		return 0;
+
 	/* Wait until there is space in the FIFO */
 	if (!(readl(&regs->lsr) & BCM283X_MU_LSR_TX_EMPTY))
 		return -EAGAIN;
@@ -115,9 +123,15 @@ static int bcm283x_mu_serial_putc(struct udevice *dev, const char data)
 
 static int bcm283x_mu_serial_pending(struct udevice *dev, bool input)
 {
+	struct bcm283x_mu_serial_platdata *plat = dev_get_platdata(dev);
 	struct bcm283x_mu_priv *priv = dev_get_priv(dev);
 	struct bcm283x_mu_regs *regs = priv->regs;
-	unsigned int lsr = readl(&regs->lsr);
+	unsigned int lsr;
+
+	if (plat->disabled)
+		return 0;
+
+	lsr = readl(&regs->lsr);
 
 	if (input) {
 		WATCHDOG_RESET();
Signature · 1 line
2.6.2
#20 lore raw

PATCH 7/9 serial: bcm283x_mu: support disabling after initialization

Quoted 8 lines · Fabian Vogt

For the Raspberry Pi 3 it needs to be possible to disable the serial device after initialization happens, as only after the GPIO device is available it is known whether the mini uart is usable.

---
 drivers/serial/serial_bcm283x_mu.c | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)
#21 lore raw

PATCH 7/9 serial: bcm283x_mu: support disabling after initialization

In reply to Fabian Vogt
Quoted 6 lines · Fabian Vogt

For the Raspberry Pi 3 it needs to be possible to disable the serial device after initialization happens, as only after the GPIO device is available it is known whether the mini uart is usable.

Applied to u-boot/master, thanks!

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20161129/40a2046d/attachment.sig>
#22 lore raw

PATCH 8/9 board: rpi: move uart deactivation to board_init

In reply to Fabian Vogt

When using OF_CONTROL, the disabled value of the mini UART platdata gets reset after board_early_init_f. So move detection and disabling to board_init and remove board_early_init_f.
This uses the first device using the mini uart driver, as this method works reliably with different device trees or even no device tree at all.

---
 board/raspberrypi/rpi/rpi.c | 40 ++++++++++++++++++++++++++--------------
 include/configs/rpi.h       |  1 -
 2 files changed, 26 insertions(+), 15 deletions(-)
board/raspberrypi/rpi/rpi.c +26 -14
index 6245b36..09bfcc6 100644
@@ -443,15 +443,6 @@ static void get_board_rev(void)
 	printf("RPI %s (0x%x)\n", model->name, revision);
 }
 
-int board_init(void)
-{
-	get_board_rev();
-
-	gd->bd->bi_boot_params = 0x100;
-
-	return power_on_module(BCM2835_MBOX_POWER_DEVID_USB_HCD);
-}
-
 #ifndef CONFIG_PL01X_SERIAL
 static bool rpi_is_serial_active(void)
 {
@@ -471,17 +462,38 @@ static bool rpi_is_serial_active(void)
 
 	return true;
 }
+
+/* Disable mini-UART I/O if it's not pinmuxed to our pins.
+ * The firmware only enables it if explicitly done in config.txt: enable_uart=1
+ */
+static void rpi_disable_inactive_uart(void)
+{
+	struct udevice *dev;
+	struct bcm283x_mu_serial_platdata *plat;
+
+	if (uclass_get_device_by_driver(UCLASS_SERIAL,
+					DM_GET_DRIVER(serial_bcm283x_mu),
+					&dev) || !dev)
+		return;
+
+	if (!rpi_is_serial_active()) {
+		plat = dev_get_platdata(dev);
+		plat->disabled = true;
+	}
+}
 #endif
 
-int board_early_init_f(void)
+int board_init(void)
 {
 #ifndef CONFIG_PL01X_SERIAL
-	/* Disable mini-UART I/O if it's not pinmuxed to our pins */
-	if (!rpi_is_serial_active())
-		serial_platdata.disabled = true;
+	rpi_disable_inactive_uart();
 #endif
 
-	return 0;
+	get_board_rev();
+
+	gd->bd->bi_boot_params = 0x100;
+
+	return power_on_module(BCM2835_MBOX_POWER_DEVID_USB_HCD);
 }
 
 int board_mmc_init(bd_t *bis)
include/configs/rpi.h +0 -1
index 8d4ad5d..e9c0417 100644
@@ -16,7 +16,6 @@
 
 /* Architecture, CPU, etc.*/
 #define CONFIG_ARCH_CPU_INIT
-#define CONFIG_BOARD_EARLY_INIT_F
 
 /* Use SoC timer for AArch32, but architected timer for AArch64 */
 #ifndef CONFIG_ARM64
Signature · 1 line
2.6.2
#23 lore raw

PATCH 8/9 board: rpi: move uart deactivation to board_init

Quoted 11 lines · Fabian Vogt

When using OF_CONTROL, the disabled value of the mini UART platdata gets reset after board_early_init_f. So move detection and disabling to board_init and remove board_early_init_f.
This uses the first device using the mini uart driver, as this method works reliably with different device trees or even no device tree at all.

---
 board/raspberrypi/rpi/rpi.c | 40 ++++++++++++++++++++++++++--------------
 include/configs/rpi.h       |  1 -
 2 files changed, 26 insertions(+), 15 deletions(-)
#24 lore raw

PATCH 8/9 board: rpi: move uart deactivation to board_init

In reply to Fabian Vogt
Quoted 8 lines · Fabian Vogt

When using OF_CONTROL, the disabled value of the mini UART platdata gets reset after board_early_init_f. So move detection and disabling to board_init and remove board_early_init_f.
This uses the first device using the mini uart driver, as this method works reliably with different device trees or even no device tree at all.

Applied to u-boot/master, thanks!

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20161129/ebf56eee/attachment.sig>
#25 lore raw

PATCH 9/9 ARM: bcm283x: use OF_CONTROL for bcm283x

In reply to Fabian Vogt

This patch removes use of U_BOOT_DEVICE in board/raspberrypi/rpi/rpi.c, enables OF_CONTROL in the config and adjusts the rpi_*defconfig configs.

---
 arch/arm/Kconfig            |  1 +
 board/raspberrypi/rpi/rpi.c | 37 -------------------------------------
 configs/rpi_2_defconfig     |  2 ++
 configs/rpi_3_32b_defconfig |  2 ++
 configs/rpi_3_defconfig     |  2 ++
 configs/rpi_defconfig       |  2 ++
 6 files changed, 9 insertions(+), 37 deletions(-)
arch/arm/Kconfig +1 -0
index a311215..cca6933 100644
@@ -316,6 +316,7 @@ config ARCH_BCM283X
 	select DM
 	select DM_SERIAL
 	select DM_GPIO
+	select OF_CONTROL
 
 config TARGET_VEXPRESS_CA15_TC2
 	bool "Support vexpress_ca15_tc2"
board/raspberrypi/rpi/rpi.c +0 -37
index 09bfcc6..389e056 100644
@@ -17,7 +17,6 @@
 #include <asm/arch/mbox.h>
 #include <asm/arch/sdhci.h>
 #include <asm/global_data.h>
-#include <dm/platform_data/serial_pl01x.h>
 #include <dm/platform_data/serial_bcm283x_mu.h>
 #ifdef CONFIG_ARM64
 #include <asm/armv8/mmu.h>
@@ -25,42 +24,6 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-static const struct bcm2835_gpio_platdata gpio_platdata = {
-	.base = BCM2835_GPIO_BASE,
-};
-
-U_BOOT_DEVICE(bcm2835_gpios) = {
-	.name = "gpio_bcm2835",
-	.platdata = &gpio_platdata,
-};
-
-#ifdef CONFIG_PL01X_SERIAL
-static const struct pl01x_serial_platdata serial_platdata = {
-#ifndef CONFIG_BCM2835
-	.base = 0x3f201000,
-#else
-	.base = 0x20201000,
-#endif
-	.type = TYPE_PL011,
-	.skip_init = true,
-};
-
-U_BOOT_DEVICE(bcm2835_serials) = {
-	.name = "serial_pl01x",
-	.platdata = &serial_platdata,
-};
-#else
-static struct bcm283x_mu_serial_platdata serial_platdata = {
-	.base = 0x3f215040,
-	.clock = 250000000,
-	.skip_init = true,
-};
-
-U_BOOT_DEVICE(bcm2837_serials) = {
-	.name = "serial_bcm283x_mu",
-	.platdata = &serial_platdata,
-};
-#endif
 
 struct msg_get_arm_mem {
 	struct bcm2835_mbox_hdr hdr;
configs/rpi_2_defconfig +2 -0
index bda4e95..3db6ff1 100644
@@ -1,6 +1,8 @@
 CONFIG_ARM=y
 CONFIG_ARCH_BCM283X=y
 CONFIG_TARGET_RPI_2=y
+CONFIG_DEFAULT_DEVICE_TREE="bcm2836-rpi-2-b"
+CONFIG_OF_EMBED=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_HUSH_PARSER=y
 CONFIG_SYS_PROMPT="U-Boot> "
configs/rpi_3_32b_defconfig +2 -0
index 8e2c410..8111077 100644
@@ -2,6 +2,8 @@ CONFIG_ARM=y
 CONFIG_ARCH_BCM283X=y
 CONFIG_TARGET_RPI_3_32B=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
+CONFIG_DEFAULT_DEVICE_TREE="bcm2837-rpi-3-b"
+CONFIG_OF_EMBED=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_HUSH_PARSER=y
 CONFIG_SYS_PROMPT="U-Boot> "
configs/rpi_3_defconfig +2 -0
index b7354eb..9636bf5 100644
@@ -2,6 +2,8 @@ CONFIG_ARM=y
 CONFIG_ARCH_BCM283X=y
 CONFIG_TARGET_RPI_3=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
+CONFIG_DEFAULT_DEVICE_TREE="bcm2837-rpi-3-b"
+CONFIG_OF_EMBED=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_HUSH_PARSER=y
 CONFIG_SYS_PROMPT="U-Boot> "
configs/rpi_defconfig +2 -0
index ea39231..878e73c 100644
@@ -1,6 +1,8 @@
 CONFIG_ARM=y
 CONFIG_ARCH_BCM283X=y
 CONFIG_TARGET_RPI=y
+CONFIG_DEFAULT_DEVICE_TREE="bcm2835-rpi-b"
+CONFIG_OF_EMBED=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_HUSH_PARSER=y
 CONFIG_SYS_PROMPT="U-Boot> "
Signature · 1 line
2.6.2
#26 lore raw

PATCH 9/9 ARM: bcm283x: use OF_CONTROL for bcm283x

Quoted 4 lines · Fabian Vogt

This patch removes use of U_BOOT_DEVICE in board/raspberrypi/rpi/rpi.c, enables OF_CONTROL in the config and adjusts the rpi_*defconfig configs.

Quoted 8 lines
---
 arch/arm/Kconfig            |  1 +
 board/raspberrypi/rpi/rpi.c | 37 -------------------------------------
 configs/rpi_2_defconfig     |  2 ++
 configs/rpi_3_32b_defconfig |  2 ++
 configs/rpi_3_defconfig     |  2 ++
 configs/rpi_defconfig       |  2 ++
 6 files changed, 9 insertions(+), 37 deletions(-)
#27 lore raw

PATCH 9/9 ARM: bcm283x: use OF_CONTROL for bcm283x

In reply to Fabian Vogt
Quoted 5 lines · Fabian Vogt

This patch removes use of U_BOOT_DEVICE in board/raspberrypi/rpi/rpi.c, enables OF_CONTROL in the config and adjusts the rpi_*defconfig configs.

Applied to u-boot/master, thanks!

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20161129/b6a09b0c/attachment.sig>
#28 lore raw

cover Switch bcm283x platform to use OF_CONTROL

In reply to Fabian Vogt
Quoted 4 lines · Fabian Vogt

This patch series modifies the used drivers to work with OF_CONTROL and switches the board code and configs to use it.
The added device trees are directly from the linux kernel tree and can thus be used for booting the (upstream) kernel.

Is there a user-visible or developer-visible benefit to this change? In general, converting to use DT to instantiate devices simply ends up using more code (and hence complexity and time) to get to the exact same state afterwards.

#29 lore raw

cover Switch bcm283x platform to use OF_CONTROL

Hi,

Am Mittwoch, 5. Oktober 2016, 09:54:46 CEST schrieb Stephen Warren:

Quoted 10 lines · Fabian Vogt
Quoted 4 lines

This patch series modifies the used drivers to work with OF_CONTROL and switches the board code and configs to use it.
The added device trees are directly from the linux kernel tree and can thus be used for booting the (upstream) kernel.

Is there a user-visible or developer-visible benefit to this change? In general, converting to use DT to instantiate devices simply ends up using more code (and hence complexity and time) to get to the exact same state afterwards.

There are various reasons, like:

- The device tree describes the platform, so it can also be used by the linux kernel for configuration (no separate dtb needed)
- Properties are not hardcoded in the u-boot code
- Slightly different hardware deviations do not require significant code changes (like #ifdef or even new platdatas), just a new dts and Kconfig adjustments

It's also mentioned in Simon Glass's talk about DM:
https://events.linuxfoundation.org/sites/events/files/slides/Order%20at%20last%20-%20U-Boot%20driver%20model%20slides%20(2).pdf

#30 lore raw

cover Switch bcm283x platform to use OF_CONTROL

+Tom too

Quoted 27 lines · Fabian Vogt

Hi,

Am Mittwoch, 5. Oktober 2016, 09:54:46 CEST schrieb Stephen Warren:

Quoted 10 lines · Fabian Vogt
Quoted 4 lines

This patch series modifies the used drivers to work with OF_CONTROL and switches the board code and configs to use it.
The added device trees are directly from the linux kernel tree and can thus be used for booting the (upstream) kernel.

Is there a user-visible or developer-visible benefit to this change? In general, converting to use DT to instantiate devices simply ends up using more code (and hence complexity and time) to get to the exact same state afterwards.

There are various reasons, like:

- The device tree describes the platform, so it can also be used by the linux kernel for configuration (no separate dtb needed)
- Properties are not hardcoded in the u-boot code
- Slightly different hardware deviations do not require significant code changes (like #ifdef or even new platdatas), just a new dts and Kconfig adjustments

It's also mentioned in Simon Glass's talk about DM:
https://events.linuxfoundation.org/sites/events/files/slides/Order%20at%20last%20-%20U-Boot%20driver%20model%20slides%20(2).pdf

#31 lore raw

cover Switch bcm283x platform to use OF_CONTROL

In reply to Fabian Vogt
Quoted 18 lines

Am 05.10.2016 um 18:48 schrieb Fabian Vogt <[email protected]>:

Hi,

Am Mittwoch, 5. Oktober 2016, 09:54:46 CEST schrieb Stephen Warren:

Quoted 10 lines · Fabian Vogt
Quoted 4 lines

This patch series modifies the used drivers to work with OF_CONTROL and switches the board code and configs to use it.
The added device trees are directly from the linux kernel tree and can thus be used for booting the (upstream) kernel.

Is there a user-visible or developer-visible benefit to this change? In general, converting to use DT to instantiate devices simply ends up using more code (and hence complexity and time) to get to the exact same state afterwards.

Quoted 4 lines

There are various reasons, like:

- The device tree describes the platform, so it can also be used by the linux kernel for configuration (no separate dtb needed)

With a bit of lobbying, we might even be able to get a working dt from the rpi firmware. That again would enable awesome things like hat support in u-boot :).

Alex

#32 lore raw

cover Switch bcm283x platform to use OF_CONTROL

Quoted 16 lines · Alexander Graf
Quoted 16 lines

Am 05.10.2016 um 18:48 schrieb Fabian Vogt <[email protected]>:

Hi,

Am Mittwoch, 5. Oktober 2016, 09:54:46 CEST schrieb Stephen Warren:

Quoted 10 lines · Fabian Vogt
Quoted 4 lines

This patch series modifies the used drivers to work with OF_CONTROL and switches the board code and configs to use it.
The added device trees are directly from the linux kernel tree and can thus be used for booting the (upstream) kernel.

Is there a user-visible or developer-visible benefit to this change? In general, converting to use DT to instantiate devices simply ends up using more code (and hence complexity and time) to get to the exact same state afterwards.

Quoted 8 lines
Quoted 4 lines

There are various reasons, like:

- The device tree describes the platform, so it can also be used by the linux kernel for configuration (no separate dtb needed)

With a bit of lobbying, we might even be able to get a working dt from the rpi firmware. That again would enable awesome things like hat support in u-boot :).

I can't imagine the firmware handing any DT off to the kernel other than the one that's being shipped from whatever kernel is being loaded. Being able to update the DT in lockstep with the kernel is very much part of their process. (This makes linux insisting that DT is ABI that must maintain backwards compat quite painful for upstreaming)

Given that the firmware already hands the kernel's DT back to the
kernel, it seems like we should be able to load the kernel's DT too if
we wanted that.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 800 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20161006/28ff970d/attachment.sig>

#33 lore raw

cover Switch bcm283x platform to use OF_CONTROL

Quoted 33 lines · On Donnerstag, 6. Oktober 2016 12:32:12 CEST Eric Anholt wrote:
Quoted 18 lines · Alexander Graf
Quoted 18 lines

Am 05.10.2016 um 18:48 schrieb Fabian Vogt <[email protected]>:

Hi,

Am Mittwoch, 5. Oktober 2016, 09:54:46 CEST schrieb Stephen Warren:

Quoted 10 lines · Fabian Vogt
Quoted 4 lines

This patch series modifies the used drivers to work with OF_CONTROL and switches the board code and configs to use it.
The added device trees are directly from the linux kernel tree and can thus be used for booting the (upstream) kernel.

Is there a user-visible or developer-visible benefit to this change? In general, converting to use DT to instantiate devices simply ends up using more code (and hence complexity and time) to get to the exact same state afterwards.

There are various reasons, like:

Quoted 7 lines
Quoted 3 lines

- The device tree describes the platform, so it can also be used by the

linux kernel for configuration (no separate dtb needed)

With a bit of lobbying, we might even be able to get a working dt from the rpi firmware. That again would enable awesome things like hat support in u-boot :).

I can't imagine the firmware handing any DT off to the kernel other than the one that's being shipped from whatever kernel is being loaded. Being able to update the DT in lockstep with the kernel is very much part of their process. (This makes linux insisting that DT is ABI that must maintain backwards compat quite painful for upstreaming)

Quoted 3 lines

Given that the firmware already hands the kernel's DT back to the kernel, it seems like we should be able to load the kernel's DT too if we wanted that.

You mean the DT modified by the firmware according to config.txt, at least applying the specified DT overlays?

Kind regards,

Stefan

Signature · 3 lines
Stefan Br?ns  /  Bergstra?e 21  /  52062 Aachen
home: +49 241 53809034     mobile: +49 151 50412019
work: +49 2405 49936-424
#34 lore raw

cover Switch bcm283x platform to use OF_CONTROL

Quoted 34 lines · Stefan Bruens
Quoted 33 lines · On Donnerstag, 6. Oktober 2016 12:32:12 CEST Eric Anholt wrote:
Quoted 18 lines · Alexander Graf
Quoted 18 lines

Am 05.10.2016 um 18:48 schrieb Fabian Vogt <[email protected]>:

Hi,

Am Mittwoch, 5. Oktober 2016, 09:54:46 CEST schrieb Stephen Warren:

Quoted 10 lines · Fabian Vogt
Quoted 4 lines

This patch series modifies the used drivers to work with OF_CONTROL and switches the board code and configs to use it.
The added device trees are directly from the linux kernel tree and can thus be used for booting the (upstream) kernel.

Is there a user-visible or developer-visible benefit to this change? In general, converting to use DT to instantiate devices simply ends up using more code (and hence complexity and time) to get to the exact same state afterwards.

There are various reasons, like:

Quoted 7 lines
Quoted 3 lines

- The device tree describes the platform, so it can also be used by the

linux kernel for configuration (no separate dtb needed)

With a bit of lobbying, we might even be able to get a working dt from the rpi firmware. That again would enable awesome things like hat support in u-boot :).

I can't imagine the firmware handing any DT off to the kernel other than the one that's being shipped from whatever kernel is being loaded. Being able to update the DT in lockstep with the kernel is very much part of their process. (This makes linux insisting that DT is ABI that must maintain backwards compat quite painful for upstreaming)

Quoted 6 lines
Quoted 3 lines

Given that the firmware already hands the kernel's DT back to the kernel, it seems like we should be able to load the kernel's DT too if we wanted that.

You mean the DT modified by the firmware according to config.txt, at least applying the specified DT overlays?

Yeah, that.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 800 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20161006/182a5e16/attachment.sig>

#35 lore raw

cover Switch bcm283x platform to use OF_CONTROL

Quoted 36 lines · Eric Anholt
Quoted 34 lines · Stefan Bruens
Quoted 33 lines · On Donnerstag, 6. Oktober 2016 12:32:12 CEST Eric Anholt wrote:
Quoted 18 lines · Alexander Graf
Quoted 18 lines

Am 05.10.2016 um 18:48 schrieb Fabian Vogt <[email protected]>:

Hi,

Am Mittwoch, 5. Oktober 2016, 09:54:46 CEST schrieb Stephen Warren:

Quoted 10 lines · Fabian Vogt
Quoted 4 lines

This patch series modifies the used drivers to work with OF_CONTROL and switches the board code and configs to use it.
The added device trees are directly from the linux kernel tree and can thus be used for booting the (upstream) kernel.

Is there a user-visible or developer-visible benefit to this change? In general, converting to use DT to instantiate devices simply ends up using more code (and hence complexity and time) to get to the exact same state afterwards.

There are various reasons, like:

Quoted 7 lines
Quoted 3 lines

- The device tree describes the platform, so it can also be used by the

linux kernel for configuration (no separate dtb needed)

With a bit of lobbying, we might even be able to get a working dt from the rpi firmware. That again would enable awesome things like hat support in u-boot :).

I can't imagine the firmware handing any DT off to the kernel other than the one that's being shipped from whatever kernel is being loaded. Being able to update the DT in lockstep with the kernel is very much part of their process. (This makes linux insisting that DT is ABI that must maintain backwards compat quite painful for upstreaming)

Quoted 8 lines
Quoted 6 lines
Quoted 3 lines

Given that the firmware already hands the kernel's DT back to the kernel, it seems like we should be able to load the kernel's DT too if we wanted that.

You mean the DT modified by the firmware according to config.txt, at least applying the specified DT overlays?

Yeah, that.

That would also be a good thing, yes.

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20161007/69ea4530/attachment.sig>
#36 lore raw

cover Switch bcm283x platform to use OF_CONTROL

Quoted 46 lines · On Freitag, 7. Oktober 2016 16:42:40 CEST Tom Rini wrote:
Quoted 45 lines · Eric Anholt
Quoted 44 lines · Stefan Bruens
Quoted 42 lines · On Donnerstag, 6. Oktober 2016 12:32:12 CEST Eric Anholt wrote:
Quoted 24 lines · Alexander Graf
Quoted 24 lines

Am 05.10.2016 um 18:48 schrieb Fabian Vogt <[email protected]>:

Hi,

Am Mittwoch, 5. Oktober 2016, 09:54:46 CEST schrieb Stephen Warren:

Quoted 7 lines · Fabian Vogt
Quoted 5 lines

This patch series modifies the used drivers to work with OF_CONTROL
and switches the board code and configs to use it. The added device trees are directly from the linux kernel tree and can thus be used for booting the (upstream) kernel.

Quoted 6 lines

Is there a user-visible or developer-visible benefit to this change? In
general, converting to use DT to instantiate devices simply ends up using more code (and hence complexity and time) to get to the exact same
state afterwards.

There are various reasons, like:

- The device tree describes the platform, so it can also be used by the

Quoted 6 lines
Quoted 1 line

linux kernel for configuration (no separate dtb needed)

With a bit of lobbying, we might even be able to get a working dt from
the rpi firmware. That again would enable awesome things like hat support in u-boot :).

I can't imagine the firmware handing any DT off to the kernel other than
the one that's being shipped from whatever kernel is being loaded. Being able to update the DT in lockstep with the kernel is very much part of their process. (This makes linux insisting that DT is ABI that must maintain backwards compat quite painful for upstreaming)

Given that the firmware already hands the kernel's DT back to the kernel, it seems like we should be able to load the kernel's DT too if we wanted that.

Quoted 7 lines
Quoted 5 lines
Quoted 3 lines

You mean the DT modified by the firmware according to config.txt, at least
applying the specified DT overlays?

Yeah, that.

That would also be a good thing, yes.

My primary concern here was the bcm2708-rpi-b.dtb vs bcm2835-rpi-b.dtb devicetrees, i.e. the one distributed by the RPi foundation vs the upstream kernel one.

This concern may no longer be valid, https://www.raspberrypi.org/
documentation/configuration/device-tree.md#part3 says:
---
The loader now supports builds using bcm2835_defconfig, which selects the upstreamed BCM2835 support. This configuration will cause bcm2835-rpi-b.dtb and bcm2835-rpi-b-plus.dtb to be built. If these files are copied with the kernel, and if the kernel has been tagged by a recent mkknlimg, then the loader will attempt to load one of those DTBs by default.
---

Open points:
1. is u-boot.bin tagged in an appropriate way (i.e. as done by mkknlimg)?
2. what about the other RPis, i.e. RPi2, RPI3, RPi1-CM?

Kind regards,

Stefan

Signature · 3 lines
Stefan Br?ns  /  Bergstra?e 21  /  52062 Aachen
home: +49 241 53809034     mobile: +49 151 50412019
work: +49 2405 49936-424
#37 lore raw

cover Switch bcm283x platform to use OF_CONTROL

In reply to Fabian Vogt

Hi,

any news on this? As far as I can tell nothing happened after my last reply to this thread, so: Ping!

Thanks,
Fabian

Am Montag, 26. September 2016, 14:26:42 CET schrieben Sie:

Quoted 73 lines

This patch series modifies the used drivers to work with OF_CONTROL and switches the board code and configs to use it.
The added device trees are directly from the linux kernel tree and can thus be used for booting the (upstream) kernel.

Fabian Vogt (9):
gpio: bcm2835: add device tree support
serial: bcm283x_mu: add device tree support
serial: pl01x: expose skip_init platdata option in DT
fdt: add dt-bindings for bcm2835
fdt: import bcm283x device tree sources from the linux kernel tree
fdt: adjust bcm283x device tree for u-boot
serial: bcm283x_mu: support disabling after initialization
board: rpi: move uart deactivation to board_init
ARM: bcm283x: use OF_CONTROL for bcm283x

 arch/arm/Kconfig                                   |   1 +
 arch/arm/dts/Makefile                              |   9 +
 arch/arm/dts/bcm2835-rpi-a-plus.dts                |  35 +++
 arch/arm/dts/bcm2835-rpi-a.dts                     |  28 ++
 arch/arm/dts/bcm2835-rpi-b-plus.dts                |  36 +++
 arch/arm/dts/bcm2835-rpi-b-rev2.dts                |  29 ++
 arch/arm/dts/bcm2835-rpi-b.dts                     |  23 ++
 arch/arm/dts/bcm2835-rpi.dtsi                      |  86 ++++++
 arch/arm/dts/bcm2835.dtsi                          |  25 ++
 arch/arm/dts/bcm2836-rpi-2-b.dts                   |  40 +++
 arch/arm/dts/bcm2836.dtsi                          |  78 +++++
 arch/arm/dts/bcm2837-rpi-3-b.dts                   |  30 ++
 arch/arm/dts/bcm2837.dtsi                          |  76 +++++
 arch/arm/dts/bcm283x-rpi-smsc9512.dtsi             |  19 ++
 arch/arm/dts/bcm283x-rpi-smsc9514.dtsi             |  19 ++
 arch/arm/dts/bcm283x-uboot.dtsi                    |  22 ++
 arch/arm/dts/bcm283x.dtsi                          | 323 +++++++++++++++++++++
 board/raspberrypi/rpi/rpi.c                        |  77 ++---
 configs/rpi_2_defconfig                            |   2 +
 configs/rpi_3_32b_defconfig                        |   2 +
 configs/rpi_3_defconfig                            |   2 +
 configs/rpi_defconfig                              |   2 +
 doc/device-tree-bindings/gpio/bcm2835-gpio.txt     |   5 +
 .../serial/bcm2835-aux-uart.txt                    |  10 +
 doc/device-tree-bindings/serial/pl01x.txt          |   3 +
 drivers/gpio/bcm2835_gpio.c                        |  24 ++
 drivers/serial/serial_bcm283x_mu.c                 |  46 ++-
 drivers/serial/serial_pl01x.c                      |   2 +
 include/configs/rpi.h                              |   1 -
 include/dt-bindings/clock/bcm2835-aux.h            |  17 ++
 include/dt-bindings/clock/bcm2835.h                |  66 +++++
 include/dt-bindings/pinctrl/bcm2835.h              |  27 ++
 include/dt-bindings/power/raspberrypi-power.h      |  41 +++
 33 files changed, 1152 insertions(+), 54 deletions(-)
 create mode 100644 arch/arm/dts/bcm2835-rpi-a-plus.dts
 create mode 100644 arch/arm/dts/bcm2835-rpi-a.dts
 create mode 100644 arch/arm/dts/bcm2835-rpi-b-plus.dts
 create mode 100644 arch/arm/dts/bcm2835-rpi-b-rev2.dts
 create mode 100644 arch/arm/dts/bcm2835-rpi-b.dts
 create mode 100644 arch/arm/dts/bcm2835-rpi.dtsi
 create mode 100644 arch/arm/dts/bcm2835.dtsi
 create mode 100644 arch/arm/dts/bcm2836-rpi-2-b.dts
 create mode 100644 arch/arm/dts/bcm2836.dtsi
 create mode 100644 arch/arm/dts/bcm2837-rpi-3-b.dts
 create mode 100644 arch/arm/dts/bcm2837.dtsi
 create mode 100644 arch/arm/dts/bcm283x-rpi-smsc9512.dtsi
 create mode 100644 arch/arm/dts/bcm283x-rpi-smsc9514.dtsi
 create mode 100644 arch/arm/dts/bcm283x-uboot.dtsi
 create mode 100644 arch/arm/dts/bcm283x.dtsi
 create mode 100644 doc/device-tree-bindings/gpio/bcm2835-gpio.txt
 create mode 100644 doc/device-tree-bindings/serial/bcm2835-aux-uart.txt
 create mode 100644 include/dt-bindings/clock/bcm2835-aux.h
 create mode 100644 include/dt-bindings/clock/bcm2835.h
 create mode 100644 include/dt-bindings/pinctrl/bcm2835.h
 create mode 100644 include/dt-bindings/power/raspberrypi-power.h
#38 lore raw

cover Switch bcm283x platform to use OF_CONTROL

Hi,

Quoted 4 lines · Fabian Vogt

Hi,

any news on this? As far as I can tell nothing happened after my last reply to this thread, so: Ping!

Adding Tom - the patches are assigned to him in Patchwork.

- Simon

Quoted 84 lines

Thanks,
Fabian

Am Montag, 26. September 2016, 14:26:42 CET schrieben Sie:

Quoted 63 lines

This patch series modifies the used drivers to work with OF_CONTROL and switches the board code and configs to use it.
The added device trees are directly from the linux kernel tree and can thus be used for booting the (upstream) kernel.

Fabian Vogt (9):
gpio: bcm2835: add device tree support
serial: bcm283x_mu: add device tree support
serial: pl01x: expose skip_init platdata option in DT
fdt: add dt-bindings for bcm2835
fdt: import bcm283x device tree sources from the linux kernel tree
fdt: adjust bcm283x device tree for u-boot
serial: bcm283x_mu: support disabling after initialization
board: rpi: move uart deactivation to board_init
ARM: bcm283x: use OF_CONTROL for bcm283x

 arch/arm/Kconfig                                   |   1 +
 arch/arm/dts/Makefile                              |   9 +
 arch/arm/dts/bcm2835-rpi-a-plus.dts                |  35 +++
 arch/arm/dts/bcm2835-rpi-a.dts                     |  28 ++
 arch/arm/dts/bcm2835-rpi-b-plus.dts                |  36 +++
 arch/arm/dts/bcm2835-rpi-b-rev2.dts                |  29 ++
 arch/arm/dts/bcm2835-rpi-b.dts                     |  23 ++
 arch/arm/dts/bcm2835-rpi.dtsi                      |  86 ++++++
 arch/arm/dts/bcm2835.dtsi                          |  25 ++
 arch/arm/dts/bcm2836-rpi-2-b.dts                   |  40 +++
 arch/arm/dts/bcm2836.dtsi                          |  78 +++++
 arch/arm/dts/bcm2837-rpi-3-b.dts                   |  30 ++
 arch/arm/dts/bcm2837.dtsi                          |  76 +++++
 arch/arm/dts/bcm283x-rpi-smsc9512.dtsi             |  19 ++
 arch/arm/dts/bcm283x-rpi-smsc9514.dtsi             |  19 ++
 arch/arm/dts/bcm283x-uboot.dtsi                    |  22 ++
 arch/arm/dts/bcm283x.dtsi                          | 323 +++++++++++++++++++++
 board/raspberrypi/rpi/rpi.c                        |  77 ++---
 configs/rpi_2_defconfig                            |   2 +
 configs/rpi_3_32b_defconfig                        |   2 +
 configs/rpi_3_defconfig                            |   2 +
 configs/rpi_defconfig                              |   2 +
 doc/device-tree-bindings/gpio/bcm2835-gpio.txt     |   5 +
 .../serial/bcm2835-aux-uart.txt                    |  10 +
 doc/device-tree-bindings/serial/pl01x.txt          |   3 +
 drivers/gpio/bcm2835_gpio.c                        |  24 ++
 drivers/serial/serial_bcm283x_mu.c                 |  46 ++-
 drivers/serial/serial_pl01x.c                      |   2 +
 include/configs/rpi.h                              |   1 -
 include/dt-bindings/clock/bcm2835-aux.h            |  17 ++
 include/dt-bindings/clock/bcm2835.h                |  66 +++++
 include/dt-bindings/pinctrl/bcm2835.h              |  27 ++
 include/dt-bindings/power/raspberrypi-power.h      |  41 +++
 33 files changed, 1152 insertions(+), 54 deletions(-)
 create mode 100644 arch/arm/dts/bcm2835-rpi-a-plus.dts
 create mode 100644 arch/arm/dts/bcm2835-rpi-a.dts
 create mode 100644 arch/arm/dts/bcm2835-rpi-b-plus.dts
 create mode 100644 arch/arm/dts/bcm2835-rpi-b-rev2.dts
 create mode 100644 arch/arm/dts/bcm2835-rpi-b.dts
 create mode 100644 arch/arm/dts/bcm2835-rpi.dtsi
 create mode 100644 arch/arm/dts/bcm2835.dtsi
 create mode 100644 arch/arm/dts/bcm2836-rpi-2-b.dts
 create mode 100644 arch/arm/dts/bcm2836.dtsi
 create mode 100644 arch/arm/dts/bcm2837-rpi-3-b.dts
 create mode 100644 arch/arm/dts/bcm2837.dtsi
 create mode 100644 arch/arm/dts/bcm283x-rpi-smsc9512.dtsi
 create mode 100644 arch/arm/dts/bcm283x-rpi-smsc9514.dtsi
Quoted 10 lines
 create mode 100644 arch/arm/dts/bcm283x-uboot.dtsi
 create mode 100644 arch/arm/dts/bcm283x.dtsi
 create mode 100644 doc/device-tree-bindings/gpio/bcm2835-gpio.txt
 create mode 100644 doc/device-tree-bindings/serial/bcm2835-aux-uart.txt
 create mode 100644 include/dt-bindings/clock/bcm2835-aux.h
 create mode 100644 include/dt-bindings/clock/bcm2835.h
 create mode 100644 include/dt-bindings/pinctrl/bcm2835.h
 create mode 100644 include/dt-bindings/power/raspberrypi-power.h

_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot