[U-Boot] ns16550: tegra: Specify debugging serial port at boot.

Stephen Warren swarren at wwwdotorg.org
Thu Mar 8 22:43:49 CET 2012


On 03/08/2012 02:29 PM, Wolfgang Denk wrote:
> Dear Stephen,
> 
> In message <4F590B25.8090503 at wwwdotorg.org> you wrote:
>>
>>> I don't like to see such highly architecture specific stuff in common
>>> code, especially if it's such a dirty hack like this.
>>
>> Are there any hooks where we can do the same thing in SoC-specific code?
> 
> Not without additional trickery, but I think this is actually a good
> thing.
> 
> The method implemented here is but a dirty hack, and should not be
> used.
> 
>> The point of this information is to enable the kernel's earlyprintk
>> support, which runs well before the device tree, or other mechanisms,
>> are available.
> 
> Sorry, but I don't buy that this is the only possible way to do that.
> Or how comes only tegra2 would need that, while all other SoCs and
> architectures can do without it?

First, OMAP does something very similar; the kernel low-level debug code
looks at UART1's scratch pad register, and derives which UART to use
based on the value stored there. If none of the expected values is
found, it appears to default to UART1.

On Tegra, the UART registers can't be read unless the UART is clocked
and not in reset. So, the Tegra code looks at each UART in the system,
and finds one that's in that state. To cater for the scenario where
multiple UARTs are clocked-and-not-reset, the code also checks whether
the UART scratch register contains 'D' ("D"ebug) so it's sure it picked
the correct one.

So, at leasst OMAP has set precedent here. There may be others; I didn't
check.

Some other SoCs may have only 1 UART and not need to auto-select.

Some other SoCs with multiple UARTs may designate a single specific UART
as the debug port rather than the board designer apparently randomly
picking which one to use. In either of those cases, the kernel's
low-level debug code can simply hard-code the UART address and do
without the hand-shaking.


More information about the U-Boot mailing list