From 57c7525e508d08d78bce640f605ffe6dd9557ae7 Mon Sep 17 00:00:00 2001 From: Sonic Zhang Date: Sat, 16 Oct 2010 18:22:34 -0400 Subject: [PATCH] --- yaml --- r: 213526 b: refs/heads/master c: 0dd25df1a4e63c078f357aaffb09789c9438378f h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/serial/bfin_sport_uart.c | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 80f5472c2ba6..31014c5bb5d0 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: af7f3743567e3d5b40e2f9c21541b7f40b99c103 +refs/heads/master: 0dd25df1a4e63c078f357aaffb09789c9438378f diff --git a/trunk/drivers/serial/bfin_sport_uart.c b/trunk/drivers/serial/bfin_sport_uart.c index 5318dd3774ae..6f1b51e231e4 100644 --- a/trunk/drivers/serial/bfin_sport_uart.c +++ b/trunk/drivers/serial/bfin_sport_uart.c @@ -131,7 +131,12 @@ static int sport_uart_setup(struct sport_uart_port *up, int size, int baud_rate) pr_debug("%s RCR1:%x, RCR2:%x\n", __func__, SPORT_GET_RCR1(up), SPORT_GET_RCR2(up)); tclkdiv = sclk / (2 * baud_rate) - 1; - rclkdiv = sclk / (2 * baud_rate * 2) - 1; + /* The actual uart baud rate of devices vary between +/-2%. The sport + * RX sample rate should be faster than the double of the worst case, + * otherwise, wrong data are received. So, set sport RX clock to be + * 3% faster. + */ + rclkdiv = sclk / (2 * baud_rate * 2 * 97 / 100) - 1; SPORT_PUT_TCLKDIV(up, tclkdiv); SPORT_PUT_RCLKDIV(up, rclkdiv); SSYNC();