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

Stephen Warren swarren at wwwdotorg.org
Thu Dec 3 23:55:44 CET 2015


On 12/03/2015 02:43 PM, Simon Glass wrote:
> Hi Stephen,
>
> On 3 December 2015 at 14:33, Stephen Warren <swarren at wwwdotorg.org> wrote:
>> On 11/22/2015 08:53 AM, Tom Rini wrote:
>>>
>>> On Thu, Nov 19, 2015 at 09:48:11PM +0800, Thomas Chou wrote:
>>>
>>>> Unify serial_tegra, and use the generic binding.
>>>>
>>>> Signed-off-by: Thomas Chou <thomas at wytron.com.tw>
>>>> Reviewed-by: Tom Rini <trini at konsulko.com>
>>>> Acked-by: Simon Glass <sjg at chromium.org>
>>>
>>>
>>> Applied to u-boot/master, thanks!
>>
>>
>> FYI, this patch causes at least Jetson TK1 to immediately reset at boot
>> time. I imagine this affects all Tegra boards, at least those that use SPL
>> or those that are ARMv7; my p2371-2180 Jetson TX1 ARMv8 board which doesn't
>> use SPL seems to still work.
>>
>> I guess I'll see if I can pin-point the problem, unless you can spot an
>> obvious typo or something like that.
>>
>> Reported-by: Kevin Hilman <khilman at linaro.org>
>> (Bisected by me)
>
> Unfortunately I didn't test this patch.
>
> Things to check:
> - for SPL, that the platform data is available somewhere
> - clock-frequency and reg-shift are in the device tree

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

  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,
  };
  #endif /* CONFIG_DM_SERIAL */




More information about the U-Boot mailing list