[U-Boot] [PATCH] bug fix and cleanup for s3c44b0 serial driver
Minkyu Kang
promsoft at gmail.com
Tue Aug 10 07:48:03 CEST 2010
Dear Brian Cavagnolo,
On 30 June 2010 01:58, Brian Cavagnolo <brian at cozybit.com> wrote:
> Specifically, don't dereference the URXH0 register twice; calculate the BRD
> based on the formula in the databook instead of using a messy switch statement;
> and migrate the BRD calculation to the hardware hardware header because it's
hardware hardware..? is it typo?
> board specific.
>
> Signed-off-by: Brian Cavagnolo <brian at cozybit.com>
> ---
> arch/arm/include/asm/arch-s3c44b0/hardware.h | 3 +-
> drivers/serial/serial_s3c44b0.c | 65 +-------------------------
> 2 files changed, 4 insertions(+), 64 deletions(-)
>
> diff --git a/arch/arm/include/asm/arch-s3c44b0/hardware.h b/arch/arm/include/asm/arch-s3c44b0/hardware.h
> index 146e265..38ff32c 100644
> --- a/arch/arm/include/asm/arch-s3c44b0/hardware.h
> +++ b/arch/arm/include/asm/arch-s3c44b0/hardware.h
> @@ -11,7 +11,8 @@
> #define REGL(addr) (*(volatile unsigned int *)(REGBASE+addr))
> #define REGW(addr) (*(volatile unsigned short *)(REGBASE+addr))
> #define REGB(addr) (*(volatile unsigned char *)(REGBASE+addr))
> -
> +#define BRD(bps) (DIV_ROUND(CONFIG_S3C44B0_CLOCK_SPEED * 1000000, \
> + (bps)*16) - 1)
no need brace and please add the space around the operator.
bps * 16) - 1)
>
> /*****************************/
> /* CPU Wrapper Registers */
> diff --git a/drivers/serial/serial_s3c44b0.c b/drivers/serial/serial_s3c44b0.c
> index 95d0266..e6c535c 100644
> --- a/drivers/serial/serial_s3c44b0.c
> +++ b/drivers/serial/serial_s3c44b0.c
> @@ -48,7 +48,7 @@ static int serial_flush_input(void)
>
> /* keep on reading as long as the receiver is not empty */
> while(UTRSTAT0&0x01) {
Space required before the open parenthesis '('.
Could you please run checkpatch and make clean-up patch for this file?
> - tmp = REGB(URXH0);
> + tmp = URXH0;
> }
>
> return 0;
> @@ -70,68 +70,7 @@ static int serial_flush_output(void)
>
> void serial_setbrg (void)
> {
> - u32 divisor = 0;
> -
> - /* get correct divisor */
> - switch(gd->baudrate) {
> -
> - case 1200:
> -#if CONFIG_S3C44B0_CLOCK_SPEED==66
> - divisor = 3124;
> -#elif CONFIG_S3C44B0_CLOCK_SPEED==75
> - divisor = 3905;
> -#else
> -# error CONFIG_S3C44B0_CLOCK_SPEED undefined
> -#endif
> - break;
> -
> - case 9600:
> -#if CONFIG_S3C44B0_CLOCK_SPEED==66
> - divisor = 390;
> -#elif CONFIG_S3C44B0_CLOCK_SPEED==75
> - divisor = 487;
> -#else
> -# error CONFIG_S3C44B0_CLOCK_SPEED undefined
> -#endif
> - break;
> -
> - case 19200:
> -#if CONFIG_S3C44B0_CLOCK_SPEED==66
> - divisor = 194;
> -#elif CONFIG_S3C44B0_CLOCK_SPEED==75
> - divisor = 243;
> -#else
> -# error CONFIG_S3C44B0_CLOCK_SPEED undefined
> -#endif
> - break;
> -
> - case 38400:
> -#if CONFIG_S3C44B0_CLOCK_SPEED==66
> - divisor = 97;
> -#elif CONFIG_S3C44B0_CLOCK_SPEED==75
> - divisor = 121;
> -#else
> -# error CONFIG_S3C44B0_CLOCK_SPEED undefined
> -#endif /* break; */
> -
> - case 57600:
> -#if CONFIG_S3C44B0_CLOCK_SPEED==66
> - divisor = 64;
> -#elif CONFIG_S3C44B0_CLOCK_SPEED==75
> - divisor = 80;
> -#else
> -# error CONFIG_S3C44B0_CLOCK_SPEED undefined
> -#endif /* break; */
> -
> - case 115200:
> -#if CONFIG_S3C44B0_CLOCK_SPEED==66
> - divisor = 32;
> -#elif CONFIG_S3C44B0_CLOCK_SPEED==75
> - divisor = 40;
> -#else
> -# error CONFIG_S3C44B0_CLOCK_SPEED undefined
> -#endif /* break; */
> - }
> + u32 divisor = BRD(gd->baudrate);
>
> serial_flush_output();
> serial_flush_input();
> --
> 1.6.0.4
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
>
Thanks
Minkyu Kang.
--
from. prom.
www.promsoft.net
More information about the U-Boot
mailing list