Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 185426
b: refs/heads/master
c: 019ccc7
h: refs/heads/master
v: v3
  • Loading branch information
Dan Williams authored and Greg Kroah-Hartman committed Mar 2, 2010
1 parent 244d07e commit f88580c
Show file tree
Hide file tree
Showing 4 changed files with 109 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 67b9946dd07eeef8188e4cab816d2c370bcaa7b2
refs/heads/master: 019ccc73201e933fe7d8119c90a812d347e325f9
11 changes: 11 additions & 0 deletions trunk/drivers/usb/serial/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -472,6 +472,17 @@ config USB_SERIAL_OTI6858
To compile this driver as a module, choose M here: the
module will be called oti6858.

config USB_SERIAL_QCAUX
tristate "USB Qualcomm Auxiliary Serial Port Driver"
---help---
Say Y here if you want to use the auxiliary serial ports provided
by many modems based on Qualcomm chipsets. These ports often use
a proprietary protocol called DM and cannot be used for AT- or
PPP-based communication.

To compile this driver as a module, choose M here: the
module will be called moto_modem. If unsure, choose N.

config USB_SERIAL_QUALCOMM
tristate "USB Qualcomm Serial modem"
help
Expand Down
1 change: 1 addition & 0 deletions trunk/drivers/usb/serial/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ obj-$(CONFIG_USB_SERIAL_OPTICON) += opticon.o
obj-$(CONFIG_USB_SERIAL_OPTION) += option.o
obj-$(CONFIG_USB_SERIAL_OTI6858) += oti6858.o
obj-$(CONFIG_USB_SERIAL_PL2303) += pl2303.o
obj-$(CONFIG_USB_SERIAL_QCAUX) += qcaux.o
obj-$(CONFIG_USB_SERIAL_QUALCOMM) += qcserial.o
obj-$(CONFIG_USB_SERIAL_SAFE) += safe_serial.o
obj-$(CONFIG_USB_SERIAL_SIEMENS_MPI) += siemens_mpi.o
Expand Down
96 changes: 96 additions & 0 deletions trunk/drivers/usb/serial/qcaux.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
/*
* Qualcomm USB Auxiliary Serial Port driver
*
* Copyright (C) 2008 Greg Kroah-Hartman <greg@kroah.com>
* Copyright (C) 2010 Dan Williams <dcbw@redhat.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* Devices listed here usually provide a CDC ACM port on which normal modem
* AT commands and PPP can be used. But when that port is in-use by PPP it
* cannot be used simultaneously for status or signal strength. Instead, the
* ports here can be queried for that information using the Qualcomm DM
* protocol.
*/

#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/tty.h>
#include <linux/module.h>
#include <linux/usb.h>
#include <linux/usb/serial.h>

/* NOTE: for now, only use this driver for devices that provide a CDC-ACM port
* for normal AT commands, but also provide secondary USB interfaces for the
* QCDM-capable ports. Devices that do not provide a CDC-ACM port should
* probably be driven by option.ko.
*/

/* UTStarcom/Pantech/Curitel devices */
#define UTSTARCOM_VENDOR_ID 0x106c
#define UTSTARCOM_PRODUCT_PC5740 0x3701
#define UTSTARCOM_PRODUCT_PC5750 0x3702 /* aka Pantech PX-500 */
#define UTSTARCOM_PRODUCT_UM150 0x3711
#define UTSTARCOM_PRODUCT_UM175_V1 0x3712
#define UTSTARCOM_PRODUCT_UM175_V2 0x3714
#define UTSTARCOM_PRODUCT_UM175_ALLTEL 0x3715

/* CMOTECH devices */
#define CMOTECH_VENDOR_ID 0x16d8
#define CMOTECH_PRODUCT_CDU550 0x5553
#define CMOTECH_PRODUCT_CDX650 0x6512

static struct usb_device_id id_table[] = {
{ USB_DEVICE_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, UTSTARCOM_PRODUCT_PC5740, 0xff, 0x00, 0x00) },
{ USB_DEVICE_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, UTSTARCOM_PRODUCT_PC5750, 0xff, 0x00, 0x00) },
{ USB_DEVICE_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, UTSTARCOM_PRODUCT_UM150, 0xff, 0x00, 0x00) },
{ USB_DEVICE_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, UTSTARCOM_PRODUCT_UM175_V1, 0xff, 0x00, 0x00) },
{ USB_DEVICE_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, UTSTARCOM_PRODUCT_UM175_V2, 0xff, 0x00, 0x00) },
{ USB_DEVICE_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, UTSTARCOM_PRODUCT_UM175_ALLTEL, 0xff, 0x00, 0x00) },
{ USB_DEVICE_AND_INTERFACE_INFO(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CDU550, 0xff, 0xff, 0x00) },
{ USB_DEVICE_AND_INTERFACE_INFO(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CDX650, 0xff, 0xff, 0x00) },
{ },
};
MODULE_DEVICE_TABLE(usb, id_table);

static struct usb_driver qcaux_driver = {
.name = "qcaux",
.probe = usb_serial_probe,
.disconnect = usb_serial_disconnect,
.id_table = id_table,
.no_dynamic_id = 1,
};

static struct usb_serial_driver qcaux_device = {
.driver = {
.owner = THIS_MODULE,
.name = "qcaux",
},
.id_table = id_table,
.num_ports = 1,
};

static int __init qcaux_init(void)
{
int retval;

retval = usb_serial_register(&qcaux_device);
if (retval)
return retval;
retval = usb_register(&qcaux_driver);
if (retval)
usb_serial_deregister(&qcaux_device);
return retval;
}

static void __exit qcaux_exit(void)
{
usb_deregister(&qcaux_driver);
usb_serial_deregister(&qcaux_device);
}

module_init(qcaux_init);
module_exit(qcaux_exit);
MODULE_LICENSE("GPL");

0 comments on commit f88580c

Please sign in to comment.