[U-Boot] [PATCH 3/7] S3C24XX: Add serial driver
Marek Vasut
marex at denx.de
Thu Sep 13 11:17:51 CEST 2012
Dear José Miguel Gonçalves,
> Hi Marek,
>
> On 09/12/2012 10:01 PM, Marek Vasut wrote:
> > Dear José Miguel Gonçalves,
> >
> >> Serial driver for the S3C24XX SoCs.
> >>
> >> Signed-off-by: José Miguel Gonçalves <jose.goncalves at inov.pt>
> >> ---
> >>
> >> drivers/serial/Makefile | 1 +
> >> drivers/serial/s3c24xx_serial.c | 146
> >>
> >> +++++++++++++++++++++++++++++++++++++++ 2 files changed, 147
> >> insertions(+)
> >>
> >> create mode 100644 drivers/serial/s3c24xx_serial.c
> >>
> >> diff --git a/drivers/serial/Makefile b/drivers/serial/Makefile
> >> index 65d0f23..2cbdaac 100644
> >> --- a/drivers/serial/Makefile
> >> +++ b/drivers/serial/Makefile
> >> @@ -52,6 +52,7 @@ COBJS-$(CONFIG_PL011_SERIAL) += serial_pl01x.o
> >>
> >> COBJS-$(CONFIG_PXA_SERIAL) += serial_pxa.o
> >> COBJS-$(CONFIG_SA1100_SERIAL) += serial_sa1100.o
> >> COBJS-$(CONFIG_S3C24X0_SERIAL) += serial_s3c24x0.o
> >>
> >> +COBJS-$(CONFIG_S3C24XX_SERIAL) += s3c24xx_serial.o
> >
> > What's the difference between those two drivers ?!
>
> No substantial differences exists. The UART controller block is the same
> in all S3C24XX chips. One difference is the number of UARTs. The more
> recent chips (S3C2416 & S3C2450) have 4 instead of the 3 found on the
> old ones. Besides that, the driver that I submitted uses a more precise
> method for baudrate generation.
So we will have two drivers for the same hardware? No way ... Use the original
one and apply incremental patches onto it to improve it.
> >> +
> >> +#ifdef CONFIG_SERIAL0
> >> +#define UART_NR S3C24XX_UART0
> >> +
> >> +#elif defined(CONFIG_SERIAL1)
> >> +#define UART_NR S3C24XX_UART1
> >> +
> >> +#elif defined(CONFIG_SERIAL2)
> >> +#define UART_NR S3C24XX_UART2
> >> +
> >> +#elif defined(CONFIG_SERIAL3)
> >> +#define UART_NR S3C24XX_UART3
> >> +
> >> +#else
> >> +#error "Bad: you didn't configure serial ..."
> >
> > Error itself is "Bad:" so remove it
>
> OK.
>
> >> +#endif
> >> +
> >> +#define barrier() asm volatile("" ::: "memory")
> >
> > Is that even used ?
>
> Yes. Without it the GCC optimization removes the loop at the end of the
> baurate generation routine.
So it's yet another accessor issue.
[...]
But anyway, there's more. I'd like to teach you how to do things properly. So
let's focus on the in-tree driver and fix that one. Incrementally and in small
steps.
Best regards,
Marek Vasut
More information about the U-Boot
mailing list