[U-Boot] [PATCH] poplar: fix boot failure caused by serial driver change
Igor Opaniuk
igor.opaniuk at linaro.org
Wed Dec 12 08:24:19 UTC 2018
Hi Shawn,
Thanks, that fixes the problem!
Reviewed-by: Igor Opaniuk <igor.opaniuk at linaro.org>
Tested-by: Igor Opaniuk <igor.opaniuk at linaro.org>
On Wed, 12 Dec 2018 at 09:25, Shawn Guo <shawn.guo at linaro.org> wrote:
>
> 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
>
--
Regards,
Igor Opaniuk
More information about the U-Boot
mailing list