[U-Boot] [PATCH 3/7] S3C24XX: Add serial driver
José Miguel Gonçalves
jose.goncalves at inov.pt
Thu Sep 13 11:30:23 CEST 2012
Hi Marek,
On 09/13/2012 10:17 AM, Marek Vasut wrote:
> 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.
OK, I will figure out the best way to do this. If I have any doubts I'll
be back to you...
Best regards,
José Gonçalves
More information about the U-Boot
mailing list