diff options
| -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 2d7ad7ec9..f6eeab45c 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 77096643f..36333c3d4 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);  }  /* |