FreeCalypso > hg > freecalypso-sw
diff doc/linux-2.6.37.6-ftdi_sio.c.patch @ 962:f4da3071dd61
doc/High-speed-serial write-up and Linux kernel patch added
author | Mychaela Falconia <falcon@ivan.Harhan.ORG> |
---|---|
date | Fri, 06 Nov 2015 21:46:05 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/linux-2.6.37.6-ftdi_sio.c.patch Fri Nov 06 21:46:05 2015 +0000 @@ -0,0 +1,29 @@ +--- ftdi_sio.c.orig 2011-03-27 11:01:41.000000000 -0800 ++++ ftdi_sio.c 2015-10-30 13:18:40.879000032 -0800 +@@ -949,7 +949,7 @@ + static const unsigned char divfrac[8] = { 0, 3, 2, 4, 1, 5, 6, 7 }; + __u32 divisor; + /* divisor shifted 3 bits to the left */ +- int divisor3 = base / 2 / baud; ++ int divisor3 = (base / 2 + baud / 2) / baud; + divisor = divisor3 >> 3; + divisor |= (__u32)divfrac[divisor3 & 0x7] << 14; + /* Deal with special cases for highest baud rates. */ +@@ -1087,6 +1087,17 @@ + baud = tty_get_baud_rate(tty); + dbg("%s - tty_get_baud_rate reports speed %d", __func__, baud); + ++ /* ++ * FreeCalypso hack: translate non-std high ++ * baud rates for GSM like CP2102 does. ++ */ ++ if (baud == 230400) ++ baud = 203125; ++ else if (baud == 460800) ++ baud = 406250; ++ else if (baud == 921600) ++ baud = 812500; ++ + /* 2. Observe async-compatible custom_divisor hack, update baudrate + if needed */ +