hc
2023-12-11 6778948f9de86c3cfaf36725a7c87dcff9ba247f
kernel/drivers/usb/serial/f81534.c
....@@ -538,9 +538,6 @@
538538
539539 static u32 f81534_calc_baud_divisor(u32 baudrate, u32 clockrate)
540540 {
541
- if (!baudrate)
542
- return 0;
543
-
544541 /* Round to nearest divisor */
545542 return DIV_ROUND_CLOSEST(clockrate, baudrate);
546543 }
....@@ -570,9 +567,14 @@
570567 u32 baud_list[] = {baudrate, old_baudrate, F81534_DEFAULT_BAUD_RATE};
571568
572569 for (i = 0; i < ARRAY_SIZE(baud_list); ++i) {
573
- idx = f81534_find_clk(baud_list[i]);
570
+ baudrate = baud_list[i];
571
+ if (baudrate == 0) {
572
+ tty_encode_baud_rate(tty, 0, 0);
573
+ return 0;
574
+ }
575
+
576
+ idx = f81534_find_clk(baudrate);
574577 if (idx >= 0) {
575
- baudrate = baud_list[i];
576578 tty_encode_baud_rate(tty, baudrate, baudrate);
577579 break;
578580 }
....@@ -1142,41 +1144,19 @@
11421144 mutex_unlock(&serial_priv->urb_mutex);
11431145 }
11441146
1145
-static int f81534_get_serial_info(struct usb_serial_port *port,
1146
- struct serial_struct __user *retinfo)
1147
+static int f81534_get_serial_info(struct tty_struct *tty,
1148
+ struct serial_struct *ss)
11471149 {
1150
+ struct usb_serial_port *port = tty->driver_data;
11481151 struct f81534_port_private *port_priv;
1149
- struct serial_struct tmp;
11501152
11511153 port_priv = usb_get_serial_port_data(port);
11521154
1153
- memset(&tmp, 0, sizeof(tmp));
1154
-
1155
- tmp.type = PORT_16550A;
1156
- tmp.port = port->port_number;
1157
- tmp.line = port->minor;
1158
- tmp.baud_base = port_priv->baud_base;
1159
-
1160
- if (copy_to_user(retinfo, &tmp, sizeof(*retinfo)))
1161
- return -EFAULT;
1162
-
1155
+ ss->type = PORT_16550A;
1156
+ ss->port = port->port_number;
1157
+ ss->line = port->minor;
1158
+ ss->baud_base = port_priv->baud_base;
11631159 return 0;
1164
-}
1165
-
1166
-static int f81534_ioctl(struct tty_struct *tty, unsigned int cmd,
1167
- unsigned long arg)
1168
-{
1169
- struct usb_serial_port *port = tty->driver_data;
1170
- struct serial_struct __user *buf = (struct serial_struct __user *)arg;
1171
-
1172
- switch (cmd) {
1173
- case TIOCGSERIAL:
1174
- return f81534_get_serial_info(port, buf);
1175
- default:
1176
- break;
1177
- }
1178
-
1179
- return -ENOIOCTLCMD;
11801160 }
11811161
11821162 static void f81534_process_per_serial_block(struct usb_serial_port *port,
....@@ -1260,7 +1240,7 @@
12601240 schedule_work(&port_priv->lsr_work);
12611241 }
12621242
1263
- if (port->port.console && port->sysrq) {
1243
+ if (port->sysrq) {
12641244 if (usb_serial_handle_sysrq_char(port, data[i]))
12651245 continue;
12661246 }
....@@ -1595,7 +1575,7 @@
15951575 .break_ctl = f81534_break_ctl,
15961576 .dtr_rts = f81534_dtr_rts,
15971577 .process_read_urb = f81534_process_read_urb,
1598
- .ioctl = f81534_ioctl,
1578
+ .get_serial = f81534_get_serial_info,
15991579 .tiocmget = f81534_tiocmget,
16001580 .tiocmset = f81534_tiocmset,
16011581 .write_bulk_callback = f81534_write_usb_callback,