From 1628cfc4fe4b2c3caa7e9d5622f0665c54e8ba6e Mon Sep 17 00:00:00 2001 From: Minkyu Kang Date: Tue, 28 Sep 2010 14:35:02 +0900 Subject: [PATCH] ARMV7: S5P: serial: support the s5pc210 This patch is for s5pc210 support. Due to the resigter of baudrate is changed from slot to value, add both of them to uart structure. Signed-off-by: Minkyu Kang Signed-off-by: Kyungmin Park --- arch/arm/include/asm/arch-s5pc1xx/uart.h | 14 +++++++++++--- drivers/serial/serial_s5p.c | 6 +++++- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/arch/arm/include/asm/arch-s5pc1xx/uart.h b/arch/arm/include/asm/arch-s5pc1xx/uart.h index 2d7ad7ec98..f6eeab45cd 100644 --- a/arch/arm/include/asm/arch-s5pc1xx/uart.h +++ b/arch/arm/include/asm/arch-s5pc1xx/uart.h @@ -24,6 +24,12 @@ #define __ASM_ARCH_UART_H_ #ifndef __ASSEMBLY__ +/* baudrate rest value */ +union br_rest { + unsigned short slot; /* udivslot */ + unsigned char value; /* ufracval */ +}; + struct s5p_uart { unsigned int ulcon; unsigned int ucon; @@ -38,10 +44,12 @@ struct s5p_uart { unsigned char urxh; unsigned char res2[3]; unsigned int ubrdiv; - unsigned short udivslot; - unsigned char res3[2]; - unsigned char res4[0x3d0]; + union br_rest rest; + unsigned char res3[0x3d0]; }; + +static int use_divslot = 1; + #endif /* __ASSEMBLY__ */ #endif diff --git a/drivers/serial/serial_s5p.c b/drivers/serial/serial_s5p.c index 77096643f1..36333c3d49 100644 --- a/drivers/serial/serial_s5p.c +++ b/drivers/serial/serial_s5p.c @@ -70,7 +70,11 @@ void serial_setbrg_dev(const int dev_index) val = uclk / baudrate; writel(val / 16 - 1, &uart->ubrdiv); - writew(udivslot[val % 16], &uart->udivslot); + + if (use_divslot) + writew(udivslot[val % 16], &uart->rest.slot); + else + writeb(val % 16, &uart->rest.value); } /* -- 2.25.1