tag | line | file | source code |
portp | 658 | drivers/char/istallion.c | static int stli_initopen(stlibrd_t *brdp, stliport_t *portp); |
portp | 659 | drivers/char/istallion.c | static int stli_rawopen(stlibrd_t *brdp, stliport_t *portp, unsigned long arg, int wait); |
portp | 660 | drivers/char/istallion.c | static int stli_rawclose(stlibrd_t *brdp, stliport_t *portp, unsigned long arg, int wait); |
portp | 661 | drivers/char/istallion.c | static int stli_waitcarrier(stlibrd_t *brdp, stliport_t *portp, struct file *filp); |
portp | 664 | drivers/char/istallion.c | static int stli_setport(stliport_t *portp); |
portp | 665 | drivers/char/istallion.c | static int stli_cmdwait(stlibrd_t *brdp, stliport_t *portp, unsigned long cmd, void *arg, int size, int copyback); |
portp | 666 | drivers/char/istallion.c | static void stli_sendcmd(stlibrd_t *brdp, stliport_t *portp, unsigned long cmd, void *arg, int size, int copyback); |
portp | 667 | drivers/char/istallion.c | static void stli_dodelaycmd(stliport_t *portp, volatile cdkctrl_t *cp); |
portp | 668 | drivers/char/istallion.c | static void stli_mkasyport(stliport_t *portp, asyport_t *pp, struct termios *tiosp); |
portp | 671 | drivers/char/istallion.c | static void stli_read(stlibrd_t *brdp, stliport_t *portp); |
portp | 672 | drivers/char/istallion.c | static void stli_getserial(stliport_t *portp, struct serial_struct *sp); |
portp | 673 | drivers/char/istallion.c | static int stli_setserial(stliport_t *portp, struct serial_struct *sp); |
portp | 675 | drivers/char/istallion.c | static int stli_getportstats(stliport_t *portp, comstats_t *cp); |
portp | 676 | drivers/char/istallion.c | static int stli_clrportstats(stliport_t *portp, comstats_t *cp); |
portp | 787 | drivers/char/istallion.c | stliport_t *portp; |
portp | 829 | drivers/char/istallion.c | portp = brdp->ports[j]; |
portp | 830 | drivers/char/istallion.c | if (portp != (stliport_t *) NULL) { |
portp | 831 | drivers/char/istallion.c | if (portp->tty != (struct tty_struct *) NULL) |
portp | 832 | drivers/char/istallion.c | tty_hangup(portp->tty); |
portp | 833 | drivers/char/istallion.c | kfree_s(portp, sizeof(stliport_t)); |
portp | 870 | drivers/char/istallion.c | stliport_t *portp; |
portp | 891 | drivers/char/istallion.c | portp = brdp->ports[portnr]; |
portp | 892 | drivers/char/istallion.c | if (portp == (stliport_t *) NULL) |
portp | 894 | drivers/char/istallion.c | if (portp->devnr < 1) |
portp | 903 | drivers/char/istallion.c | if (portp->flags & ASYNC_CLOSING) { |
portp | 904 | drivers/char/istallion.c | interruptible_sleep_on(&portp->close_wait); |
portp | 905 | drivers/char/istallion.c | if (portp->flags & ASYNC_HUP_NOTIFY) |
portp | 916 | drivers/char/istallion.c | portp->tty = tty; |
portp | 917 | drivers/char/istallion.c | tty->driver_data = portp; |
portp | 918 | drivers/char/istallion.c | portp->refcount++; |
portp | 920 | drivers/char/istallion.c | while (test_bit(ST_INITIALIZING, &portp->state)) { |
portp | 923 | drivers/char/istallion.c | interruptible_sleep_on(&portp->raw_wait); |
portp | 926 | drivers/char/istallion.c | if ((portp->flags & ASYNC_INITIALIZED) == 0) { |
portp | 927 | drivers/char/istallion.c | set_bit(ST_INITIALIZING, &portp->state); |
portp | 928 | drivers/char/istallion.c | if ((rc = stli_initopen(brdp, portp)) >= 0) { |
portp | 929 | drivers/char/istallion.c | portp->flags |= ASYNC_INITIALIZED; |
portp | 932 | drivers/char/istallion.c | clear_bit(ST_INITIALIZING, &portp->state); |
portp | 933 | drivers/char/istallion.c | wake_up_interruptible(&portp->raw_wait); |
portp | 944 | drivers/char/istallion.c | if (portp->flags & ASYNC_CLOSING) { |
portp | 945 | drivers/char/istallion.c | interruptible_sleep_on(&portp->close_wait); |
portp | 946 | drivers/char/istallion.c | if (portp->flags & ASYNC_HUP_NOTIFY) |
portp | 957 | drivers/char/istallion.c | if (portp->flags & ASYNC_NORMAL_ACTIVE) |
portp | 959 | drivers/char/istallion.c | if (portp->flags & ASYNC_CALLOUT_ACTIVE) { |
portp | 960 | drivers/char/istallion.c | if ((portp->flags & ASYNC_SESSION_LOCKOUT) && |
portp | 961 | drivers/char/istallion.c | (portp->session != current->session)) |
portp | 963 | drivers/char/istallion.c | if ((portp->flags & ASYNC_PGRP_LOCKOUT) && |
portp | 964 | drivers/char/istallion.c | (portp->pgrp != current->pgrp)) |
portp | 967 | drivers/char/istallion.c | portp->flags |= ASYNC_CALLOUT_ACTIVE; |
portp | 970 | drivers/char/istallion.c | if (portp->flags & ASYNC_CALLOUT_ACTIVE) |
portp | 973 | drivers/char/istallion.c | if ((rc = stli_waitcarrier(brdp, portp, filp)) != 0) |
portp | 976 | drivers/char/istallion.c | portp->flags |= ASYNC_NORMAL_ACTIVE; |
portp | 979 | drivers/char/istallion.c | if ((portp->refcount == 1) && (portp->flags & ASYNC_SPLIT_TERMIOS)) { |
portp | 981 | drivers/char/istallion.c | *tty->termios = portp->normaltermios; |
portp | 983 | drivers/char/istallion.c | *tty->termios = portp->callouttermios; |
portp | 984 | drivers/char/istallion.c | stli_setport(portp); |
portp | 987 | drivers/char/istallion.c | portp->session = current->session; |
portp | 988 | drivers/char/istallion.c | portp->pgrp = current->pgrp; |
portp | 997 | drivers/char/istallion.c | stliport_t *portp; |
portp | 1004 | drivers/char/istallion.c | portp = tty->driver_data; |
portp | 1005 | drivers/char/istallion.c | if (portp == (stliport_t *) NULL) |
portp | 1014 | drivers/char/istallion.c | if (portp->refcount-- > 1) { |
portp | 1019 | drivers/char/istallion.c | portp->flags |= ASYNC_CLOSING; |
portp | 1021 | drivers/char/istallion.c | if (portp->flags & ASYNC_NORMAL_ACTIVE) |
portp | 1022 | drivers/char/istallion.c | portp->normaltermios = *tty->termios; |
portp | 1023 | drivers/char/istallion.c | if (portp->flags & ASYNC_CALLOUT_ACTIVE) |
portp | 1024 | drivers/char/istallion.c | portp->callouttermios = *tty->termios; |
portp | 1035 | drivers/char/istallion.c | if (test_bit(ST_TXBUSY, &portp->state)) { |
portp | 1036 | drivers/char/istallion.c | if (portp->closing_wait != ASYNC_CLOSING_WAIT_NONE) |
portp | 1037 | drivers/char/istallion.c | tty_wait_until_sent(tty, portp->closing_wait); |
portp | 1040 | drivers/char/istallion.c | portp->flags &= ~ASYNC_INITIALIZED; |
portp | 1041 | drivers/char/istallion.c | brdp = stli_brds[portp->brdnr]; |
portp | 1042 | drivers/char/istallion.c | stli_rawclose(brdp, portp, 0, 0); |
portp | 1044 | drivers/char/istallion.c | stli_mkasysigs(&portp->asig, 0, 0); |
portp | 1045 | drivers/char/istallion.c | if (test_bit(ST_CMDING, &portp->state)) |
portp | 1046 | drivers/char/istallion.c | set_bit(ST_DOSIGS, &portp->state); |
portp | 1048 | drivers/char/istallion.c | stli_sendcmd(brdp, portp, A_SETSIGNALS, &portp->asig, sizeof(asysigs_t), 0); |
portp | 1050 | drivers/char/istallion.c | clear_bit(ST_TXBUSY, &portp->state); |
portp | 1051 | drivers/char/istallion.c | clear_bit(ST_RXSTOP, &portp->state); |
portp | 1055 | drivers/char/istallion.c | set_bit(ST_DOFLUSHRX, &portp->state); |
portp | 1060 | drivers/char/istallion.c | portp->tty = (struct tty_struct *) NULL; |
portp | 1062 | drivers/char/istallion.c | if (portp->openwaitcnt) { |
portp | 1063 | drivers/char/istallion.c | if (portp->close_delay) |
portp | 1064 | drivers/char/istallion.c | stli_delay(portp->close_delay); |
portp | 1065 | drivers/char/istallion.c | wake_up_interruptible(&portp->open_wait); |
portp | 1068 | drivers/char/istallion.c | portp->flags &= ~(ASYNC_CALLOUT_ACTIVE | ASYNC_NORMAL_ACTIVE | ASYNC_CLOSING); |
portp | 1069 | drivers/char/istallion.c | wake_up_interruptible(&portp->close_wait); |
portp | 1083 | drivers/char/istallion.c | static int stli_initopen(stlibrd_t *brdp, stliport_t *portp) |
portp | 1091 | drivers/char/istallion.c | printk("stli_initopen(brdp=%x,portp=%x)\n", (int) brdp, (int) portp); |
portp | 1094 | drivers/char/istallion.c | if ((rc = stli_rawopen(brdp, portp, 0, 1)) < 0) |
portp | 1100 | drivers/char/istallion.c | if ((rc = stli_cmdwait(brdp, portp, A_SETNOTIFY, &nt, sizeof(asynotify_t), 0)) < 0) |
portp | 1103 | drivers/char/istallion.c | tty = portp->tty; |
portp | 1106 | drivers/char/istallion.c | stli_mkasyport(portp, &aport, tty->termios); |
portp | 1107 | drivers/char/istallion.c | if ((rc = stli_cmdwait(brdp, portp, A_SETPORT, &aport, sizeof(asyport_t), 0)) < 0) |
portp | 1110 | drivers/char/istallion.c | set_bit(ST_GETSIGS, &portp->state); |
portp | 1111 | drivers/char/istallion.c | if ((rc = stli_cmdwait(brdp, portp, A_GETSIGNALS, &portp->asig, sizeof(asysigs_t), 1)) < 0) |
portp | 1113 | drivers/char/istallion.c | if (clear_bit(ST_GETSIGS, &portp->state)) |
portp | 1114 | drivers/char/istallion.c | portp->sigs = stli_mktiocm(portp->asig.sigvalue); |
portp | 1115 | drivers/char/istallion.c | stli_mkasysigs(&portp->asig, 1, 1); |
portp | 1116 | drivers/char/istallion.c | if ((rc = stli_cmdwait(brdp, portp, A_SETSIGNALS, &portp->asig, sizeof(asysigs_t), 0)) < 0) |
portp | 1131 | drivers/char/istallion.c | static int stli_rawopen(stlibrd_t *brdp, stliport_t *portp, unsigned long arg, int wait) |
portp | 1140 | drivers/char/istallion.c | printk("stli_rawopen(brdp=%x,portp=%x,arg=%x,wait=%d)\n", (int) brdp, (int) portp, (int) arg, wait); |
portp | 1155 | drivers/char/istallion.c | while (test_bit(ST_CLOSING, &portp->state)) { |
portp | 1160 | drivers/char/istallion.c | interruptible_sleep_on(&portp->raw_wait); |
portp | 1169 | drivers/char/istallion.c | cp = &((volatile cdkasy_t *) EBRDGETMEMPTR(brdp, portp->addr))->ctrl; |
portp | 1173 | drivers/char/istallion.c | hdrp->slavereq |= portp->reqbit; |
portp | 1174 | drivers/char/istallion.c | bits = ((volatile unsigned char *) hdrp) + brdp->slaveoffset + portp->portidx; |
portp | 1175 | drivers/char/istallion.c | *bits |= portp->portbit; |
portp | 1188 | drivers/char/istallion.c | set_bit(ST_OPENING, &portp->state); |
portp | 1189 | drivers/char/istallion.c | while (test_bit(ST_OPENING, &portp->state)) { |
portp | 1194 | drivers/char/istallion.c | interruptible_sleep_on(&portp->raw_wait); |
portp | 1198 | drivers/char/istallion.c | if ((rc == 0) && (portp->rc != 0)) |
portp | 1211 | drivers/char/istallion.c | static int stli_rawclose(stlibrd_t *brdp, stliport_t *portp, unsigned long arg, int wait) |
portp | 1220 | drivers/char/istallion.c | printk("stli_rawclose(brdp=%x,portp=%x,arg=%x,wait=%d)\n", (int) brdp, (int) portp, (int) arg, wait); |
portp | 1231 | drivers/char/istallion.c | while (test_bit(ST_CLOSING, &portp->state)) { |
portp | 1236 | drivers/char/istallion.c | interruptible_sleep_on(&portp->raw_wait); |
portp | 1244 | drivers/char/istallion.c | cp = &((volatile cdkasy_t *) EBRDGETMEMPTR(brdp, portp->addr))->ctrl; |
portp | 1248 | drivers/char/istallion.c | hdrp->slavereq |= portp->reqbit; |
portp | 1249 | drivers/char/istallion.c | bits = ((volatile unsigned char *) hdrp) + brdp->slaveoffset + portp->portidx; |
portp | 1250 | drivers/char/istallion.c | *bits |= portp->portbit; |
portp | 1253 | drivers/char/istallion.c | set_bit(ST_CLOSING, &portp->state); |
portp | 1264 | drivers/char/istallion.c | while (test_bit(ST_CLOSING, &portp->state)) { |
portp | 1269 | drivers/char/istallion.c | interruptible_sleep_on(&portp->raw_wait); |
portp | 1273 | drivers/char/istallion.c | if ((rc == 0) && (portp->rc != 0)) |
portp | 1287 | drivers/char/istallion.c | static int stli_cmdwait(stlibrd_t *brdp, stliport_t *portp, unsigned long cmd, void *arg, int size, int copyback) |
portp | 1292 | drivers/char/istallion.c | printk("stli_cmdwait(brdp=%x,portp=%x,cmd=%x,arg=%x,size=%d,copyback=%d)\n", (int) brdp, (int) portp, (int) cmd, (int) arg, size, copyback); |
portp | 1297 | drivers/char/istallion.c | while (test_bit(ST_CMDING, &portp->state)) { |
portp | 1302 | drivers/char/istallion.c | interruptible_sleep_on(&portp->raw_wait); |
portp | 1305 | drivers/char/istallion.c | stli_sendcmd(brdp, portp, cmd, arg, size, copyback); |
portp | 1307 | drivers/char/istallion.c | while (test_bit(ST_CMDING, &portp->state)) { |
portp | 1312 | drivers/char/istallion.c | interruptible_sleep_on(&portp->raw_wait); |
portp | 1316 | drivers/char/istallion.c | if (portp->rc != 0) |
portp | 1328 | drivers/char/istallion.c | static int stli_setport(stliport_t *portp) |
portp | 1334 | drivers/char/istallion.c | printk("stli_setport(portp=%x)\n", (int) portp); |
portp | 1337 | drivers/char/istallion.c | if (portp == (stliport_t *) NULL) |
portp | 1339 | drivers/char/istallion.c | if (portp->tty == (struct tty_struct *) NULL) |
portp | 1341 | drivers/char/istallion.c | if ((portp->brdnr < 0) && (portp->brdnr >= stli_nrbrds)) |
portp | 1343 | drivers/char/istallion.c | brdp = stli_brds[portp->brdnr]; |
portp | 1347 | drivers/char/istallion.c | stli_mkasyport(portp, &aport, portp->tty->termios); |
portp | 1348 | drivers/char/istallion.c | return(stli_cmdwait(brdp, portp, A_SETPORT, &aport, sizeof(asyport_t), 0)); |
portp | 1378 | drivers/char/istallion.c | static int stli_waitcarrier(stlibrd_t *brdp, stliport_t *portp, struct file *filp) |
portp | 1384 | drivers/char/istallion.c | printk("stli_waitcarrier(brdp=%x,portp=%x,filp=%x)\n", (int) brdp, (int) portp, (int) filp); |
portp | 1391 | drivers/char/istallion.c | portp->openwaitcnt++; |
portp | 1392 | drivers/char/istallion.c | if (portp->refcount > 0) |
portp | 1393 | drivers/char/istallion.c | portp->refcount--; |
portp | 1396 | drivers/char/istallion.c | if ((portp->flags & ASYNC_CALLOUT_ACTIVE) == 0) { |
portp | 1397 | drivers/char/istallion.c | stli_mkasysigs(&portp->asig, 1, 1); |
portp | 1398 | drivers/char/istallion.c | if ((rc = stli_cmdwait(brdp, portp, A_SETSIGNALS, &portp->asig, sizeof(asysigs_t), 0)) < 0) |
portp | 1401 | drivers/char/istallion.c | if (tty_hung_up_p(filp) || ((portp->flags & ASYNC_INITIALIZED) == 0)) { |
portp | 1402 | drivers/char/istallion.c | if (portp->flags & ASYNC_HUP_NOTIFY) |
portp | 1408 | drivers/char/istallion.c | if (((portp->flags & ASYNC_CALLOUT_ACTIVE) == 0) && |
portp | 1409 | drivers/char/istallion.c | ((portp->flags & ASYNC_CLOSING) == 0) && |
portp | 1410 | drivers/char/istallion.c | ((portp->tty->termios->c_cflag & CLOCAL) || |
portp | 1411 | drivers/char/istallion.c | (portp->sigs & TIOCM_CD))) { |
portp | 1418 | drivers/char/istallion.c | interruptible_sleep_on(&portp->open_wait); |
portp | 1422 | drivers/char/istallion.c | portp->refcount++; |
portp | 1423 | drivers/char/istallion.c | portp->openwaitcnt--; |
portp | 1443 | drivers/char/istallion.c | stliport_t *portp; |
portp | 1456 | drivers/char/istallion.c | portp = tty->driver_data; |
portp | 1457 | drivers/char/istallion.c | if (portp == (stliport_t *) NULL) |
portp | 1459 | drivers/char/istallion.c | if ((portp->brdnr < 0) || (portp->brdnr >= stli_nrbrds)) |
portp | 1461 | drivers/char/istallion.c | brdp = stli_brds[portp->brdnr]; |
portp | 1481 | drivers/char/istallion.c | ap = (volatile cdkasy_t *) EBRDGETMEMPTR(brdp, portp->addr); |
portp | 1486 | drivers/char/istallion.c | len = (head >= tail) ? (portp->txsize - (head - tail) - 1) : (tail - head - 1); |
portp | 1503 | drivers/char/istallion.c | ap = (volatile cdkasy_t *) EBRDGETMEMPTR(brdp, portp->addr); |
portp | 1508 | drivers/char/istallion.c | size = portp->txsize; |
portp | 1519 | drivers/char/istallion.c | shbuf = (char *) EBRDGETMEMPTR(brdp, portp->txoffset); |
portp | 1534 | drivers/char/istallion.c | ap = (volatile cdkasy_t *) EBRDGETMEMPTR(brdp, portp->addr); |
portp | 1536 | drivers/char/istallion.c | if (test_bit(ST_TXBUSY, &portp->state)) { |
portp | 1541 | drivers/char/istallion.c | hdrp->slavereq |= portp->reqbit; |
portp | 1542 | drivers/char/istallion.c | bits = ((volatile unsigned char *) hdrp) + brdp->slaveoffset + portp->portidx; |
portp | 1543 | drivers/char/istallion.c | *bits |= portp->portbit; |
portp | 1544 | drivers/char/istallion.c | set_bit(ST_TXBUSY, &portp->state); |
portp | 1595 | drivers/char/istallion.c | stliport_t *portp; |
portp | 1620 | drivers/char/istallion.c | portp = tty->driver_data; |
portp | 1621 | drivers/char/istallion.c | if (portp == (stliport_t *) NULL) |
portp | 1623 | drivers/char/istallion.c | if ((portp->brdnr < 0) || (portp->brdnr >= stli_nrbrds)) |
portp | 1625 | drivers/char/istallion.c | brdp = stli_brds[portp->brdnr]; |
portp | 1633 | drivers/char/istallion.c | ap = (volatile cdkasy_t *) EBRDGETMEMPTR(brdp, portp->addr); |
portp | 1638 | drivers/char/istallion.c | size = portp->txsize; |
portp | 1649 | drivers/char/istallion.c | shbuf = (char *) EBRDGETMEMPTR(brdp, portp->txoffset); |
portp | 1665 | drivers/char/istallion.c | ap = (volatile cdkasy_t *) EBRDGETMEMPTR(brdp, portp->addr); |
portp | 1668 | drivers/char/istallion.c | if (test_bit(ST_TXBUSY, &portp->state)) { |
portp | 1673 | drivers/char/istallion.c | hdrp->slavereq |= portp->reqbit; |
portp | 1674 | drivers/char/istallion.c | bits = ((volatile unsigned char *) hdrp) + brdp->slaveoffset + portp->portidx; |
portp | 1675 | drivers/char/istallion.c | *bits |= portp->portbit; |
portp | 1676 | drivers/char/istallion.c | set_bit(ST_TXBUSY, &portp->state); |
portp | 1687 | drivers/char/istallion.c | stliport_t *portp; |
portp | 1705 | drivers/char/istallion.c | portp = tty->driver_data; |
portp | 1706 | drivers/char/istallion.c | if (portp == (stliport_t *) NULL) |
portp | 1708 | drivers/char/istallion.c | if ((portp->brdnr < 0) || (portp->brdnr >= stli_nrbrds)) |
portp | 1710 | drivers/char/istallion.c | brdp = stli_brds[portp->brdnr]; |
portp | 1717 | drivers/char/istallion.c | rp = &((volatile cdkasy_t *) EBRDGETMEMPTR(brdp, portp->addr))->txq; |
portp | 1722 | drivers/char/istallion.c | len = (head >= tail) ? (portp->txsize - (head - tail)) : (tail - head); |
portp | 1747 | drivers/char/istallion.c | stliport_t *portp; |
portp | 1760 | drivers/char/istallion.c | portp = tty->driver_data; |
portp | 1761 | drivers/char/istallion.c | if (portp == (stliport_t *) NULL) |
portp | 1763 | drivers/char/istallion.c | if ((portp->brdnr < 0) || (portp->brdnr >= stli_nrbrds)) |
portp | 1765 | drivers/char/istallion.c | brdp = stli_brds[portp->brdnr]; |
portp | 1772 | drivers/char/istallion.c | rp = &((volatile cdkasy_t *) EBRDGETMEMPTR(brdp, portp->addr))->txq; |
portp | 1777 | drivers/char/istallion.c | len = (head >= tail) ? (head - tail) : (portp->txsize - (tail - head)); |
portp | 1778 | drivers/char/istallion.c | if ((len == 0) && test_bit(ST_TXBUSY, &portp->state)) |
portp | 1792 | drivers/char/istallion.c | static void stli_getserial(stliport_t *portp, struct serial_struct *sp) |
portp | 1798 | drivers/char/istallion.c | printk("stli_getserial(portp=%x,sp=%x)\n", (int) portp, (int) sp); |
portp | 1803 | drivers/char/istallion.c | sio.line = portp->portnr; |
portp | 1805 | drivers/char/istallion.c | sio.flags = portp->flags; |
portp | 1806 | drivers/char/istallion.c | sio.baud_base = portp->baud_base; |
portp | 1807 | drivers/char/istallion.c | sio.close_delay = portp->close_delay; |
portp | 1808 | drivers/char/istallion.c | sio.closing_wait = portp->closing_wait; |
portp | 1809 | drivers/char/istallion.c | sio.custom_divisor = portp->custom_divisor; |
portp | 1813 | drivers/char/istallion.c | brdp = stli_brds[portp->brdnr]; |
portp | 1828 | drivers/char/istallion.c | static int stli_setserial(stliport_t *portp, struct serial_struct *sp) |
portp | 1834 | drivers/char/istallion.c | printk("stli_setserial(portp=%x,sp=%x)\n", (int) portp, (int) sp); |
portp | 1839 | drivers/char/istallion.c | if ((sio.baud_base != portp->baud_base) || |
portp | 1840 | drivers/char/istallion.c | (sio.close_delay != portp->close_delay) || |
portp | 1841 | drivers/char/istallion.c | ((sio.flags & ~ASYNC_USR_MASK) != (portp->flags & ~ASYNC_USR_MASK))) |
portp | 1845 | drivers/char/istallion.c | portp->flags = (portp->flags & ~ASYNC_USR_MASK) | (sio.flags & ASYNC_USR_MASK); |
portp | 1846 | drivers/char/istallion.c | portp->baud_base = sio.baud_base; |
portp | 1847 | drivers/char/istallion.c | portp->close_delay = sio.close_delay; |
portp | 1848 | drivers/char/istallion.c | portp->closing_wait = sio.closing_wait; |
portp | 1849 | drivers/char/istallion.c | portp->custom_divisor = sio.custom_divisor; |
portp | 1851 | drivers/char/istallion.c | if ((rc = stli_setport(portp)) < 0) |
portp | 1860 | drivers/char/istallion.c | stliport_t *portp; |
portp | 1871 | drivers/char/istallion.c | portp = tty->driver_data; |
portp | 1872 | drivers/char/istallion.c | if (portp == (stliport_t *) NULL) |
portp | 1874 | drivers/char/istallion.c | if ((portp->brdnr < 0) || (portp->brdnr >= stli_nrbrds)) |
portp | 1876 | drivers/char/istallion.c | brdp = stli_brds[portp->brdnr]; |
portp | 1888 | drivers/char/istallion.c | rc = stli_cmdwait(brdp, portp, A_BREAK, &val, sizeof(unsigned long), 0); |
portp | 1896 | drivers/char/istallion.c | rc = stli_cmdwait(brdp, portp, A_BREAK, &val, sizeof(unsigned long), 0); |
portp | 1911 | drivers/char/istallion.c | if ((rc = stli_cmdwait(brdp, portp, A_GETSIGNALS, &portp->asig, sizeof(asysigs_t), 1)) < 0) |
portp | 1913 | drivers/char/istallion.c | val = stli_mktiocm(portp->asig.sigvalue); |
portp | 1920 | drivers/char/istallion.c | stli_mkasysigs(&portp->asig, ((arg & TIOCM_DTR) ? 1 : -1), ((arg & TIOCM_RTS) ? 1 : -1)); |
portp | 1921 | drivers/char/istallion.c | rc = stli_cmdwait(brdp, portp, A_SETSIGNALS, &portp->asig, sizeof(asysigs_t), 0); |
portp | 1927 | drivers/char/istallion.c | stli_mkasysigs(&portp->asig, ((arg & TIOCM_DTR) ? 0 : -1), ((arg & TIOCM_RTS) ? 0 : -1)); |
portp | 1928 | drivers/char/istallion.c | rc = stli_cmdwait(brdp, portp, A_SETSIGNALS, &portp->asig, sizeof(asysigs_t), 0); |
portp | 1934 | drivers/char/istallion.c | stli_mkasysigs(&portp->asig, ((arg & TIOCM_DTR) ? 1 : 0), ((arg & TIOCM_RTS) ? 1 : 0)); |
portp | 1935 | drivers/char/istallion.c | rc = stli_cmdwait(brdp, portp, A_SETSIGNALS, &portp->asig, sizeof(asysigs_t), 0); |
portp | 1940 | drivers/char/istallion.c | stli_getserial(portp, (struct serial_struct *) arg); |
portp | 1944 | drivers/char/istallion.c | rc = stli_setserial(portp, (struct serial_struct *) arg); |
portp | 1948 | drivers/char/istallion.c | put_fs_long(portp->pflag, (unsigned long *) arg); |
portp | 1952 | drivers/char/istallion.c | portp->pflag = get_fs_long((unsigned long *) arg); |
portp | 1953 | drivers/char/istallion.c | stli_setport(portp); |
portp | 1958 | drivers/char/istallion.c | rc = stli_getportstats(portp, (comstats_t *) arg); |
portp | 1962 | drivers/char/istallion.c | rc = stli_clrportstats(portp, (comstats_t *) arg); |
portp | 1988 | drivers/char/istallion.c | stliport_t *portp; |
portp | 1999 | drivers/char/istallion.c | portp = tty->driver_data; |
portp | 2000 | drivers/char/istallion.c | if (portp == (stliport_t *) NULL) |
portp | 2002 | drivers/char/istallion.c | if ((portp->brdnr < 0) || (portp->brdnr >= stli_nrbrds)) |
portp | 2004 | drivers/char/istallion.c | brdp = stli_brds[portp->brdnr]; |
portp | 2012 | drivers/char/istallion.c | stli_mkasyport(portp, &aport, tiosp); |
portp | 2013 | drivers/char/istallion.c | stli_cmdwait(brdp, portp, A_SETPORT, &aport, sizeof(asyport_t), 0); |
portp | 2014 | drivers/char/istallion.c | stli_mkasysigs(&portp->asig, ((tiosp->c_cflag & CBAUD) ? 1 : 0), -1); |
portp | 2015 | drivers/char/istallion.c | stli_cmdwait(brdp, portp, A_SETSIGNALS, &portp->asig, sizeof(asysigs_t), 0); |
portp | 2019 | drivers/char/istallion.c | wake_up_interruptible(&portp->open_wait); |
portp | 2036 | drivers/char/istallion.c | stliport_t *portp; |
portp | 2044 | drivers/char/istallion.c | portp = tty->driver_data; |
portp | 2045 | drivers/char/istallion.c | if (portp == (stliport_t *) NULL) |
portp | 2048 | drivers/char/istallion.c | set_bit(ST_RXSTOP, &portp->state); |
portp | 2061 | drivers/char/istallion.c | stliport_t *portp; |
portp | 2069 | drivers/char/istallion.c | portp = tty->driver_data; |
portp | 2070 | drivers/char/istallion.c | if (portp == (stliport_t *) NULL) |
portp | 2073 | drivers/char/istallion.c | clear_bit(ST_RXSTOP, &portp->state); |
portp | 2086 | drivers/char/istallion.c | stliport_t *portp; |
portp | 2095 | drivers/char/istallion.c | portp = tty->driver_data; |
portp | 2096 | drivers/char/istallion.c | if (portp == (stliport_t *) NULL) |
portp | 2098 | drivers/char/istallion.c | if ((portp->brdnr < 0) || (portp->brdnr >= stli_nrbrds)) |
portp | 2100 | drivers/char/istallion.c | brdp = stli_brds[portp->brdnr]; |
portp | 2107 | drivers/char/istallion.c | stli_cmdwait(brdp, portp, A_PORTCTRL, &actrl, sizeof(asyctrl_t)); |
portp | 2119 | drivers/char/istallion.c | stliport_t *portp; |
portp | 2129 | drivers/char/istallion.c | portp = tty->driver_data; |
portp | 2130 | drivers/char/istallion.c | if (portp == (stliport_t *) NULL) |
portp | 2132 | drivers/char/istallion.c | if ((portp->brdnr < 0) || (portp->brdnr >= stli_nrbrds)) |
portp | 2134 | drivers/char/istallion.c | brdp = stli_brds[portp->brdnr]; |
portp | 2141 | drivers/char/istallion.c | stli_cmdwait(brdp, portp, A_PORTCTRL, &actrl, sizeof(asyctrl_t)); |
portp | 2158 | drivers/char/istallion.c | stliport_t *portp; |
portp | 2164 | drivers/char/istallion.c | portp = (stliport_t *) arg; |
portp | 2165 | drivers/char/istallion.c | if (portp == (stliport_t *) NULL) |
portp | 2167 | drivers/char/istallion.c | if (portp->tty == (struct tty_struct *) NULL) |
portp | 2169 | drivers/char/istallion.c | tty_hangup(portp->tty); |
portp | 2183 | drivers/char/istallion.c | stliport_t *portp; |
portp | 2193 | drivers/char/istallion.c | portp = tty->driver_data; |
portp | 2194 | drivers/char/istallion.c | if (portp == (stliport_t *) NULL) |
portp | 2196 | drivers/char/istallion.c | if ((portp->brdnr < 0) || (portp->brdnr >= stli_nrbrds)) |
portp | 2198 | drivers/char/istallion.c | brdp = stli_brds[portp->brdnr]; |
portp | 2202 | drivers/char/istallion.c | portp->flags &= ~ASYNC_INITIALIZED; |
portp | 2206 | drivers/char/istallion.c | if (! test_bit(ST_CLOSING, &portp->state)) |
portp | 2207 | drivers/char/istallion.c | stli_rawclose(brdp, portp, 0, 0); |
portp | 2209 | drivers/char/istallion.c | stli_mkasysigs(&portp->asig, 0, 0); |
portp | 2210 | drivers/char/istallion.c | if (test_bit(ST_CMDING, &portp->state)) { |
portp | 2211 | drivers/char/istallion.c | set_bit(ST_DOSIGS, &portp->state); |
portp | 2212 | drivers/char/istallion.c | set_bit(ST_DOFLUSHTX, &portp->state); |
portp | 2213 | drivers/char/istallion.c | set_bit(ST_DOFLUSHRX, &portp->state); |
portp | 2215 | drivers/char/istallion.c | stli_sendcmd(brdp, portp, A_SETSIGNALSF, &portp->asig, sizeof(asysigs_t), 0); |
portp | 2220 | drivers/char/istallion.c | clear_bit(ST_TXBUSY, &portp->state); |
portp | 2221 | drivers/char/istallion.c | clear_bit(ST_RXSTOP, &portp->state); |
portp | 2224 | drivers/char/istallion.c | portp->tty = (struct tty_struct *) NULL; |
portp | 2225 | drivers/char/istallion.c | portp->flags &= ~(ASYNC_NORMAL_ACTIVE | ASYNC_CALLOUT_ACTIVE); |
portp | 2226 | drivers/char/istallion.c | portp->refcount = 0; |
portp | 2227 | drivers/char/istallion.c | wake_up_interruptible(&portp->open_wait); |
portp | 2241 | drivers/char/istallion.c | stliport_t *portp; |
portp | 2251 | drivers/char/istallion.c | portp = tty->driver_data; |
portp | 2252 | drivers/char/istallion.c | if (portp == (stliport_t *) NULL) |
portp | 2254 | drivers/char/istallion.c | if ((portp->brdnr < 0) || (portp->brdnr >= stli_nrbrds)) |
portp | 2256 | drivers/char/istallion.c | brdp = stli_brds[portp->brdnr]; |
portp | 2267 | drivers/char/istallion.c | if (test_bit(ST_CMDING, &portp->state)) { |
portp | 2268 | drivers/char/istallion.c | set_bit(ST_DOFLUSHTX, &portp->state); |
portp | 2271 | drivers/char/istallion.c | if (test_bit(ST_DOFLUSHRX, &portp->state)) { |
portp | 2273 | drivers/char/istallion.c | clear_bit(ST_DOFLUSHRX, &portp->state); |
portp | 2275 | drivers/char/istallion.c | stli_sendcmd(brdp, portp, A_FLUSH, &ftype, sizeof(unsigned long), 0); |
portp | 2296 | drivers/char/istallion.c | static void stli_sendcmd(stlibrd_t *brdp, stliport_t *portp, unsigned long cmd, void *arg, int size, int copyback) |
portp | 2304 | drivers/char/istallion.c | printk("stli_sendcmd(brdp=%x,portp=%x,cmd=%x,arg=%x,size=%d,copyback=%d)\n", (int) brdp, (int) portp, (int) cmd, (int) arg, size, copyback); |
portp | 2310 | drivers/char/istallion.c | if (test_bit(ST_CMDING, &portp->state)) { |
portp | 2317 | drivers/char/istallion.c | cp = &((volatile cdkasy_t *) EBRDGETMEMPTR(brdp, portp->addr))->ctrl; |
portp | 2321 | drivers/char/istallion.c | portp->argp = arg; |
portp | 2322 | drivers/char/istallion.c | portp->argsize = size; |
portp | 2328 | drivers/char/istallion.c | hdrp->slavereq |= portp->reqbit; |
portp | 2329 | drivers/char/istallion.c | bits = ((volatile unsigned char *) hdrp) + brdp->slaveoffset + portp->portidx; |
portp | 2330 | drivers/char/istallion.c | *bits |= portp->portbit; |
portp | 2331 | drivers/char/istallion.c | set_bit(ST_CMDING, &portp->state); |
portp | 2346 | drivers/char/istallion.c | static inline void stli_read(stlibrd_t *brdp, stliport_t *portp) |
portp | 2355 | drivers/char/istallion.c | printk("stli_read(brdp=%x,portp=%d)\n", (int) brdp, (int) portp); |
portp | 2358 | drivers/char/istallion.c | if (test_bit(ST_RXSTOP, &portp->state)) |
portp | 2360 | drivers/char/istallion.c | tty = portp->tty; |
portp | 2364 | drivers/char/istallion.c | rp = &((volatile cdkasy_t *) EBRDGETMEMPTR(brdp, portp->addr))->rxq; |
portp | 2369 | drivers/char/istallion.c | size = portp->rxsize; |
portp | 2379 | drivers/char/istallion.c | shbuf = (volatile char *) EBRDGETMEMPTR(brdp, portp->rxoffset); |
portp | 2396 | drivers/char/istallion.c | rp = &((volatile cdkasy_t *) EBRDGETMEMPTR(brdp, portp->addr))->rxq; |
portp | 2400 | drivers/char/istallion.c | set_bit(ST_RXING, &portp->state); |
portp | 2413 | drivers/char/istallion.c | static inline void stli_dodelaycmd(stliport_t *portp, volatile cdkctrl_t *cp) |
portp | 2417 | drivers/char/istallion.c | if (test_bit(ST_DOSIGS, &portp->state)) { |
portp | 2418 | drivers/char/istallion.c | if (test_bit(ST_DOFLUSHTX, &portp->state) && test_bit(ST_DOFLUSHRX, &portp->state)) |
portp | 2420 | drivers/char/istallion.c | else if (test_bit(ST_DOFLUSHTX, &portp->state)) |
portp | 2422 | drivers/char/istallion.c | else if (test_bit(ST_DOFLUSHRX, &portp->state)) |
portp | 2426 | drivers/char/istallion.c | clear_bit(ST_DOFLUSHTX, &portp->state); |
portp | 2427 | drivers/char/istallion.c | clear_bit(ST_DOFLUSHRX, &portp->state); |
portp | 2428 | drivers/char/istallion.c | clear_bit(ST_DOSIGS, &portp->state); |
portp | 2429 | drivers/char/istallion.c | memcpy((void *) &(cp->args[0]), (void *) &portp->asig, sizeof(asysigs_t)); |
portp | 2432 | drivers/char/istallion.c | set_bit(ST_CMDING, &portp->state); |
portp | 2433 | drivers/char/istallion.c | } else if (test_bit(ST_DOFLUSHTX, &portp->state) || test_bit(ST_DOFLUSHRX, &portp->state)) { |
portp | 2434 | drivers/char/istallion.c | cmd = ((test_bit(ST_DOFLUSHTX, &portp->state)) ? FLUSHTX : 0); |
portp | 2435 | drivers/char/istallion.c | cmd |= ((test_bit(ST_DOFLUSHRX, &portp->state)) ? FLUSHRX : 0); |
portp | 2436 | drivers/char/istallion.c | clear_bit(ST_DOFLUSHTX, &portp->state); |
portp | 2437 | drivers/char/istallion.c | clear_bit(ST_DOFLUSHRX, &portp->state); |
portp | 2441 | drivers/char/istallion.c | set_bit(ST_CMDING, &portp->state); |
portp | 2461 | drivers/char/istallion.c | stliport_t *portp; |
portp | 2469 | drivers/char/istallion.c | portp = brdp->ports[(channr - 1)]; |
portp | 2470 | drivers/char/istallion.c | ap = (volatile cdkasy_t *) EBRDGETMEMPTR(brdp, portp->addr); |
portp | 2476 | drivers/char/istallion.c | if (test_bit(ST_OPENING, &portp->state)) { |
portp | 2482 | drivers/char/istallion.c | portp->rc = rc; |
portp | 2483 | drivers/char/istallion.c | clear_bit(ST_OPENING, &portp->state); |
portp | 2484 | drivers/char/istallion.c | wake_up_interruptible(&portp->raw_wait); |
portp | 2491 | drivers/char/istallion.c | if (test_bit(ST_CLOSING, &portp->state)) { |
portp | 2497 | drivers/char/istallion.c | portp->rc = rc; |
portp | 2498 | drivers/char/istallion.c | clear_bit(ST_CLOSING, &portp->state); |
portp | 2499 | drivers/char/istallion.c | wake_up_interruptible(&portp->raw_wait); |
portp | 2507 | drivers/char/istallion.c | if (test_bit(ST_CMDING, &portp->state)) { |
portp | 2512 | drivers/char/istallion.c | if (portp->argp != (void *) NULL) { |
portp | 2513 | drivers/char/istallion.c | memcpy(portp->argp, (void *) &(cp->args[0]), portp->argsize); |
portp | 2514 | drivers/char/istallion.c | portp->argp = (void *) NULL; |
portp | 2517 | drivers/char/istallion.c | portp->rc = rc; |
portp | 2518 | drivers/char/istallion.c | clear_bit(ST_CMDING, &portp->state); |
portp | 2519 | drivers/char/istallion.c | stli_dodelaycmd(portp, cp); |
portp | 2520 | drivers/char/istallion.c | wake_up_interruptible(&portp->raw_wait); |
portp | 2534 | drivers/char/istallion.c | tty = portp->tty; |
portp | 2537 | drivers/char/istallion.c | oldsigs = portp->sigs; |
portp | 2538 | drivers/char/istallion.c | portp->sigs = stli_mktiocm(nt.sigvalue); |
portp | 2539 | drivers/char/istallion.c | clear_bit(ST_GETSIGS, &portp->state); |
portp | 2540 | drivers/char/istallion.c | if ((portp->sigs & TIOCM_CD) && ((oldsigs & TIOCM_CD) == 0)) |
portp | 2541 | drivers/char/istallion.c | wake_up_interruptible(&portp->open_wait); |
portp | 2542 | drivers/char/istallion.c | if ((oldsigs & TIOCM_CD) && ((portp->sigs & TIOCM_CD) == 0)) { |
portp | 2543 | drivers/char/istallion.c | if (! ((portp->flags & ASYNC_CALLOUT_ACTIVE) && |
portp | 2544 | drivers/char/istallion.c | (portp->flags & ASYNC_CALLOUT_NOHUP))) { |
portp | 2546 | drivers/char/istallion.c | queue_task_irq_off(&portp->tqhangup, &tq_scheduler); |
portp | 2552 | drivers/char/istallion.c | clear_bit(ST_TXBUSY, &portp->state); |
portp | 2561 | drivers/char/istallion.c | if ((nt.data & DT_RXBREAK) && (portp->rxmarkmsk & BRKINT)) { |
portp | 2568 | drivers/char/istallion.c | if (portp->flags & ASYNC_SAK) |
portp | 2578 | drivers/char/istallion.c | stli_read(brdp, portp); |
portp | 2590 | drivers/char/istallion.c | if ((!donerx) && test_bit(ST_RXING, &portp->state)) { |
portp | 2591 | drivers/char/istallion.c | clear_bit(ST_RXING, &portp->state); |
portp | 2592 | drivers/char/istallion.c | stli_read(brdp, portp); |
portp | 2614 | drivers/char/istallion.c | stliport_t *portp; |
portp | 2677 | drivers/char/istallion.c | portp = brdp->ports[(channr - 1)]; |
portp | 2678 | drivers/char/istallion.c | if (test_bit(ST_OPENING, &portp->state) || |
portp | 2679 | drivers/char/istallion.c | test_bit(ST_CLOSING, &portp->state) || |
portp | 2680 | drivers/char/istallion.c | test_bit(ST_CMDING, &portp->state) || |
portp | 2681 | drivers/char/istallion.c | test_bit(ST_TXBUSY, &portp->state)) { |
portp | 2682 | drivers/char/istallion.c | slavereq |= portp->reqbit; |
portp | 2706 | drivers/char/istallion.c | static void stli_mkasyport(stliport_t *portp, asyport_t *pp, struct termios *tiosp) |
portp | 2709 | drivers/char/istallion.c | printk("stli_mkasyport(portp=%x,pp=%x,tiosp=%d)\n", (int) portp, (int) pp, (int) tiosp); |
portp | 2727 | drivers/char/istallion.c | if ((portp->flags & ASYNC_SPD_MASK) == ASYNC_SPD_HI) |
portp | 2729 | drivers/char/istallion.c | else if ((portp->flags & ASYNC_SPD_MASK) == ASYNC_SPD_VHI) |
portp | 2731 | drivers/char/istallion.c | else if ((portp->flags & ASYNC_SPD_MASK) == ASYNC_SPD_CUST) |
portp | 2732 | drivers/char/istallion.c | pp->baudout = (portp->baud_base / portp->custom_divisor); |
portp | 2794 | drivers/char/istallion.c | portp->rxmarkmsk = 0; |
portp | 2798 | drivers/char/istallion.c | portp->rxmarkmsk |= BRKINT; |
portp | 2803 | drivers/char/istallion.c | pp->pflag = portp->pflag; |
portp | 2864 | drivers/char/istallion.c | stliport_t *portp; |
portp | 2872 | drivers/char/istallion.c | portp = (stliport_t *) stli_memalloc(sizeof(stliport_t)); |
portp | 2873 | drivers/char/istallion.c | if (portp == (stliport_t *) NULL) { |
portp | 2878 | drivers/char/istallion.c | memset(portp, 0, sizeof(stliport_t)); |
portp | 2879 | drivers/char/istallion.c | portp->portnr = i; |
portp | 2880 | drivers/char/istallion.c | portp->brdnr = brdp->brdnr; |
portp | 2881 | drivers/char/istallion.c | portp->panelnr = panelnr; |
portp | 2882 | drivers/char/istallion.c | portp->baud_base = STL_BAUDBASE; |
portp | 2883 | drivers/char/istallion.c | portp->close_delay = STL_CLOSEDELAY; |
portp | 2884 | drivers/char/istallion.c | portp->closing_wait = 30 * HZ; |
portp | 2885 | drivers/char/istallion.c | portp->tqhangup.routine = stli_dohangup; |
portp | 2886 | drivers/char/istallion.c | portp->tqhangup.data = portp; |
portp | 2887 | drivers/char/istallion.c | portp->normaltermios = stli_deftermios; |
portp | 2888 | drivers/char/istallion.c | portp->callouttermios = stli_deftermios; |
portp | 2894 | drivers/char/istallion.c | brdp->ports[i] = portp; |
portp | 3740 | drivers/char/istallion.c | stliport_t *portp; |
portp | 3791 | drivers/char/istallion.c | portp = brdp->ports[portnr]; |
portp | 3792 | drivers/char/istallion.c | if (portp == (stliport_t *) NULL) |
portp | 3794 | drivers/char/istallion.c | portp->devnr = i; |
portp | 3795 | drivers/char/istallion.c | portp->addr = memp->offset; |
portp | 3796 | drivers/char/istallion.c | portp->reqbit = (unsigned char) (0x1 << (i * 8 / nrdevs)); |
portp | 3797 | drivers/char/istallion.c | portp->portidx = (unsigned char) (i / 8); |
portp | 3798 | drivers/char/istallion.c | portp->portbit = (unsigned char) (0x1 << (i % 8)); |
portp | 3807 | drivers/char/istallion.c | portp = brdp->ports[portnr]; |
portp | 3808 | drivers/char/istallion.c | if (portp == (stliport_t *) NULL) |
portp | 3810 | drivers/char/istallion.c | if (portp->addr == 0) |
portp | 3812 | drivers/char/istallion.c | ap = (volatile cdkasy_t *) EBRDGETMEMPTR(brdp, portp->addr); |
portp | 3814 | drivers/char/istallion.c | portp->rxsize = ap->rxq.size; |
portp | 3815 | drivers/char/istallion.c | portp->txsize = ap->txq.size; |
portp | 3816 | drivers/char/istallion.c | portp->rxoffset = ap->rxq.offset; |
portp | 3817 | drivers/char/istallion.c | portp->txoffset = ap->txq.offset; |
portp | 4337 | drivers/char/istallion.c | static int stli_getportstats(stliport_t *portp, comstats_t *cp) |
portp | 4342 | drivers/char/istallion.c | if (portp == (stliport_t *) NULL) { |
portp | 4344 | drivers/char/istallion.c | portp = stli_getport(stli_comstats.brd, stli_comstats.panel, stli_comstats.port); |
portp | 4345 | drivers/char/istallion.c | if (portp == (stliport_t *) NULL) |
portp | 4349 | drivers/char/istallion.c | brdp = stli_brds[portp->brdnr]; |
portp | 4353 | drivers/char/istallion.c | if ((rc = stli_cmdwait(brdp, portp, A_GETSTATS, &stli_cdkstats, sizeof(asystats_t), 1)) < 0) |
portp | 4356 | drivers/char/istallion.c | stli_comstats.state = portp->state; |
portp | 4357 | drivers/char/istallion.c | stli_comstats.flags = portp->flags; |
portp | 4358 | drivers/char/istallion.c | if (portp->tty != (struct tty_struct *) NULL) { |
portp | 4359 | drivers/char/istallion.c | stli_comstats.ttystate = portp->tty->flags; |
portp | 4360 | drivers/char/istallion.c | stli_comstats.cflags = portp->tty->termios->c_cflag; |
portp | 4361 | drivers/char/istallion.c | stli_comstats.iflags = portp->tty->termios->c_iflag; |
portp | 4362 | drivers/char/istallion.c | stli_comstats.oflags = portp->tty->termios->c_oflag; |
portp | 4363 | drivers/char/istallion.c | stli_comstats.lflags = portp->tty->termios->c_lflag; |
portp | 4364 | drivers/char/istallion.c | stli_comstats.rxbuffered = portp->tty->flip.count; |
portp | 4404 | drivers/char/istallion.c | static int stli_clrportstats(stliport_t *portp, comstats_t *cp) |
portp | 4409 | drivers/char/istallion.c | if (portp == (stliport_t *) NULL) { |
portp | 4411 | drivers/char/istallion.c | portp = stli_getport(stli_comstats.brd, stli_comstats.panel, stli_comstats.port); |
portp | 4412 | drivers/char/istallion.c | if (portp == (stliport_t *) NULL) |
portp | 4416 | drivers/char/istallion.c | brdp = stli_brds[portp->brdnr]; |
portp | 4420 | drivers/char/istallion.c | if ((rc = stli_cmdwait(brdp, portp, A_CLEARSTATS, 0, 0, 0)) < 0) |
portp | 4424 | drivers/char/istallion.c | stli_comstats.brd = portp->brdnr; |
portp | 4425 | drivers/char/istallion.c | stli_comstats.panel = portp->panelnr; |
portp | 4426 | drivers/char/istallion.c | stli_comstats.port = portp->portnr; |
portp | 499 | drivers/char/stallion.c | static void stl_getserial(stlport_t *portp, struct serial_struct *sp); |
portp | 500 | drivers/char/stallion.c | static int stl_setserial(stlport_t *portp, struct serial_struct *sp); |
portp | 502 | drivers/char/stallion.c | static int stl_getportstats(stlport_t *portp, comstats_t *cp); |
portp | 503 | drivers/char/stallion.c | static int stl_clrportstats(stlport_t *portp, comstats_t *cp); |
portp | 504 | drivers/char/stallion.c | static void stl_setreg(stlport_t *portp, int regnr, int value); |
portp | 505 | drivers/char/stallion.c | static int stl_getreg(stlport_t *portp, int regnr); |
portp | 506 | drivers/char/stallion.c | static int stl_updatereg(stlport_t *portp, int regnr, int value); |
portp | 507 | drivers/char/stallion.c | static void stl_setport(stlport_t *portp, struct termios *tiosp); |
portp | 508 | drivers/char/stallion.c | static int stl_getsignals(stlport_t *portp); |
portp | 509 | drivers/char/stallion.c | static void stl_setsignals(stlport_t *portp, int dtr, int rts); |
portp | 510 | drivers/char/stallion.c | static void stl_ccrwait(stlport_t *portp); |
portp | 511 | drivers/char/stallion.c | static void stl_enablerxtx(stlport_t *portp, int rx, int tx); |
portp | 512 | drivers/char/stallion.c | static void stl_startrxtx(stlport_t *portp, int rx, int tx); |
portp | 513 | drivers/char/stallion.c | static void stl_disableintrs(stlport_t *portp); |
portp | 514 | drivers/char/stallion.c | static void stl_sendbreak(stlport_t *portp, long len); |
portp | 515 | drivers/char/stallion.c | static int stl_waitcarrier(stlport_t *portp, struct file *filp); |
portp | 575 | drivers/char/stallion.c | stlport_t *portp; |
portp | 613 | drivers/char/stallion.c | portp = panelp->ports[k]; |
portp | 614 | drivers/char/stallion.c | if (portp != (stlport_t *) NULL) { |
portp | 615 | drivers/char/stallion.c | if (portp->tty != (struct tty_struct *) NULL) |
portp | 616 | drivers/char/stallion.c | stl_hangup(portp->tty); |
portp | 617 | drivers/char/stallion.c | if (portp->tx.buf != (char *) NULL) |
portp | 618 | drivers/char/stallion.c | kfree_s(portp->tx.buf, STL_TXBUFSIZE); |
portp | 619 | drivers/char/stallion.c | kfree_s(portp, sizeof(stlport_t)); |
portp | 666 | drivers/char/stallion.c | stlport_t *portp; |
portp | 695 | drivers/char/stallion.c | portp = brdp->panels[panelnr]->ports[portnr]; |
portp | 696 | drivers/char/stallion.c | if (portp == (stlport_t *) NULL) |
portp | 703 | drivers/char/stallion.c | portp->tty = tty; |
portp | 704 | drivers/char/stallion.c | tty->driver_data = portp; |
portp | 705 | drivers/char/stallion.c | portp->refcount++; |
portp | 707 | drivers/char/stallion.c | if ((portp->flags & ASYNC_INITIALIZED) == 0) { |
portp | 708 | drivers/char/stallion.c | if (portp->tx.buf == (char *) NULL) { |
portp | 709 | drivers/char/stallion.c | portp->tx.buf = (char *) stl_memalloc(STL_TXBUFSIZE); |
portp | 710 | drivers/char/stallion.c | if (portp->tx.buf == (char *) NULL) |
portp | 712 | drivers/char/stallion.c | portp->tx.head = portp->tx.buf; |
portp | 713 | drivers/char/stallion.c | portp->tx.tail = portp->tx.buf; |
portp | 715 | drivers/char/stallion.c | stl_setport(portp, tty->termios); |
portp | 716 | drivers/char/stallion.c | portp->sigs = stl_getsignals(portp); |
portp | 717 | drivers/char/stallion.c | stl_setsignals(portp, 1, 1); |
portp | 718 | drivers/char/stallion.c | stl_enablerxtx(portp, 1, 1); |
portp | 719 | drivers/char/stallion.c | stl_startrxtx(portp, 1, 0); |
portp | 721 | drivers/char/stallion.c | portp->flags |= ASYNC_INITIALIZED; |
portp | 730 | drivers/char/stallion.c | if (portp->flags & ASYNC_CLOSING) { |
portp | 731 | drivers/char/stallion.c | interruptible_sleep_on(&portp->close_wait); |
portp | 732 | drivers/char/stallion.c | if (portp->flags & ASYNC_HUP_NOTIFY) |
portp | 743 | drivers/char/stallion.c | if (portp->flags & ASYNC_NORMAL_ACTIVE) |
portp | 745 | drivers/char/stallion.c | if (portp->flags & ASYNC_CALLOUT_ACTIVE) { |
portp | 746 | drivers/char/stallion.c | if ((portp->flags & ASYNC_SESSION_LOCKOUT) && |
portp | 747 | drivers/char/stallion.c | (portp->session != current->session)) |
portp | 749 | drivers/char/stallion.c | if ((portp->flags & ASYNC_PGRP_LOCKOUT) && |
portp | 750 | drivers/char/stallion.c | (portp->pgrp != current->pgrp)) |
portp | 753 | drivers/char/stallion.c | portp->flags |= ASYNC_CALLOUT_ACTIVE; |
portp | 756 | drivers/char/stallion.c | if (portp->flags & ASYNC_CALLOUT_ACTIVE) |
portp | 759 | drivers/char/stallion.c | if ((rc = stl_waitcarrier(portp, filp)) != 0) |
portp | 762 | drivers/char/stallion.c | portp->flags |= ASYNC_NORMAL_ACTIVE; |
portp | 765 | drivers/char/stallion.c | if ((portp->refcount == 1) && (portp->flags & ASYNC_SPLIT_TERMIOS)) { |
portp | 767 | drivers/char/stallion.c | *tty->termios = portp->normaltermios; |
portp | 769 | drivers/char/stallion.c | *tty->termios = portp->callouttermios; |
portp | 770 | drivers/char/stallion.c | stl_setport(portp, tty->termios); |
portp | 773 | drivers/char/stallion.c | portp->session = current->session; |
portp | 774 | drivers/char/stallion.c | portp->pgrp = current->pgrp; |
portp | 785 | drivers/char/stallion.c | static int stl_waitcarrier(stlport_t *portp, struct file *filp) |
portp | 791 | drivers/char/stallion.c | printk("stl_waitcarrier(portp=%x,filp=%x)\n", (int) portp, (int) filp); |
portp | 798 | drivers/char/stallion.c | portp->openwaitcnt++; |
portp | 799 | drivers/char/stallion.c | if (portp->refcount > 0) |
portp | 800 | drivers/char/stallion.c | portp->refcount--; |
portp | 803 | drivers/char/stallion.c | if ((portp->flags & ASYNC_CALLOUT_ACTIVE) == 0) |
portp | 804 | drivers/char/stallion.c | stl_setsignals(portp, 1, 1); |
portp | 805 | drivers/char/stallion.c | if (tty_hung_up_p(filp) || ((portp->flags & ASYNC_INITIALIZED) == 0)) { |
portp | 806 | drivers/char/stallion.c | if (portp->flags & ASYNC_HUP_NOTIFY) |
portp | 812 | drivers/char/stallion.c | if (((portp->flags & ASYNC_CALLOUT_ACTIVE) == 0) && |
portp | 813 | drivers/char/stallion.c | ((portp->flags & ASYNC_CLOSING) == 0) && |
portp | 814 | drivers/char/stallion.c | ((portp->tty->termios->c_cflag & CLOCAL) || |
portp | 815 | drivers/char/stallion.c | (portp->sigs & TIOCM_CD))) { |
portp | 822 | drivers/char/stallion.c | interruptible_sleep_on(&portp->open_wait); |
portp | 826 | drivers/char/stallion.c | portp->refcount++; |
portp | 827 | drivers/char/stallion.c | portp->openwaitcnt--; |
portp | 837 | drivers/char/stallion.c | stlport_t *portp; |
portp | 844 | drivers/char/stallion.c | portp = tty->driver_data; |
portp | 845 | drivers/char/stallion.c | if (portp == (stlport_t *) NULL) |
portp | 854 | drivers/char/stallion.c | if (portp->refcount-- > 1) { |
portp | 859 | drivers/char/stallion.c | portp->refcount = 0; |
portp | 860 | drivers/char/stallion.c | portp->flags |= ASYNC_CLOSING; |
portp | 862 | drivers/char/stallion.c | if (portp->flags & ASYNC_NORMAL_ACTIVE) |
portp | 863 | drivers/char/stallion.c | portp->normaltermios = *tty->termios; |
portp | 864 | drivers/char/stallion.c | if (portp->flags & ASYNC_CALLOUT_ACTIVE) |
portp | 865 | drivers/char/stallion.c | portp->callouttermios = *tty->termios; |
portp | 873 | drivers/char/stallion.c | if (test_bit(ASYI_TXBUSY, &portp->istate)) { |
portp | 874 | drivers/char/stallion.c | if (portp->closing_wait != ASYNC_CLOSING_WAIT_NONE) |
portp | 875 | drivers/char/stallion.c | tty_wait_until_sent(tty, portp->closing_wait); |
portp | 878 | drivers/char/stallion.c | portp->flags &= ~ASYNC_INITIALIZED; |
portp | 879 | drivers/char/stallion.c | stl_disableintrs(portp); |
portp | 881 | drivers/char/stallion.c | stl_setsignals(portp, 0, 0); |
portp | 882 | drivers/char/stallion.c | stl_enablerxtx(portp, 0, 0); |
portp | 884 | drivers/char/stallion.c | portp->istate = 0; |
portp | 885 | drivers/char/stallion.c | if (portp->tx.buf != (char *) NULL) { |
portp | 886 | drivers/char/stallion.c | kfree_s(portp->tx.buf, STL_TXBUFSIZE); |
portp | 887 | drivers/char/stallion.c | portp->tx.buf = (char *) NULL; |
portp | 888 | drivers/char/stallion.c | portp->tx.head = (char *) NULL; |
portp | 889 | drivers/char/stallion.c | portp->tx.tail = (char *) NULL; |
portp | 897 | drivers/char/stallion.c | portp->tty = (struct tty_struct *) NULL; |
portp | 899 | drivers/char/stallion.c | if (portp->openwaitcnt) { |
portp | 900 | drivers/char/stallion.c | if (portp->close_delay) |
portp | 901 | drivers/char/stallion.c | stl_delay(portp->close_delay); |
portp | 902 | drivers/char/stallion.c | wake_up_interruptible(&portp->open_wait); |
portp | 905 | drivers/char/stallion.c | portp->flags &= ~(ASYNC_CALLOUT_ACTIVE | ASYNC_NORMAL_ACTIVE | ASYNC_CLOSING); |
portp | 906 | drivers/char/stallion.c | wake_up_interruptible(&portp->close_wait); |
portp | 939 | drivers/char/stallion.c | stlport_t *portp; |
portp | 951 | drivers/char/stallion.c | portp = tty->driver_data; |
portp | 952 | drivers/char/stallion.c | if (portp == (stlport_t *) NULL) |
portp | 954 | drivers/char/stallion.c | if (portp->tx.buf == (char *) NULL) |
portp | 965 | drivers/char/stallion.c | head = portp->tx.head; |
portp | 966 | drivers/char/stallion.c | tail = portp->tx.tail; |
portp | 980 | drivers/char/stallion.c | head = portp->tx.head; |
portp | 981 | drivers/char/stallion.c | tail = portp->tx.tail; |
portp | 984 | drivers/char/stallion.c | stlen = STL_TXBUFSIZE - (head - portp->tx.buf); |
portp | 999 | drivers/char/stallion.c | if (head >= (portp->tx.buf + STL_TXBUFSIZE)) { |
portp | 1000 | drivers/char/stallion.c | head = portp->tx.buf; |
portp | 1004 | drivers/char/stallion.c | portp->tx.head = head; |
portp | 1006 | drivers/char/stallion.c | clear_bit(ASYI_TXLOW, &portp->istate); |
portp | 1007 | drivers/char/stallion.c | stl_startrxtx(portp, -1, 1); |
portp | 1016 | drivers/char/stallion.c | stlport_t *portp; |
portp | 1026 | drivers/char/stallion.c | portp = tty->driver_data; |
portp | 1027 | drivers/char/stallion.c | if (portp == (stlport_t *) NULL) |
portp | 1029 | drivers/char/stallion.c | if (portp->tx.buf == (char *) NULL) |
portp | 1032 | drivers/char/stallion.c | head = portp->tx.head; |
portp | 1033 | drivers/char/stallion.c | tail = portp->tx.tail; |
portp | 1040 | drivers/char/stallion.c | if (head >= (portp->tx.buf + STL_TXBUFSIZE)) |
portp | 1041 | drivers/char/stallion.c | head = portp->tx.buf; |
portp | 1043 | drivers/char/stallion.c | portp->tx.head = head; |
portp | 1056 | drivers/char/stallion.c | stlport_t *portp; |
portp | 1064 | drivers/char/stallion.c | portp = tty->driver_data; |
portp | 1065 | drivers/char/stallion.c | if (portp == (stlport_t *) NULL) |
portp | 1067 | drivers/char/stallion.c | if (portp->tx.buf == (char *) NULL) |
portp | 1071 | drivers/char/stallion.c | if (tty->stopped || tty->hw_stopped || (portp->tx.head == portp->tx.tail)) |
portp | 1074 | drivers/char/stallion.c | stl_startrxtx(portp, -1, 1); |
portp | 1081 | drivers/char/stallion.c | stlport_t *portp; |
portp | 1090 | drivers/char/stallion.c | portp = tty->driver_data; |
portp | 1091 | drivers/char/stallion.c | if (portp == (stlport_t *) NULL) |
portp | 1093 | drivers/char/stallion.c | if (portp->tx.buf == (char *) NULL) |
portp | 1096 | drivers/char/stallion.c | head = portp->tx.head; |
portp | 1097 | drivers/char/stallion.c | tail = portp->tx.tail; |
portp | 1114 | drivers/char/stallion.c | stlport_t *portp; |
portp | 1124 | drivers/char/stallion.c | portp = tty->driver_data; |
portp | 1125 | drivers/char/stallion.c | if (portp == (stlport_t *) NULL) |
portp | 1127 | drivers/char/stallion.c | if (portp->tx.buf == (char *) NULL) |
portp | 1130 | drivers/char/stallion.c | head = portp->tx.head; |
portp | 1131 | drivers/char/stallion.c | tail = portp->tx.tail; |
portp | 1133 | drivers/char/stallion.c | if ((size == 0) && test_bit(ASYI_TXBUSY, &portp->istate)) |
portp | 1144 | drivers/char/stallion.c | static void stl_getserial(stlport_t *portp, struct serial_struct *sp) |
portp | 1150 | drivers/char/stallion.c | printk("stl_getserial(portp=%x,sp=%x)\n", (int) portp, (int) sp); |
portp | 1155 | drivers/char/stallion.c | sio.line = portp->portnr; |
portp | 1156 | drivers/char/stallion.c | sio.port = portp->ioaddr; |
portp | 1157 | drivers/char/stallion.c | sio.flags = portp->flags; |
portp | 1158 | drivers/char/stallion.c | sio.baud_base = portp->baud_base; |
portp | 1159 | drivers/char/stallion.c | sio.close_delay = portp->close_delay; |
portp | 1160 | drivers/char/stallion.c | sio.closing_wait = portp->closing_wait; |
portp | 1161 | drivers/char/stallion.c | sio.custom_divisor = portp->custom_divisor; |
portp | 1165 | drivers/char/stallion.c | brdp = stl_brds[portp->brdnr]; |
portp | 1180 | drivers/char/stallion.c | static int stl_setserial(stlport_t *portp, struct serial_struct *sp) |
portp | 1185 | drivers/char/stallion.c | printk("stl_setserial(portp=%x,sp=%x)\n", (int) portp, (int) sp); |
portp | 1190 | drivers/char/stallion.c | if ((sio.baud_base != portp->baud_base) || |
portp | 1191 | drivers/char/stallion.c | (sio.close_delay != portp->close_delay) || |
portp | 1192 | drivers/char/stallion.c | ((sio.flags & ~ASYNC_USR_MASK) != (portp->flags & ~ASYNC_USR_MASK))) |
portp | 1196 | drivers/char/stallion.c | portp->flags = (portp->flags & ~ASYNC_USR_MASK) | (sio.flags & ASYNC_USR_MASK); |
portp | 1197 | drivers/char/stallion.c | portp->baud_base = sio.baud_base; |
portp | 1198 | drivers/char/stallion.c | portp->close_delay = sio.close_delay; |
portp | 1199 | drivers/char/stallion.c | portp->closing_wait = sio.closing_wait; |
portp | 1200 | drivers/char/stallion.c | portp->custom_divisor = sio.custom_divisor; |
portp | 1201 | drivers/char/stallion.c | stl_setport(portp, portp->tty->termios); |
portp | 1209 | drivers/char/stallion.c | stlport_t *portp; |
portp | 1219 | drivers/char/stallion.c | portp = tty->driver_data; |
portp | 1220 | drivers/char/stallion.c | if (portp == (stlport_t *) NULL) |
portp | 1230 | drivers/char/stallion.c | stl_sendbreak(portp, 250); |
portp | 1236 | drivers/char/stallion.c | stl_sendbreak(portp, (arg ? (arg * 100) : 250)); |
portp | 1251 | drivers/char/stallion.c | val = (unsigned long) stl_getsignals(portp); |
portp | 1258 | drivers/char/stallion.c | stl_setsignals(portp, ((arg & TIOCM_DTR) ? 1 : -1), ((arg & TIOCM_RTS) ? 1 : -1)); |
portp | 1264 | drivers/char/stallion.c | stl_setsignals(portp, ((arg & TIOCM_DTR) ? 0 : -1), ((arg & TIOCM_RTS) ? 0 : -1)); |
portp | 1270 | drivers/char/stallion.c | stl_setsignals(portp, ((arg & TIOCM_DTR) ? 1 : 0), ((arg & TIOCM_RTS) ? 1 : 0)); |
portp | 1275 | drivers/char/stallion.c | stl_getserial(portp, (struct serial_struct *) arg); |
portp | 1279 | drivers/char/stallion.c | rc = stl_setserial(portp, (struct serial_struct *) arg); |
portp | 1283 | drivers/char/stallion.c | rc = stl_getportstats(portp, (comstats_t *) arg); |
portp | 1287 | drivers/char/stallion.c | rc = stl_clrportstats(portp, (comstats_t *) arg); |
portp | 1308 | drivers/char/stallion.c | stlport_t *portp; |
portp | 1317 | drivers/char/stallion.c | portp = tty->driver_data; |
portp | 1318 | drivers/char/stallion.c | if (portp == (stlport_t *) NULL) |
portp | 1325 | drivers/char/stallion.c | stl_setport(portp, tiosp); |
portp | 1326 | drivers/char/stallion.c | stl_setsignals(portp, ((tiosp->c_cflag & (CBAUD & ~CBAUDEX)) ? 1 : 0), -1); |
portp | 1332 | drivers/char/stallion.c | wake_up_interruptible(&portp->open_wait); |
portp | 1344 | drivers/char/stallion.c | stlport_t *portp; |
portp | 1353 | drivers/char/stallion.c | portp = tty->driver_data; |
portp | 1354 | drivers/char/stallion.c | if (portp == (stlport_t *) NULL) |
portp | 1359 | drivers/char/stallion.c | BRDENABLE(portp->brdnr, portp->pagenr); |
portp | 1360 | drivers/char/stallion.c | stl_setreg(portp, CAR, (portp->portnr & 0x03)); |
portp | 1362 | drivers/char/stallion.c | stl_ccrwait(portp); |
portp | 1363 | drivers/char/stallion.c | stl_setreg(portp, CCR, CCR_SENDSCHR2); |
portp | 1364 | drivers/char/stallion.c | portp->stats.rxxoff++; |
portp | 1365 | drivers/char/stallion.c | stl_ccrwait(portp); |
portp | 1368 | drivers/char/stallion.c | stl_setreg(portp, MCOR1, (stl_getreg(portp, MCOR1) & 0xf0)); |
portp | 1369 | drivers/char/stallion.c | stl_setreg(portp, MSVR2, 0); |
portp | 1370 | drivers/char/stallion.c | portp->stats.rxrtsoff++; |
portp | 1372 | drivers/char/stallion.c | BRDDISABLE(portp->brdnr); |
portp | 1384 | drivers/char/stallion.c | stlport_t *portp; |
portp | 1393 | drivers/char/stallion.c | portp = tty->driver_data; |
portp | 1394 | drivers/char/stallion.c | if (portp == (stlport_t *) NULL) |
portp | 1399 | drivers/char/stallion.c | BRDENABLE(portp->brdnr, portp->pagenr); |
portp | 1400 | drivers/char/stallion.c | stl_setreg(portp, CAR, (portp->portnr & 0x03)); |
portp | 1402 | drivers/char/stallion.c | stl_ccrwait(portp); |
portp | 1403 | drivers/char/stallion.c | stl_setreg(portp, CCR, CCR_SENDSCHR1); |
portp | 1404 | drivers/char/stallion.c | portp->stats.rxxon++; |
portp | 1405 | drivers/char/stallion.c | stl_ccrwait(portp); |
portp | 1414 | drivers/char/stallion.c | stl_setreg(portp, MCOR1, (stl_getreg(portp, MCOR1) | FIFO_RTSTHRESHOLD)); |
portp | 1415 | drivers/char/stallion.c | stl_setreg(portp, MSVR2, MSVR2_RTS); |
portp | 1416 | drivers/char/stallion.c | portp->stats.rxrtson++; |
portp | 1418 | drivers/char/stallion.c | BRDDISABLE(portp->brdnr); |
portp | 1431 | drivers/char/stallion.c | stlport_t *portp; |
portp | 1439 | drivers/char/stallion.c | portp = tty->driver_data; |
portp | 1440 | drivers/char/stallion.c | if (portp == (stlport_t *) NULL) |
portp | 1443 | drivers/char/stallion.c | stl_startrxtx(portp, -1, 0); |
portp | 1454 | drivers/char/stallion.c | stlport_t *portp; |
portp | 1462 | drivers/char/stallion.c | portp = tty->driver_data; |
portp | 1463 | drivers/char/stallion.c | if (portp == (stlport_t *) NULL) |
portp | 1466 | drivers/char/stallion.c | stl_startrxtx(portp, -1, 1); |
portp | 1479 | drivers/char/stallion.c | stlport_t *portp; |
portp | 1487 | drivers/char/stallion.c | portp = tty->driver_data; |
portp | 1488 | drivers/char/stallion.c | if (portp == (stlport_t *) NULL) |
portp | 1491 | drivers/char/stallion.c | portp->flags &= ~ASYNC_INITIALIZED; |
portp | 1492 | drivers/char/stallion.c | stl_disableintrs(portp); |
portp | 1494 | drivers/char/stallion.c | stl_setsignals(portp, 0, 0); |
portp | 1495 | drivers/char/stallion.c | stl_enablerxtx(portp, 0, 0); |
portp | 1497 | drivers/char/stallion.c | portp->istate = 0; |
portp | 1499 | drivers/char/stallion.c | if (portp->tx.buf != (char *) NULL) { |
portp | 1500 | drivers/char/stallion.c | kfree_s(portp->tx.buf, STL_TXBUFSIZE); |
portp | 1501 | drivers/char/stallion.c | portp->tx.buf = (char *) NULL; |
portp | 1502 | drivers/char/stallion.c | portp->tx.head = (char *) NULL; |
portp | 1503 | drivers/char/stallion.c | portp->tx.tail = (char *) NULL; |
portp | 1506 | drivers/char/stallion.c | portp->tty = (struct tty_struct *) NULL; |
portp | 1507 | drivers/char/stallion.c | portp->flags &= ~(ASYNC_NORMAL_ACTIVE | ASYNC_CALLOUT_ACTIVE); |
portp | 1508 | drivers/char/stallion.c | portp->refcount = 0; |
portp | 1509 | drivers/char/stallion.c | wake_up_interruptible(&portp->open_wait); |
portp | 1516 | drivers/char/stallion.c | stlport_t *portp; |
portp | 1525 | drivers/char/stallion.c | portp = tty->driver_data; |
portp | 1526 | drivers/char/stallion.c | if (portp == (stlport_t *) NULL) |
portp | 1531 | drivers/char/stallion.c | BRDENABLE(portp->brdnr, portp->pagenr); |
portp | 1532 | drivers/char/stallion.c | stl_setreg(portp, CAR, (portp->portnr & 0x03)); |
portp | 1533 | drivers/char/stallion.c | stl_ccrwait(portp); |
portp | 1534 | drivers/char/stallion.c | stl_setreg(portp, CCR, CCR_TXFLUSHFIFO); |
portp | 1535 | drivers/char/stallion.c | stl_ccrwait(portp); |
portp | 1536 | drivers/char/stallion.c | portp->tx.tail = portp->tx.head; |
portp | 1537 | drivers/char/stallion.c | BRDDISABLE(portp->brdnr); |
portp | 1553 | drivers/char/stallion.c | static int stl_getreg(stlport_t *portp, int regnr) |
portp | 1555 | drivers/char/stallion.c | outb((regnr + portp->uartaddr), portp->ioaddr); |
portp | 1556 | drivers/char/stallion.c | return(inb(portp->ioaddr + EREG_DATA)); |
portp | 1559 | drivers/char/stallion.c | static void stl_setreg(stlport_t *portp, int regnr, int value) |
portp | 1561 | drivers/char/stallion.c | outb((regnr + portp->uartaddr), portp->ioaddr); |
portp | 1562 | drivers/char/stallion.c | outb(value, portp->ioaddr + EREG_DATA); |
portp | 1565 | drivers/char/stallion.c | static int stl_updatereg(stlport_t *portp, int regnr, int value) |
portp | 1567 | drivers/char/stallion.c | outb((regnr + portp->uartaddr), portp->ioaddr); |
portp | 1568 | drivers/char/stallion.c | if (inb(portp->ioaddr + EREG_DATA) != value) { |
portp | 1569 | drivers/char/stallion.c | outb(value, portp->ioaddr + EREG_DATA); |
portp | 1591 | drivers/char/stallion.c | stlport_t *portp; |
portp | 1605 | drivers/char/stallion.c | portp = panelp->ports[(ioack >> 3)]; |
portp | 1612 | drivers/char/stallion.c | if (portp->brklen != 0) { |
portp | 1613 | drivers/char/stallion.c | if (portp->brklen > 0) { |
portp | 1614 | drivers/char/stallion.c | outb((TDR + portp->uartaddr), ioaddr); |
portp | 1619 | drivers/char/stallion.c | outb(portp->brklen, (ioaddr + EREG_DATA)); |
portp | 1622 | drivers/char/stallion.c | portp->brklen = -1; |
portp | 1625 | drivers/char/stallion.c | outb((COR2 + portp->uartaddr), ioaddr); |
portp | 1627 | drivers/char/stallion.c | portp->brklen = 0; |
portp | 1631 | drivers/char/stallion.c | head = portp->tx.head; |
portp | 1632 | drivers/char/stallion.c | tail = portp->tx.tail; |
portp | 1634 | drivers/char/stallion.c | if ((len == 0) || ((len < STL_TXBUFLOW) && (test_bit(ASYI_TXLOW, &portp->istate) == 0))) { |
portp | 1635 | drivers/char/stallion.c | set_bit(ASYI_TXLOW, &portp->istate); |
portp | 1636 | drivers/char/stallion.c | queue_task_irq_off(&portp->tqueue, &tq_scheduler); |
portp | 1640 | drivers/char/stallion.c | outb((SRER + portp->uartaddr), ioaddr); |
portp | 1646 | drivers/char/stallion.c | clear_bit(ASYI_TXBUSY, &portp->istate); |
portp | 1651 | drivers/char/stallion.c | portp->stats.txtotal += len; |
portp | 1652 | drivers/char/stallion.c | stlen = MIN(len, ((portp->tx.buf + STL_TXBUFSIZE) - tail)); |
portp | 1653 | drivers/char/stallion.c | outb((TDR + portp->uartaddr), ioaddr); |
portp | 1657 | drivers/char/stallion.c | if (tail >= (portp->tx.buf + STL_TXBUFSIZE)) |
portp | 1658 | drivers/char/stallion.c | tail = portp->tx.buf; |
portp | 1663 | drivers/char/stallion.c | portp->tx.tail = tail; |
portp | 1667 | drivers/char/stallion.c | outb((EOSRR + portp->uartaddr), ioaddr); |
portp | 1685 | drivers/char/stallion.c | stlport_t *portp; |
portp | 1701 | drivers/char/stallion.c | portp = panelp->ports[(ioack >> 3)]; |
portp | 1702 | drivers/char/stallion.c | tty = portp->tty; |
portp | 1705 | drivers/char/stallion.c | outb((RDCR + portp->uartaddr), ioaddr); |
portp | 1709 | drivers/char/stallion.c | outb((RDSR + portp->uartaddr), ioaddr); |
portp | 1711 | drivers/char/stallion.c | portp->stats.rxlost += len; |
portp | 1712 | drivers/char/stallion.c | portp->stats.rxtotal += len; |
portp | 1716 | drivers/char/stallion.c | outb((RDSR + portp->uartaddr), ioaddr); |
portp | 1723 | drivers/char/stallion.c | portp->stats.rxtotal += len; |
portp | 1727 | drivers/char/stallion.c | outb((RDSR + portp->uartaddr), ioaddr); |
portp | 1731 | drivers/char/stallion.c | portp->stats.rxparity++; |
portp | 1733 | drivers/char/stallion.c | portp->stats.rxframing++; |
portp | 1735 | drivers/char/stallion.c | portp->stats.rxoverrun++; |
portp | 1737 | drivers/char/stallion.c | portp->stats.rxbreaks++; |
portp | 1740 | drivers/char/stallion.c | portp->stats.txxon++; |
portp | 1742 | drivers/char/stallion.c | portp->stats.txxoff++; |
portp | 1745 | drivers/char/stallion.c | if ((tty != (struct tty_struct *) NULL) && ((portp->rxignoremsk & status) == 0)) { |
portp | 1746 | drivers/char/stallion.c | if (portp->rxmarkmsk & status) { |
portp | 1750 | drivers/char/stallion.c | if (portp->flags & ASYNC_SAK) |
portp | 1780 | drivers/char/stallion.c | outb((EOSRR + portp->uartaddr), ioaddr); |
portp | 1794 | drivers/char/stallion.c | stlport_t *portp; |
portp | 1807 | drivers/char/stallion.c | portp = panelp->ports[(ioack >> 3)]; |
portp | 1809 | drivers/char/stallion.c | outb((MISR + portp->uartaddr), ioaddr); |
portp | 1812 | drivers/char/stallion.c | set_bit(ASYI_DCDCHANGE, &portp->istate); |
portp | 1813 | drivers/char/stallion.c | queue_task_irq_off(&portp->tqueue, &tq_scheduler); |
portp | 1814 | drivers/char/stallion.c | portp->stats.modem++; |
portp | 1817 | drivers/char/stallion.c | outb((EOSRR + portp->uartaddr), ioaddr); |
portp | 1971 | drivers/char/stallion.c | stlport_t *portp; |
portp | 1975 | drivers/char/stallion.c | portp = private; |
portp | 1977 | drivers/char/stallion.c | printk("stl_offintr(portp=%x)\n", (int) portp); |
portp | 1980 | drivers/char/stallion.c | if (portp == (stlport_t *) NULL) |
portp | 1982 | drivers/char/stallion.c | tty = portp->tty; |
portp | 1986 | drivers/char/stallion.c | if (test_bit(ASYI_TXLOW, &portp->istate)) { |
portp | 1991 | drivers/char/stallion.c | if (test_bit(ASYI_DCDCHANGE, &portp->istate)) { |
portp | 1992 | drivers/char/stallion.c | clear_bit(ASYI_DCDCHANGE, &portp->istate); |
portp | 1993 | drivers/char/stallion.c | oldsigs = portp->sigs; |
portp | 1994 | drivers/char/stallion.c | portp->sigs = stl_getsignals(portp); |
portp | 1995 | drivers/char/stallion.c | if ((portp->sigs & TIOCM_CD) && ((oldsigs & TIOCM_CD) == 0)) |
portp | 1996 | drivers/char/stallion.c | wake_up_interruptible(&portp->open_wait); |
portp | 1997 | drivers/char/stallion.c | if ((oldsigs & TIOCM_CD) && ((portp->sigs & TIOCM_CD) == 0)) { |
portp | 1998 | drivers/char/stallion.c | if (! ((portp->flags & ASYNC_CALLOUT_ACTIVE) && |
portp | 1999 | drivers/char/stallion.c | (portp->flags & ASYNC_CALLOUT_NOHUP))) { |
portp | 2013 | drivers/char/stallion.c | static void stl_ccrwait(stlport_t *portp) |
portp | 2018 | drivers/char/stallion.c | if (stl_getreg(portp, CCR) == 0) { |
portp | 2023 | drivers/char/stallion.c | printk("STALLION: cd1400 device not responding, port=%d panel=%d brd=%d\n", portp->portnr, portp->panelnr, portp->brdnr); |
portp | 2033 | drivers/char/stallion.c | static void stl_setport(stlport_t *portp, struct termios *tiosp) |
portp | 2058 | drivers/char/stallion.c | brdp = stl_brds[portp->brdnr]; |
portp | 2067 | drivers/char/stallion.c | portp->rxignoremsk = 0; |
portp | 2069 | drivers/char/stallion.c | portp->rxignoremsk |= (ST_PARITY | ST_FRAMING | ST_OVERRUN); |
portp | 2073 | drivers/char/stallion.c | portp->rxignoremsk |= ST_BREAK; |
portp | 2077 | drivers/char/stallion.c | portp->rxmarkmsk = ST_OVERRUN; |
portp | 2079 | drivers/char/stallion.c | portp->rxmarkmsk |= (ST_PARITY | ST_FRAMING); |
portp | 2081 | drivers/char/stallion.c | portp->rxmarkmsk |= ST_BREAK; |
portp | 2141 | drivers/char/stallion.c | if ((portp->flags & ASYNC_SPD_MASK) == ASYNC_SPD_HI) |
portp | 2143 | drivers/char/stallion.c | else if ((portp->flags & ASYNC_SPD_MASK) == ASYNC_SPD_VHI) |
portp | 2145 | drivers/char/stallion.c | else if ((portp->flags & ASYNC_SPD_MASK) == ASYNC_SPD_CUST) |
portp | 2146 | drivers/char/stallion.c | baudrate = (portp->baud_base / portp->custom_divisor); |
portp | 2153 | drivers/char/stallion.c | clkdiv = ((portp->clk / stl_cd1400clkdivs[clk]) / baudrate); |
portp | 2193 | drivers/char/stallion.c | printk("SETPORT: portnr=%d panelnr=%d brdnr=%d\n", portp->portnr, portp->panelnr, portp->brdnr); |
portp | 2202 | drivers/char/stallion.c | BRDENABLE(portp->brdnr, portp->pagenr); |
portp | 2203 | drivers/char/stallion.c | stl_setreg(portp, CAR, (portp->portnr & 0x3)); |
portp | 2204 | drivers/char/stallion.c | srer = stl_getreg(portp, SRER); |
portp | 2205 | drivers/char/stallion.c | stl_setreg(portp, SRER, 0); |
portp | 2206 | drivers/char/stallion.c | if (stl_updatereg(portp, COR1, cor1)) |
portp | 2208 | drivers/char/stallion.c | if (stl_updatereg(portp, COR2, cor2)) |
portp | 2210 | drivers/char/stallion.c | if (stl_updatereg(portp, COR3, cor3)) |
portp | 2213 | drivers/char/stallion.c | stl_ccrwait(portp); |
portp | 2214 | drivers/char/stallion.c | stl_setreg(portp, CCR, CCR_CORCHANGE); |
portp | 2216 | drivers/char/stallion.c | stl_setreg(portp, COR4, cor4); |
portp | 2217 | drivers/char/stallion.c | stl_setreg(portp, COR5, cor5); |
portp | 2218 | drivers/char/stallion.c | stl_setreg(portp, MCOR1, mcor1); |
portp | 2219 | drivers/char/stallion.c | stl_setreg(portp, MCOR2, mcor2); |
portp | 2221 | drivers/char/stallion.c | stl_setreg(portp, TCOR, clk); |
portp | 2222 | drivers/char/stallion.c | stl_setreg(portp, TBPR, div); |
portp | 2223 | drivers/char/stallion.c | stl_setreg(portp, RCOR, clk); |
portp | 2224 | drivers/char/stallion.c | stl_setreg(portp, RBPR, div); |
portp | 2226 | drivers/char/stallion.c | stl_setreg(portp, SCHR1, tiosp->c_cc[VSTART]); |
portp | 2227 | drivers/char/stallion.c | stl_setreg(portp, SCHR2, tiosp->c_cc[VSTOP]); |
portp | 2228 | drivers/char/stallion.c | stl_setreg(portp, SCHR3, tiosp->c_cc[VSTART]); |
portp | 2229 | drivers/char/stallion.c | stl_setreg(portp, SCHR4, tiosp->c_cc[VSTOP]); |
portp | 2230 | drivers/char/stallion.c | stl_setreg(portp, RTPR, rtpr); |
portp | 2231 | drivers/char/stallion.c | mcor1 = stl_getreg(portp, MSVR1); |
portp | 2233 | drivers/char/stallion.c | portp->sigs |= TIOCM_CD; |
portp | 2235 | drivers/char/stallion.c | portp->sigs &= ~TIOCM_CD; |
portp | 2236 | drivers/char/stallion.c | stl_setreg(portp, SRER, ((srer & ~sreroff) | sreron)); |
portp | 2237 | drivers/char/stallion.c | BRDDISABLE(portp->brdnr); |
portp | 2247 | drivers/char/stallion.c | static void stl_setsignals(stlport_t *portp, int dtr, int rts) |
portp | 2253 | drivers/char/stallion.c | printk("stl_setsignals(portp=%x,dtr=%d,rts=%d)\n", (int) portp, dtr, rts); |
portp | 2265 | drivers/char/stallion.c | BRDENABLE(portp->brdnr, portp->pagenr); |
portp | 2266 | drivers/char/stallion.c | stl_setreg(portp, CAR, (portp->portnr & 0x03)); |
portp | 2268 | drivers/char/stallion.c | stl_setreg(portp, MSVR2, msvr2); |
portp | 2270 | drivers/char/stallion.c | stl_setreg(portp, MSVR1, msvr1); |
portp | 2271 | drivers/char/stallion.c | BRDDISABLE(portp->brdnr); |
portp | 2281 | drivers/char/stallion.c | static int stl_getsignals(stlport_t *portp) |
portp | 2288 | drivers/char/stallion.c | printk("stl_getsignals(portp=%x)\n", (int) portp); |
portp | 2293 | drivers/char/stallion.c | BRDENABLE(portp->brdnr, portp->pagenr); |
portp | 2294 | drivers/char/stallion.c | stl_setreg(portp, CAR, (portp->portnr & 0x03)); |
portp | 2295 | drivers/char/stallion.c | msvr1 = stl_getreg(portp, MSVR1); |
portp | 2296 | drivers/char/stallion.c | msvr2 = stl_getreg(portp, MSVR2); |
portp | 2297 | drivers/char/stallion.c | BRDDISABLE(portp->brdnr); |
portp | 2315 | drivers/char/stallion.c | static void stl_enablerxtx(stlport_t *portp, int rx, int tx) |
portp | 2321 | drivers/char/stallion.c | printk("stl_enablerxtx(portp=%x,rx=%d,tx=%d)\n", (int) portp, rx, tx); |
portp | 2336 | drivers/char/stallion.c | BRDENABLE(portp->brdnr, portp->pagenr); |
portp | 2337 | drivers/char/stallion.c | stl_setreg(portp, CAR, (portp->portnr & 0x03)); |
portp | 2338 | drivers/char/stallion.c | stl_ccrwait(portp); |
portp | 2339 | drivers/char/stallion.c | stl_setreg(portp, CCR, ccr); |
portp | 2340 | drivers/char/stallion.c | stl_ccrwait(portp); |
portp | 2341 | drivers/char/stallion.c | BRDDISABLE(portp->brdnr); |
portp | 2351 | drivers/char/stallion.c | static void stl_startrxtx(stlport_t *portp, int rx, int tx) |
portp | 2357 | drivers/char/stallion.c | printk("stl_startrxtx(portp=%x,rx=%d,tx=%d)\n", (int) portp, rx, tx); |
portp | 2375 | drivers/char/stallion.c | BRDENABLE(portp->brdnr, portp->pagenr); |
portp | 2376 | drivers/char/stallion.c | stl_setreg(portp, CAR, (portp->portnr & 0x03)); |
portp | 2377 | drivers/char/stallion.c | stl_setreg(portp, SRER, ((stl_getreg(portp, SRER) & ~sreroff) | sreron)); |
portp | 2378 | drivers/char/stallion.c | BRDDISABLE(portp->brdnr); |
portp | 2380 | drivers/char/stallion.c | set_bit(ASYI_TXBUSY, &portp->istate); |
portp | 2390 | drivers/char/stallion.c | static void stl_disableintrs(stlport_t *portp) |
portp | 2395 | drivers/char/stallion.c | printk("stl_disableintrs(portp=%x)\n", (int) portp); |
portp | 2399 | drivers/char/stallion.c | BRDENABLE(portp->brdnr, portp->pagenr); |
portp | 2400 | drivers/char/stallion.c | stl_setreg(portp, CAR, (portp->portnr & 0x03)); |
portp | 2401 | drivers/char/stallion.c | stl_setreg(portp, SRER, 0); |
portp | 2402 | drivers/char/stallion.c | BRDDISABLE(portp->brdnr); |
portp | 2408 | drivers/char/stallion.c | static void stl_sendbreak(stlport_t *portp, long len) |
portp | 2413 | drivers/char/stallion.c | printk("stl_sendbreak(portp=%x,len=%d)\n", (int) portp, (int) len); |
portp | 2418 | drivers/char/stallion.c | BRDENABLE(portp->brdnr, portp->pagenr); |
portp | 2419 | drivers/char/stallion.c | stl_setreg(portp, CAR, (portp->portnr & 0x03)); |
portp | 2420 | drivers/char/stallion.c | stl_setreg(portp, COR2, (stl_getreg(portp, COR2) | COR2_ETC)); |
portp | 2421 | drivers/char/stallion.c | stl_setreg(portp, SRER, ((stl_getreg(portp, SRER) & ~SRER_TXDATA) | SRER_TXEMPTY)); |
portp | 2422 | drivers/char/stallion.c | BRDDISABLE(portp->brdnr); |
portp | 2424 | drivers/char/stallion.c | portp->brklen = (len > 255) ? 255 : len; |
portp | 2425 | drivers/char/stallion.c | portp->stats.txbreaks++; |
portp | 2471 | drivers/char/stallion.c | stlport_t *portp; |
portp | 2530 | drivers/char/stallion.c | portp = (stlport_t *) stl_memalloc(sizeof(stlport_t)); |
portp | 2531 | drivers/char/stallion.c | if (portp == (stlport_t *) NULL) { |
portp | 2535 | drivers/char/stallion.c | memset(portp, 0, sizeof(stlport_t)); |
portp | 2536 | drivers/char/stallion.c | portp->portnr = i; |
portp | 2537 | drivers/char/stallion.c | portp->brdnr = panelp->brdnr; |
portp | 2538 | drivers/char/stallion.c | portp->panelnr = panelp->panelnr; |
portp | 2539 | drivers/char/stallion.c | portp->ioaddr = ioaddr; |
portp | 2540 | drivers/char/stallion.c | portp->uartaddr = (i & 0x04) << 5; |
portp | 2541 | drivers/char/stallion.c | portp->pagenr = panelp->pagenr + (i >> 3); |
portp | 2542 | drivers/char/stallion.c | portp->clk = brdp->clk; |
portp | 2543 | drivers/char/stallion.c | portp->baud_base = STL_BAUDBASE; |
portp | 2544 | drivers/char/stallion.c | portp->close_delay = STL_CLOSEDELAY; |
portp | 2545 | drivers/char/stallion.c | portp->closing_wait = 30 * HZ; |
portp | 2546 | drivers/char/stallion.c | portp->normaltermios = stl_deftermios; |
portp | 2547 | drivers/char/stallion.c | portp->callouttermios = stl_deftermios; |
portp | 2548 | drivers/char/stallion.c | portp->tqueue.routine = stl_offintr; |
portp | 2549 | drivers/char/stallion.c | portp->tqueue.data = portp; |
portp | 2550 | drivers/char/stallion.c | portp->stats.brd = portp->brdnr; |
portp | 2551 | drivers/char/stallion.c | portp->stats.panel = portp->panelnr; |
portp | 2552 | drivers/char/stallion.c | portp->stats.port = portp->portnr; |
portp | 2553 | drivers/char/stallion.c | stl_setreg(portp, CAR, (i & 0x03)); |
portp | 2554 | drivers/char/stallion.c | stl_setreg(portp, LIVR, (i << 3)); |
portp | 2555 | drivers/char/stallion.c | portp->hwid = stl_getreg(portp, GFRCR); |
portp | 2556 | drivers/char/stallion.c | panelp->ports[i] = portp; |
portp | 3020 | drivers/char/stallion.c | static int stl_getportstats(stlport_t *portp, comstats_t *cp) |
portp | 3024 | drivers/char/stallion.c | if (portp == (stlport_t *) NULL) { |
portp | 3026 | drivers/char/stallion.c | portp = stl_getport(stl_comstats.brd, stl_comstats.panel, stl_comstats.port); |
portp | 3027 | drivers/char/stallion.c | if (portp == (stlport_t *) NULL) |
portp | 3031 | drivers/char/stallion.c | portp->stats.state = portp->istate; |
portp | 3032 | drivers/char/stallion.c | portp->stats.flags = portp->flags; |
portp | 3033 | drivers/char/stallion.c | portp->stats.hwid = portp->hwid; |
portp | 3034 | drivers/char/stallion.c | if (portp->tty != (struct tty_struct *) NULL) { |
portp | 3035 | drivers/char/stallion.c | portp->stats.ttystate = portp->tty->flags; |
portp | 3036 | drivers/char/stallion.c | portp->stats.cflags = portp->tty->termios->c_cflag; |
portp | 3037 | drivers/char/stallion.c | portp->stats.iflags = portp->tty->termios->c_iflag; |
portp | 3038 | drivers/char/stallion.c | portp->stats.oflags = portp->tty->termios->c_oflag; |
portp | 3039 | drivers/char/stallion.c | portp->stats.lflags = portp->tty->termios->c_lflag; |
portp | 3040 | drivers/char/stallion.c | portp->stats.rxbuffered = portp->tty->flip.count; |
portp | 3042 | drivers/char/stallion.c | portp->stats.ttystate = 0; |
portp | 3043 | drivers/char/stallion.c | portp->stats.cflags = 0; |
portp | 3044 | drivers/char/stallion.c | portp->stats.iflags = 0; |
portp | 3045 | drivers/char/stallion.c | portp->stats.oflags = 0; |
portp | 3046 | drivers/char/stallion.c | portp->stats.lflags = 0; |
portp | 3047 | drivers/char/stallion.c | portp->stats.rxbuffered = 0; |
portp | 3050 | drivers/char/stallion.c | head = portp->tx.head; |
portp | 3051 | drivers/char/stallion.c | tail = portp->tx.tail; |
portp | 3052 | drivers/char/stallion.c | portp->stats.txbuffered = ((head >= tail) ? (head - tail) : (STL_TXBUFSIZE - (tail - head))); |
portp | 3054 | drivers/char/stallion.c | portp->stats.signals = (unsigned long) stl_getsignals(portp); |
portp | 3056 | drivers/char/stallion.c | memcpy_tofs(cp, &portp->stats, sizeof(comstats_t)); |
portp | 3066 | drivers/char/stallion.c | static int stl_clrportstats(stlport_t *portp, comstats_t *cp) |
portp | 3068 | drivers/char/stallion.c | if (portp == (stlport_t *) NULL) { |
portp | 3070 | drivers/char/stallion.c | portp = stl_getport(stl_comstats.brd, stl_comstats.panel, stl_comstats.port); |
portp | 3071 | drivers/char/stallion.c | if (portp == (stlport_t *) NULL) |
portp | 3075 | drivers/char/stallion.c | memset(&portp->stats, 0, sizeof(comstats_t)); |
portp | 3076 | drivers/char/stallion.c | portp->stats.brd = portp->brdnr; |
portp | 3077 | drivers/char/stallion.c | portp->stats.panel = portp->panelnr; |
portp | 3078 | drivers/char/stallion.c | portp->stats.port = portp->portnr; |
portp | 3079 | drivers/char/stallion.c | memcpy_tofs(cp, &portp->stats, sizeof(comstats_t)); |