[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