From 4032142546bb58a6be04a09a750d69bff848cfe7 Mon Sep 17 00:00:00 2001 From: Werner Lemberg Date: Tue, 18 Jul 2006 17:00:52 +0200 Subject: [PATCH] --- yaml --- r: 36361 b: refs/heads/master c: 2f430b4bbae7faa167730f954252eb7db4ac58dd h: refs/heads/master i: 36359: 2181ef3338941b32bcaf6f44aadccb4c94d2d388 v: v3 --- [refs] | 2 +- trunk/drivers/usb/serial/ark3116.c | 34 +++++++++++++++++++++++++++--- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 7a418ace8ec9..1dcb1e1bb65b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: bfb2c965d669045b7629fd577b7834c87c2dfd54 +refs/heads/master: 2f430b4bbae7faa167730f954252eb7db4ac58dd diff --git a/trunk/drivers/usb/serial/ark3116.c b/trunk/drivers/usb/serial/ark3116.c index 970d9ef0a7a5..d37300e1811a 100644 --- a/trunk/drivers/usb/serial/ark3116.c +++ b/trunk/drivers/usb/serial/ark3116.c @@ -1,4 +1,7 @@ /* + * Copyright (C) 2006 + * Simon Schulz (ark3116_driver auctionant.de) + * * ark3116 * - implements a driver for the arkmicro ark3116 chipset (vendor=0x6547, * productid=0x0232) (used in a datacable called KQ-U8A) @@ -8,8 +11,6 @@ * * - based on logs created by usbsnoopy * - * Author : Simon Schulz [ark3116_driverauctionant.de] - * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your @@ -22,6 +23,8 @@ #include #include #include +#include +#include static int debug; @@ -379,7 +382,32 @@ static int ark3116_open(struct usb_serial_port *port, struct file *filp) static int ark3116_ioctl(struct usb_serial_port *port, struct file *file, unsigned int cmd, unsigned long arg) { - dbg("ioctl not supported yet..."); + 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->serial->minor; + serstruct.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; + default: + dbg("%s cmd 0x%04x not supported", __FUNCTION__, cmd); + break; + } + return -ENOIOCTLCMD; }