
20 Apr
2008
20 Apr
'08
8:36 a.m.
In message 1207721182-29697-1-git-send-email-vapier@gentoo.org you wrote:
We should use the algorithm in the Linux kernel so that the UART divisor calculation is more accurate. It also fixes problems on some picky UARTs that have sampling anomalies.
Signed-off-by: Mike Frysinger vapier@gentoo.org
cpu/blackfin/serial.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/cpu/blackfin/serial.h b/cpu/blackfin/serial.h index 1f0f4b4..d268da5 100644 --- a/cpu/blackfin/serial.h +++ b/cpu/blackfin/serial.h @@ -179,7 +179,7 @@ static inline void serial_early_set_baud(uint32_t baud) * The +1 is to make sure we over sample just a little
^^^^^^^^^^^^^^^^^^^
Fix!
* rather than under sample the incoming signals. */
- uint16_t divisor = (get_sclk() / (baud * 16)) + 1;
- uint16_t divisor = (get_sclk() + (baud * 8)) / (baud * 16);
Please make sure to adjust the comment, as there is no "+1" any more in the new code.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de
I am pleased to see that we have differences. May we together become
greater than the sum of both of us.
-- Surak of Vulcan, "The Savage Curtain", stardate 5906.4