diff options
author | Minkyu Kang <mk7.kang@samsung.com> | 2010-09-28 14:35:02 +0900 |
---|---|---|
committer | Minkyu Kang <mk7.kang@samsung.com> | 2010-10-19 11:35:29 +0900 |
commit | 1628cfc4fe4b2c3caa7e9d5622f0665c54e8ba6e (patch) | |
tree | ab110be7f4e8e532e1b44f878b7a59c6aaaa9750 | |
parent | 1727e216987a2d4e3e220f8c09e4bb54a611d21e (diff) | |
download | u-boot-imx-1628cfc4fe4b2c3caa7e9d5622f0665c54e8ba6e.zip u-boot-imx-1628cfc4fe4b2c3caa7e9d5622f0665c54e8ba6e.tar.gz u-boot-imx-1628cfc4fe4b2c3caa7e9d5622f0665c54e8ba6e.tar.bz2 |
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 <mk7.kang@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
-rw-r--r-- | arch/arm/include/asm/arch-s5pc1xx/uart.h | 14 | ||||
-rw-r--r-- | 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 2d7ad7e..f6eeab4 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 7709664..36333c3 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); } /* |