.. | .. |
---|
1637 | 1637 | return result; |
---|
1638 | 1638 | } |
---|
1639 | 1639 | |
---|
1640 | | -static int get_serial_info(struct edgeport_port *edge_port, |
---|
1641 | | - struct serial_struct __user *retinfo) |
---|
| 1640 | +static int get_serial_info(struct tty_struct *tty, |
---|
| 1641 | + struct serial_struct *ss) |
---|
1642 | 1642 | { |
---|
1643 | | - struct serial_struct tmp; |
---|
| 1643 | + struct usb_serial_port *port = tty->driver_data; |
---|
| 1644 | + struct edgeport_port *edge_port = usb_get_serial_port_data(port); |
---|
1644 | 1645 | |
---|
1645 | | - memset(&tmp, 0, sizeof(tmp)); |
---|
1646 | | - |
---|
1647 | | - tmp.type = PORT_16550A; |
---|
1648 | | - tmp.line = edge_port->port->minor; |
---|
1649 | | - tmp.port = edge_port->port->port_number; |
---|
1650 | | - tmp.irq = 0; |
---|
1651 | | - tmp.xmit_fifo_size = edge_port->maxTxCredits; |
---|
1652 | | - tmp.baud_base = 9600; |
---|
1653 | | - tmp.close_delay = 5*HZ; |
---|
1654 | | - tmp.closing_wait = 30*HZ; |
---|
1655 | | - |
---|
1656 | | - if (copy_to_user(retinfo, &tmp, sizeof(*retinfo))) |
---|
1657 | | - return -EFAULT; |
---|
| 1646 | + ss->type = PORT_16550A; |
---|
| 1647 | + ss->line = edge_port->port->minor; |
---|
| 1648 | + ss->port = edge_port->port->port_number; |
---|
| 1649 | + ss->irq = 0; |
---|
| 1650 | + ss->xmit_fifo_size = edge_port->maxTxCredits; |
---|
| 1651 | + ss->baud_base = 9600; |
---|
| 1652 | + ss->close_delay = 5*HZ; |
---|
| 1653 | + ss->closing_wait = 30*HZ; |
---|
1658 | 1654 | return 0; |
---|
1659 | 1655 | } |
---|
1660 | 1656 | |
---|
.. | .. |
---|
1667 | 1663 | unsigned int cmd, unsigned long arg) |
---|
1668 | 1664 | { |
---|
1669 | 1665 | struct usb_serial_port *port = tty->driver_data; |
---|
1670 | | - DEFINE_WAIT(wait); |
---|
1671 | 1666 | struct edgeport_port *edge_port = usb_get_serial_port_data(port); |
---|
1672 | 1667 | |
---|
1673 | 1668 | switch (cmd) { |
---|
1674 | 1669 | case TIOCSERGETLSR: |
---|
1675 | 1670 | dev_dbg(&port->dev, "%s TIOCSERGETLSR\n", __func__); |
---|
1676 | 1671 | return get_lsr_info(edge_port, (unsigned int __user *) arg); |
---|
1677 | | - |
---|
1678 | | - case TIOCGSERIAL: |
---|
1679 | | - dev_dbg(&port->dev, "%s TIOCGSERIAL\n", __func__); |
---|
1680 | | - return get_serial_info(edge_port, (struct serial_struct __user *) arg); |
---|
1681 | 1672 | } |
---|
1682 | 1673 | return -ENOIOCTLCMD; |
---|
1683 | 1674 | } |
---|
.. | .. |
---|
1761 | 1752 | edge_serial->rxState = EXPECT_HDR2; |
---|
1762 | 1753 | break; |
---|
1763 | 1754 | } |
---|
1764 | | - /* otherwise, drop on through */ |
---|
| 1755 | + fallthrough; |
---|
1765 | 1756 | case EXPECT_HDR2: |
---|
1766 | 1757 | edge_serial->rxHeader2 = *buffer; |
---|
1767 | 1758 | ++buffer; |
---|
.. | .. |
---|
1800 | 1791 | edge_serial->rxHeader2, 0); |
---|
1801 | 1792 | edge_serial->rxState = EXPECT_HDR1; |
---|
1802 | 1793 | break; |
---|
1803 | | - } else { |
---|
1804 | | - edge_serial->rxPort = |
---|
1805 | | - IOSP_GET_HDR_PORT(edge_serial->rxHeader1); |
---|
1806 | | - edge_serial->rxBytesRemaining = |
---|
1807 | | - IOSP_GET_HDR_DATA_LEN( |
---|
1808 | | - edge_serial->rxHeader1, |
---|
1809 | | - edge_serial->rxHeader2); |
---|
1810 | | - dev_dbg(dev, "%s - Data for Port %u Len %u\n", |
---|
1811 | | - __func__, |
---|
1812 | | - edge_serial->rxPort, |
---|
1813 | | - edge_serial->rxBytesRemaining); |
---|
1814 | | - |
---|
1815 | | - /* ASSERT(DevExt->RxPort < DevExt->NumPorts); |
---|
1816 | | - * ASSERT(DevExt->RxBytesRemaining < |
---|
1817 | | - * IOSP_MAX_DATA_LENGTH); |
---|
1818 | | - */ |
---|
1819 | | - |
---|
1820 | | - if (bufferLength == 0) { |
---|
1821 | | - edge_serial->rxState = EXPECT_DATA; |
---|
1822 | | - break; |
---|
1823 | | - } |
---|
1824 | | - /* Else, drop through */ |
---|
1825 | 1794 | } |
---|
| 1795 | + |
---|
| 1796 | + edge_serial->rxPort = IOSP_GET_HDR_PORT(edge_serial->rxHeader1); |
---|
| 1797 | + edge_serial->rxBytesRemaining = IOSP_GET_HDR_DATA_LEN(edge_serial->rxHeader1, |
---|
| 1798 | + edge_serial->rxHeader2); |
---|
| 1799 | + dev_dbg(dev, "%s - Data for Port %u Len %u\n", __func__, |
---|
| 1800 | + edge_serial->rxPort, |
---|
| 1801 | + edge_serial->rxBytesRemaining); |
---|
| 1802 | + |
---|
| 1803 | + if (bufferLength == 0) { |
---|
| 1804 | + edge_serial->rxState = EXPECT_DATA; |
---|
| 1805 | + break; |
---|
| 1806 | + } |
---|
| 1807 | + fallthrough; |
---|
1826 | 1808 | case EXPECT_DATA: /* Expect data */ |
---|
1827 | 1809 | if (bufferLength < edge_serial->rxBytesRemaining) { |
---|
1828 | 1810 | rxLen = bufferLength; |
---|
.. | .. |
---|
3136 | 3118 | .set_termios = edge_set_termios, |
---|
3137 | 3119 | .tiocmget = edge_tiocmget, |
---|
3138 | 3120 | .tiocmset = edge_tiocmset, |
---|
| 3121 | + .get_serial = get_serial_info, |
---|
3139 | 3122 | .tiocmiwait = usb_serial_generic_tiocmiwait, |
---|
3140 | 3123 | .get_icount = usb_serial_generic_get_icount, |
---|
3141 | 3124 | .write = edge_write, |
---|
.. | .. |
---|
3171 | 3154 | .set_termios = edge_set_termios, |
---|
3172 | 3155 | .tiocmget = edge_tiocmget, |
---|
3173 | 3156 | .tiocmset = edge_tiocmset, |
---|
| 3157 | + .get_serial = get_serial_info, |
---|
3174 | 3158 | .tiocmiwait = usb_serial_generic_tiocmiwait, |
---|
3175 | 3159 | .get_icount = usb_serial_generic_get_icount, |
---|
3176 | 3160 | .write = edge_write, |
---|
.. | .. |
---|
3206 | 3190 | .set_termios = edge_set_termios, |
---|
3207 | 3191 | .tiocmget = edge_tiocmget, |
---|
3208 | 3192 | .tiocmset = edge_tiocmset, |
---|
| 3193 | + .get_serial = get_serial_info, |
---|
3209 | 3194 | .tiocmiwait = usb_serial_generic_tiocmiwait, |
---|
3210 | 3195 | .get_icount = usb_serial_generic_get_icount, |
---|
3211 | 3196 | .write = edge_write, |
---|
.. | .. |
---|
3241 | 3226 | .set_termios = edge_set_termios, |
---|
3242 | 3227 | .tiocmget = edge_tiocmget, |
---|
3243 | 3228 | .tiocmset = edge_tiocmset, |
---|
| 3229 | + .get_serial = get_serial_info, |
---|
3244 | 3230 | .tiocmiwait = usb_serial_generic_tiocmiwait, |
---|
3245 | 3231 | .get_icount = usb_serial_generic_get_icount, |
---|
3246 | 3232 | .write = edge_write, |
---|