[U-Boot] [U-Boot,v3,09/13] ns16550: unify serial_tegra

Thomas Chou
2015-12-04T13:59:22Z

Hi Stephen,

On 2015?12?04? 06:55, Stephen Warren wrote:
> The patch below appears to solve the problem. Any ideas how to fix this
> cleanly? I don't think we want to introduce a CONFIG_SPL_xxx for every
> CONFIG_xxx, yet CONFIG_IS_ENABLED() (e.g. used around
> arch/arm/mach-tegra/board.c's U_BOOT_DEVICE(ns16550_com1) definition)
> seems to require this.
>
> Unfortunately, the patch doesn't revert cleanly, or at least would
> require other more recent patches to be reverted first.
>
> Also, while debugging this I found that U-Boot force-probes any device
> referenced by /chosen/stdout-path even if the DT node is disabled; yet
> more fundamental incorrect DT processing:-( That's why the patch below
> only affects SPL. More fixes to actually enable the serial port in DT
> should be required.
>
> diff --git a/arch/arm/mach-tegra/Kconfig b/arch/arm/mach-tegra/Kconfig
> index fbfb204e6ec8..15609e7dc773 100644
> --- a/arch/arm/mach-tegra/Kconfig
> +++ b/arch/arm/mach-tegra/Kconfig
> @@ -1,5 +1,8 @@
> if TEGRA
>
> +config SPL_DM_SERIAL
> + bool "Fix build"
> +
> config TEGRA_COMMON
> bool "Tegra common options"
> select DM
> @@ -12,6 +15,7 @@ config TEGRA_COMMON
> select DM_SPI
> select DM_SPI_FLASH
> select OF_CONTROL
> + select SPL_DM_SERIAL
>

But all serial drivers should be converted to driver model by the end of
Jan, 2016. The DM_SERIAL should be removed then.

As SPL might not use OF_CONTROL. We might need better logic in tegra
board.c like,
SPL_BUILD ? SPL_OF_CONTROL : OF_CONTROL

> config TEGRA_ARMV7_COMMON
> bool "Tegra 32-bit common options"
> diff --git a/drivers/serial/ns16550.c b/drivers/serial/ns16550.c
> index 166deabcd436..256c7eafd76e 100644
> --- a/drivers/serial/ns16550.c
> +++ b/drivers/serial/ns16550.c
> @@ -451,5 +451,6 @@ U_BOOT_DRIVER(ns16550_serial) = {
> .priv_auto_alloc_size = sizeof(struct NS16550),
> .probe = ns16550_serial_probe,
> .ops = &ns16550_serial_ops,
> + .flags = DM_FLAG_PRE_RELOC,

Yes, this pre-reloc flag should be added.

> };
> #endif /* CONFIG_DM_SERIAL */
>

Best regards,
Thomas