#include <linux/spinlock.h>
#include <asm/uaccess.h>
#include <linux/usb.h>
-
-#ifdef CONFIG_USB_SERIAL_DEBUG
- static int debug = 1;
-#else
- static int debug = 0;
-#endif
-
#include "usb-serial.h"
#include "ipaq.h"
#define DRIVER_AUTHOR "Ganesh Varadarajan <ganesh@veritas.com>"
#define DRIVER_DESC "USB PocketPC PDA driver"
-static int product, vendor;
+static __u16 product, vendor;
+static int debug;
/* Function prototypes for an ipaq */
static int ipaq_open (struct usb_serial_port *port, struct file *filp);
{ USB_DEVICE(TOSHIBA_VENDOR_ID, TOSHIBA_E740_ID) },
{ USB_DEVICE(TOSHIBA_VENDOR_ID, TOSHIBA_E335_ID) },
{ USB_DEVICE(HTC_VENDOR_ID, HTC_PRODUCT_ID) },
+ { USB_DEVICE(HTC_VENDOR_ID, HTC_HIMALAYA_ID) },
{ USB_DEVICE(NEC_VENDOR_ID, NEC_PRODUCT_ID) },
{ USB_DEVICE(ASUS_VENDOR_ID, ASUS_A600_PRODUCT_ID) },
+ { USB_DEVICE(ASUS_VENDOR_ID, ASUS_A620_PRODUCT_ID) },
{ } /* Terminating entry */
};
/* All of the device info needed for the Compaq iPAQ */
-struct usb_serial_device_type ipaq_device = {
+static struct usb_serial_device_type ipaq_device = {
.owner = THIS_MODULE,
.name = "PocketPC PDA",
.id_table = ipaq_id_table,
int i, result = 0;
int retries = KP_RETRIES;
- if (port_paranoia_check(port, __FUNCTION__)) {
- return -ENODEV;
- }
-
dbg("%s - port %d", __FUNCTION__, port->number);
bytes_in = 0;
usb_set_serial_port_data(port, priv);
priv->active = 0;
priv->queue_len = 0;
+ priv->free_len = 0;
INIT_LIST_HEAD(&priv->queue);
INIT_LIST_HEAD(&priv->freelist);
static void ipaq_close(struct usb_serial_port *port, struct file *filp)
{
- struct usb_serial *serial;
struct ipaq_private *priv = usb_get_serial_port_data(port);
- if (port_paranoia_check(port, __FUNCTION__)) {
- return;
- }
-
dbg("%s - port %d", __FUNCTION__, port->number);
- serial = get_usb_serial(port, __FUNCTION__);
- if (!serial)
- return;
-
/*
* shut down bulk read and write
*/
-
usb_unlink_urb(port->write_urb);
usb_unlink_urb(port->read_urb);
ipaq_destroy_lists(port);
static void ipaq_read_bulk_callback(struct urb *urb, struct pt_regs *regs)
{
struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
- struct usb_serial *serial = get_usb_serial (port, __FUNCTION__);
struct tty_struct *tty;
unsigned char *data = urb->transfer_buffer;
int i, result;
- if (port_paranoia_check(port, __FUNCTION__))
- return;
-
dbg("%s - port %d", __FUNCTION__, port->number);
- if (!serial) {
- dbg("%s - bad serial pointer, exiting", __FUNCTION__);
- return;
- }
-
if (urb->status) {
dbg("%s - nonzero read bulk status received: %d", __FUNCTION__, urb->status);
return;
}
- usb_serial_debug_data (__FILE__, __FUNCTION__, urb->actual_length, data);
+ usb_serial_debug_data(debug, &port->dev, __FUNCTION__, urb->actual_length, data);
tty = port->tty;
if (tty && urb->actual_length) {
}
/* Continue trying to always read */
- usb_fill_bulk_urb(port->read_urb, serial->dev,
- usb_rcvbulkpipe(serial->dev, port->bulk_in_endpointAddress),
+ usb_fill_bulk_urb(port->read_urb, port->serial->dev,
+ usb_rcvbulkpipe(port->serial->dev, port->bulk_in_endpointAddress),
port->read_urb->transfer_buffer, port->read_urb->transfer_buffer_length,
ipaq_read_bulk_callback, port);
result = usb_submit_urb(port->read_urb, GFP_ATOMIC);
} else {
memcpy(pkt->data, buf, count);
}
- usb_serial_debug_data(__FILE__, __FUNCTION__, count, pkt->data);
+ usb_serial_debug_data(debug, &port->dev, __FUNCTION__, count, pkt->data);
pkt->len = count;
pkt->written = 0;
unsigned long flags;
int result;
- if (port_paranoia_check (port, __FUNCTION__)) {
- return;
- }
-
dbg("%s - port %d", __FUNCTION__, port->number);
if (urb->status) {
MODULE_DESCRIPTION( DRIVER_DESC );
MODULE_LICENSE("GPL");
-MODULE_PARM(debug, "i");
+module_param(debug, bool, S_IRUGO | S_IWUSR);
MODULE_PARM_DESC(debug, "Debug enabled or not");
-MODULE_PARM(vendor, "h");
+module_param(vendor, ushort, 0);
MODULE_PARM_DESC(vendor, "User specified USB idVendor");
-MODULE_PARM(product, "h");
+module_param(product, ushort, 0);
MODULE_PARM_DESC(product, "User specified USB idProduct");