summaryrefslogtreecommitdiff
path: root/drivers/char/isicom.c
diff options
context:
space:
mode:
authorJiri Slaby <jirislaby@gmail.com>2007-02-10 01:44:54 -0800
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-02-11 10:51:26 -0800
commit7edc136ab688f751037a86e8a051151d7962d33f (patch)
treea2cb492af3947610efb2abedd4df259f97a34664 /drivers/char/isicom.c
parentcb4a10ccb0c5b5b02dec1a4a97cba1e8b2c2a325 (diff)
downloadlinux-3.10-7edc136ab688f751037a86e8a051151d7962d33f.tar.gz
linux-3.10-7edc136ab688f751037a86e8a051151d7962d33f.tar.bz2
linux-3.10-7edc136ab688f751037a86e8a051151d7962d33f.zip
[PATCH] Char: isicom, support higher rates
Add support for higher baud rates (coming from original isi driver). Signed-off-by: Jiri Slaby <jirislaby@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/char/isicom.c')
-rw-r--r--drivers/char/isicom.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/char/isicom.c b/drivers/char/isicom.c
index eddb8d3a620..07bc4a5cb1e 100644
--- a/drivers/char/isicom.c
+++ b/drivers/char/isicom.c
@@ -183,7 +183,7 @@ static DEFINE_TIMER(tx, isicom_tx, 0, 0);
/* baud index mappings from linux defns to isi */
static signed char linuxb_to_isib[] = {
- -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 13, 15, 16, 17, 18, 19
+ -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 13, 15, 16, 17, 18, 19, 20, 21
};
struct isi_board {
@@ -710,7 +710,8 @@ static void isicom_config_port(struct isi_port *port)
* respectively.
*/
- if (baud < 1 || baud > 2)
+ /* 1,2,3,4 => 57.6, 115.2, 230, 460 kbps resp. */
+ if (baud < 1 || baud > 4)
port->tty->termios->c_cflag &= ~CBAUDEX;
else
baud += 15;
@@ -726,6 +727,10 @@ static void isicom_config_port(struct isi_port *port)
baud++; /* 57.6 Kbps */
if ((port->flags & ASYNC_SPD_MASK) == ASYNC_SPD_VHI)
baud +=2; /* 115 Kbps */
+ if ((port->flags & ASYNC_SPD_MASK) == ASYNC_SPD_SHI)
+ baud += 3; /* 230 kbps*/
+ if ((port->flags & ASYNC_SPD_MASK) == ASYNC_SPD_WARP)
+ baud += 4; /* 460 kbps*/
}
if (linuxb_to_isib[baud] == -1) {
/* hang up */