diff options
author | Alan Cox <alan@linux.intel.com> | 2010-09-16 13:21:52 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-10-22 13:20:05 -0400 |
commit | 0587102cf9f427c185bfdeb2cef41e13ee0264b1 (patch) | |
tree | 94c6dcc7ac230dee166d2f6aa1f9a54bffe5764b /drivers/serial/68360serial.c | |
parent | 0bca1b913affbd7e2fdaffee62a499659a466eb5 (diff) |
tty: icount changeover for other main devices
Again basically cut and paste
Convert the main driver set to use the hooks for GICOUNT
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/serial/68360serial.c')
-rw-r--r-- | drivers/serial/68360serial.c | 51 |
1 files changed, 25 insertions, 26 deletions
diff --git a/drivers/serial/68360serial.c b/drivers/serial/68360serial.c index 0dff3bbddc8b..88b13356ec10 100644 --- a/drivers/serial/68360serial.c +++ b/drivers/serial/68360serial.c | |||
@@ -1381,6 +1381,30 @@ static void send_break(ser_info_t *info, unsigned int duration) | |||
1381 | } | 1381 | } |
1382 | 1382 | ||
1383 | 1383 | ||
1384 | /* | ||
1385 | * Get counter of input serial line interrupts (DCD,RI,DSR,CTS) | ||
1386 | * Return: write counters to the user passed counter struct | ||
1387 | * NB: both 1->0 and 0->1 transitions are counted except for | ||
1388 | * RI where only 0->1 is counted. | ||
1389 | */ | ||
1390 | static int rs_360_get_icount(struct tty_struct *tty, | ||
1391 | struct serial_icounter_struct *icount) | ||
1392 | { | ||
1393 | ser_info_t *info = (ser_info_t *)tty->driver_data; | ||
1394 | struct async_icount cnow; | ||
1395 | |||
1396 | local_irq_disable(); | ||
1397 | cnow = info->state->icount; | ||
1398 | local_irq_enable(); | ||
1399 | |||
1400 | icount->cts = cnow.cts; | ||
1401 | icount->dsr = cnow.dsr; | ||
1402 | icount->rng = cnow.rng; | ||
1403 | icount->dcd = cnow.dcd; | ||
1404 | |||
1405 | return 0; | ||
1406 | } | ||
1407 | |||
1384 | static int rs_360_ioctl(struct tty_struct *tty, struct file * file, | 1408 | static int rs_360_ioctl(struct tty_struct *tty, struct file * file, |
1385 | unsigned int cmd, unsigned long arg) | 1409 | unsigned int cmd, unsigned long arg) |
1386 | { | 1410 | { |
@@ -1394,7 +1418,7 @@ static int rs_360_ioctl(struct tty_struct *tty, struct file * file, | |||
1394 | if (serial_paranoia_check(info, tty->name, "rs_ioctl")) | 1418 | if (serial_paranoia_check(info, tty->name, "rs_ioctl")) |
1395 | return -ENODEV; | 1419 | return -ENODEV; |
1396 | 1420 | ||
1397 | if ((cmd != TIOCMIWAIT) && (cmd != TIOCGICOUNT)) { | 1421 | if (cmd != TIOCMIWAIT) { |
1398 | if (tty->flags & (1 << TTY_IO_ERROR)) | 1422 | if (tty->flags & (1 << TTY_IO_ERROR)) |
1399 | return -EIO; | 1423 | return -EIO; |
1400 | } | 1424 | } |
@@ -1477,31 +1501,6 @@ static int rs_360_ioctl(struct tty_struct *tty, struct file * file, | |||
1477 | return 0; | 1501 | return 0; |
1478 | #endif | 1502 | #endif |
1479 | 1503 | ||
1480 | /* | ||
1481 | * Get counter of input serial line interrupts (DCD,RI,DSR,CTS) | ||
1482 | * Return: write counters to the user passed counter struct | ||
1483 | * NB: both 1->0 and 0->1 transitions are counted except for | ||
1484 | * RI where only 0->1 is counted. | ||
1485 | */ | ||
1486 | case TIOCGICOUNT: | ||
1487 | local_irq_disable(); | ||
1488 | cnow = info->state->icount; | ||
1489 | local_irq_enable(); | ||
1490 | p_cuser = (struct serial_icounter_struct *) arg; | ||
1491 | /* error = put_user(cnow.cts, &p_cuser->cts); */ | ||
1492 | /* if (error) return error; */ | ||
1493 | /* error = put_user(cnow.dsr, &p_cuser->dsr); */ | ||
1494 | /* if (error) return error; */ | ||
1495 | /* error = put_user(cnow.rng, &p_cuser->rng); */ | ||
1496 | /* if (error) return error; */ | ||
1497 | /* error = put_user(cnow.dcd, &p_cuser->dcd); */ | ||
1498 | /* if (error) return error; */ | ||
1499 | |||
1500 | put_user(cnow.cts, &p_cuser->cts); | ||
1501 | put_user(cnow.dsr, &p_cuser->dsr); | ||
1502 | put_user(cnow.rng, &p_cuser->rng); | ||
1503 | put_user(cnow.dcd, &p_cuser->dcd); | ||
1504 | return 0; | ||
1505 | 1504 | ||
1506 | default: | 1505 | default: |
1507 | return -ENOIOCTLCMD; | 1506 | return -ENOIOCTLCMD; |