[U-Boot] [PATCH] poplar: fix boot failure caused by serial driver change

Shawn Guo shawn.guo at linaro.org
Wed Dec 12 07:24:44 UTC 2018


Commit 4687919684e0 ("serial: Remove DM_FLAG_PRE_RELOC flag in various
drivers") essentially drops flag DM_FLAG_PRE_RELOC from serial_pl01x
driver for Poplar platform, because the platform falls into the
following strategy category made by the commit.

  Surround DM_FLAG_PRE_RELOC flag with OF_CONTROL check, for
  drivers that support both statically declared devices and
  configuration from device tree

Before the commit lands, Poplar platform works by statically declaring
pl011 serial device via U_BOOT_DEVICE() with DM_FLAG_PRE_RELOC flag set
in the driver.  But since Poplar also supports device configuration from
device tree, the commit practically drops the flag for Poplar, and hence
breaks the platform from booting.

This patch changes platform code and device tree to initiate pl011
serial device from device tree rather than static declaration, so that
above strategy about DM_FLAG_PRE_RELOC applies to Poplar, and therefore
the reported boot failure gets fixed.

Reported-by: Igor Opaniuk <igor.opaniuk at linaro.org>
Fixes: 4687919684e0 ("serial: Remove DM_FLAG_PRE_RELOC flag in various drivers")
Cc: Bin Meng <bmeng.cn at gmail.com>
Cc: Simon Glass <sjg at chromium.org>
Signed-off-by: Shawn Guo <shawn.guo at linaro.org>
---
 arch/arm/dts/hi3798cv200-u-boot.dtsi | 10 ++--------
 board/hisilicon/poplar/poplar.c      |  2 ++
 2 files changed, 4 insertions(+), 8 deletions(-)

diff --git a/arch/arm/dts/hi3798cv200-u-boot.dtsi b/arch/arm/dts/hi3798cv200-u-boot.dtsi
index 709ae1cbc9f3..7844c5208c5d 100644
--- a/arch/arm/dts/hi3798cv200-u-boot.dtsi
+++ b/arch/arm/dts/hi3798cv200-u-boot.dtsi
@@ -17,12 +17,6 @@
 };
 
 &uart0 {
-	status = "disabled";
+	clock = <75000000>;
+	status = "okay";
 };
-
-/{
-	chosen {
-		stdout-path = "";
-	};
-};
-
diff --git a/board/hisilicon/poplar/poplar.c b/board/hisilicon/poplar/poplar.c
index 9e8eac78388b..8adc750962a1 100644
--- a/board/hisilicon/poplar/poplar.c
+++ b/board/hisilicon/poplar/poplar.c
@@ -35,6 +35,7 @@ static struct mm_region poplar_mem_map[] = {
 
 struct mm_region *mem_map = poplar_mem_map;
 
+#if !CONFIG_IS_ENABLED(OF_CONTROL)
 static const struct pl01x_serial_platdata serial_platdata = {
 	.base = REG_BASE_UART0,
 	.type = TYPE_PL010,
@@ -45,6 +46,7 @@ U_BOOT_DEVICE(poplar_serial) = {
 	.name = "serial_pl01x",
 	.platdata = &serial_platdata,
 };
+#endif
 
 int checkboard(void)
 {
-- 
2.18.0



More information about the U-Boot mailing list