Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752348AbdLMJav (ORCPT ); Wed, 13 Dec 2017 04:30:51 -0500 Received: from smtp37.i.mail.ru ([94.100.177.97]:42900 "EHLO smtp37.i.mail.ru" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751540AbdLMJa1 (ORCPT ); Wed, 13 Dec 2017 04:30:27 -0500 Date: Wed, 13 Dec 2017 12:30:04 +0300 From: Mikhail Zaytsev To: Johan Hovold Cc: Greg Kroah-Hartman , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] USB: serial: ark3116.c: Remove unused TIOCSSERIAL case from ioctl Message-ID: <20171213123004.4619000a@zaytsev.tver.pg> X-Mailer: Claws Mail 3.14.1 (GTK+ 2.24.31; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Authentication-Results: smtp37.i.mail.ru; auth=pass smtp.auth=flashed@mail.ru smtp.mailfrom=flashed@mail.ru X-7FA49CB5: 0D63561A33F958A5FEB74052EA3808397E37F76C58D653F3A537D36C90B8574F725E5C173C3A84C3F4F21260D2B1B5D7ABA9C588C38F4710444A83B712AC0148C4224003CC836476C0CAF46E325F83A50BF2EBBBDD9D6B0F5D41B9178041F3E72623479134186CDE6BA297DBC24807EABDAD6C7F3747799A X-Mailru-Sender: AAD8E2226B689FDAF6252034B9A76A5C0E4C341CAFB4093701DB125BF8C5C7D9CE7C75156624650D89FF501873465F1766FEC6BF5C9C28D91C46F632D9E29CE943722207280E957E67EA787935ED9F1B X-Mras: OK Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2985 Lines: 102 The patch removes unused TIOCSSERIAL case from ioctl. TIOCGSERIAL case moves to the get_serial_info() function. Some magic numbers moves to #define directives. Signed-off-by: Mikhail Zaytsev --- drivers/usb/serial/ark3116.c | 54 ++++++++++++++++++++++++++------------------ 1 file changed, 32 insertions(+), 22 deletions(-) diff --git a/drivers/usb/serial/ark3116.c b/drivers/usb/serial/ark3116.c index 23d46ef87..f45f69e18 100644 --- a/drivers/usb/serial/ark3116.c +++ b/drivers/usb/serial/ark3116.c @@ -36,13 +36,19 @@ #define DRIVER_DESC "USB ARK3116 serial/IrDA driver" #define DRIVER_DEV_DESC "ARK3116 RS232/IrDA" #define DRIVER_NAME "ark3116" +#define ARK3116_BAUDRATE 460800 + +#define RS232_VENDOR 0x6547 +#define RS232_PRODUCT 0x0232 +#define IRDA_VENDOR 0x18ec +#define IRDA_PRODUCT 0x3118 /* usb timeout of 1 second */ #define ARK_TIMEOUT 1000 static const struct usb_device_id id_table[] = { - { USB_DEVICE(0x6547, 0x0232) }, - { USB_DEVICE(0x18ec, 0x3118) }, /* USB to IrDA adapter */ + { USB_DEVICE(RS232_VENDOR, RS232_PRODUCT) }, + { USB_DEVICE(IRDA_VENDOR, IRDA_PRODUCT) }, /* USB to IrDA adapter */ { }, }; MODULE_DEVICE_TABLE(usb, id_table); @@ -50,8 +56,8 @@ MODULE_DEVICE_TABLE(usb, id_table); static int is_irda(struct usb_serial *serial) { struct usb_device *dev = serial->dev; - if (le16_to_cpu(dev->descriptor.idVendor) == 0x18ec && - le16_to_cpu(dev->descriptor.idProduct) == 0x3118) + if (le16_to_cpu(dev->descriptor.idVendor) == IRDA_VENDOR && + le16_to_cpu(dev->descriptor.idProduct) == IRDA_PRODUCT) return 1; return 0; } @@ -397,31 +403,35 @@ static int ark3116_open(struct tty_struct *tty, struct usb_serial_port *port) return result; } +static int ark3116_get_serial_info(struct usb_serial_port *port, + unsigned long arg) +{ + struct serial_struct ser; + + memset(&ser, 0, sizeof(ser)); + + ser.type = PORT_16654; + ser.line = port->minor; + ser.port = port->port_number; + ser.custom_divisor = 0; + ser.baud_base = ARK3116_BAUDRATE; + + if (copy_to_user((void __user *)arg, &ser, sizeof(ser))) + return -EFAULT; + + return 0; +} + static int ark3116_ioctl(struct tty_struct *tty, unsigned int cmd, unsigned long arg) { struct usb_serial_port *port = tty->driver_data; - struct serial_struct serstruct; - void __user *user_arg = (void __user *)arg; switch (cmd) { case TIOCGSERIAL: - /* XXX: Some of these values are probably wrong. */ - memset(&serstruct, 0, sizeof(serstruct)); - serstruct.type = PORT_16654; - serstruct.line = port->minor; - serstruct.port = port->port_number; - serstruct.custom_divisor = 0; - serstruct.baud_base = 460800; - - if (copy_to_user(user_arg, &serstruct, sizeof(serstruct))) - return -EFAULT; - - return 0; - case TIOCSSERIAL: - if (copy_from_user(&serstruct, user_arg, sizeof(serstruct))) - return -EFAULT; - return 0; + return ark3116_get_serial_info(port, arg); + default: + break; } return -ENOIOCTLCMD; -- 2.11.0