[U-Boot] [PATCH V2] ppc4xx: Fix UART baudrate setup by FDT

Matthias Fuchs matthias.fuchs at esd-electronics.com
Mon Jan 5 21:10:10 CET 2009


> Hi Matthias,
> 
> On Friday 02 January 2009, Matthias Fuchs wrote:
> > On ppc4xx platforms __ft_board_setup updates clock-frequency
> > properties of all ns16550 compatible UARTs. This is not a good
> > idea when those UARTs are external discrete UARTs that are
> > not clocked by some internal clocks. So any external clock value
> > in the DTB is overwritten and those UARTs will not be setup correctly
> > by the Linux kernel.
> >
> > This patch uses the approach from fdt_fixup_ethernet(). Only UART nodes
> > that have a serial* alias are updated.
> 
> Wouldn't it be "better" to check if an external UART clock is configured via 
> CONFIG_SYS_EXT_SERIAL_CLOCK and just use it instead of the calculated 
> internal clock value in this case?
CONFIG_SYS_EXT_SERIAL_CLOCK is already used to tell U-Boot, that the internal
UARTs are clocked by some externally provides clock. In my special case, I have external
UART chips connected to a 405EP. Even defining CONFIG_SYS_EXT_SERIAL_CLOCK will
bring up an error - the 405EP does not support external UART clock. 
So this special macro should not be used. 
On our board (PLU405) there is no reason to touch the external UARTs from
U-Boot. So I think the best way would be to leave their fdt description untouched. 
And the correct clock comes from the device tree.

So which UART's clock would you prefer to be setup to CONFIG_SYS_EXT_SERIAL_CLOCK?
All non-alias'd?

(In reality my UARTs are ns16850 compatible. When I put that into the DT,
U-Boot does not touch them, but the Linux kernel's drivers/serial/of_serial.c
does not handle them. Independant from this I posted a patch to extend of_serial.c
for ns16850 to the linux-serial mailing list.)

So the very best way would be to let U-Boot detect internal UARTs. We could do that
by adding an additional compatible value to the internal UART nodes:

                  UART0: serial at ef600300 {
                                device_type = "serial";
                                compatible = "ns16550", "ibm,uart";
                                ...

Any other ideas?
 
> BTW: This patch version is not ppc4xx specific as it touches the common 
> fdt_support.c. So you would need to split this patch if we decide to go your 
> way.
I will do so when we decided which way to go.

Matthias

> 
> Best regards,
> Stefan


More information about the U-Boot mailing list