svn commit: r201302 - in stable/8/sys/dev/usb: . quirk serial
Andrew Thompson
thompsa at FreeBSD.org
Thu Dec 31 00:08:18 UTC 2009
Author: thompsa
Date: Thu Dec 31 00:08:17 2009
New Revision: 201302
URL: http://svn.freebsd.org/changeset/base/201302
Log:
MFC r200395
Add a quirk for the Curitel UM175 where setting multiplexing for call
management over the data endpoint causes communication to die.
Take this one step further and model it on the existing NetBSD quirk and import
other device IDs from them.
Obtained from: NetBSD
Modified:
stable/8/sys/dev/usb/quirk/usb_quirk.c
stable/8/sys/dev/usb/quirk/usb_quirk.h
stable/8/sys/dev/usb/serial/umodem.c
stable/8/sys/dev/usb/usbdevs
Directory Properties:
stable/8/sys/ (props changed)
stable/8/sys/amd64/include/xen/ (props changed)
stable/8/sys/cddl/contrib/opensolaris/ (props changed)
stable/8/sys/contrib/dev/acpica/ (props changed)
stable/8/sys/contrib/pf/ (props changed)
stable/8/sys/dev/xen/xenpci/ (props changed)
Modified: stable/8/sys/dev/usb/quirk/usb_quirk.c
==============================================================================
--- stable/8/sys/dev/usb/quirk/usb_quirk.c Thu Dec 31 00:07:37 2009 (r201301)
+++ stable/8/sys/dev/usb/quirk/usb_quirk.c Thu Dec 31 00:08:17 2009 (r201302)
@@ -125,6 +125,24 @@ static struct usb_quirk_entry usb_quirks
/* MS keyboards do weird things */
{USB_QUIRK_ENTRY(USB_VENDOR_MICROSOFT, USB_PRODUCT_MICROSOFT_WLINTELLIMOUSE, 0x0000, 0xFFFF, UQ_MS_LEADING_BYTE, UQ_NONE)},
{USB_QUIRK_ENTRY(USB_VENDOR_METAGEEK, USB_PRODUCT_METAGEEK_WISPY24X, 0x0000, 0xFFFF, UQ_KBD_IGNORE, UQ_HID_IGNORE, UQ_NONE)},
+ /* umodem(4) device quirks */
+ {USB_QUIRK_ENTRY(USB_VENDOR_METRICOM, USB_PRODUCT_METRICOM_RICOCHET_GS,
+ 0x100, 0x100, UQ_ASSUME_CM_OVER_DATA)},
+ {USB_QUIRK_ENTRY(USB_VENDOR_SANYO, USB_PRODUCT_SANYO_SCP4900,
+ 0x000, 0x000, UQ_ASSUME_CM_OVER_DATA)},
+ {USB_QUIRK_ENTRY(USB_VENDOR_MOTOROLA2, USB_PRODUCT_MOTOROLA2_T720C,
+ 0x001, 0x001, UQ_ASSUME_CM_OVER_DATA)},
+ {USB_QUIRK_ENTRY(USB_VENDOR_EICON, USB_PRODUCT_EICON_DIVA852,
+ 0x100, 0x100, UQ_ASSUME_CM_OVER_DATA)},
+ {USB_QUIRK_ENTRY(USB_VENDOR_SIEMENS2, USB_PRODUCT_SIEMENS2_ES75,
+ 0x000, 0x000, UQ_ASSUME_CM_OVER_DATA)},
+ {USB_QUIRK_ENTRY(USB_VENDOR_QUALCOMM, USB_PRODUCT_QUALCOMM_CDMA_MSM,
+ 0x0000, 0xFFFF, UQ_ASSUME_CM_OVER_DATA)},
+ {USB_QUIRK_ENTRY(USB_VENDOR_QUALCOMM2, USB_PRODUCT_QUALCOMM2_CDMA_MSM,
+ 0x0000, 0xFFFF, UQ_ASSUME_CM_OVER_DATA)},
+ {USB_QUIRK_ENTRY(USB_VENDOR_CURITEL, USB_PRODUCT_CURITEL_UM175,
+ 0x0000, 0xFFFF, UQ_ASSUME_CM_OVER_DATA)},
+
};
static const char *usb_quirk_str[USB_QUIRK_MAX] = {
@@ -152,6 +170,7 @@ static const char *usb_quirk_str[USB_QUI
[UQ_CFG_INDEX_3] = "UQ_CFG_INDEX_3",
[UQ_CFG_INDEX_4] = "UQ_CFG_INDEX_4",
[UQ_CFG_INDEX_0] = "UQ_CFG_INDEX_0",
+ [UQ_ASSUME_CM_OVER_DATA]= "UQ_ASSUME_CM_OVER_DATA",
};
/*------------------------------------------------------------------------*
Modified: stable/8/sys/dev/usb/quirk/usb_quirk.h
==============================================================================
--- stable/8/sys/dev/usb/quirk/usb_quirk.h Thu Dec 31 00:07:37 2009 (r201301)
+++ stable/8/sys/dev/usb/quirk/usb_quirk.h Thu Dec 31 00:08:17 2009 (r201302)
@@ -53,6 +53,7 @@ enum { /* keep in sync with usb_quirk_st
UQ_CFG_INDEX_3, /* select configuration index 3 by default */
UQ_CFG_INDEX_4, /* select configuration index 4 by default */
UQ_CFG_INDEX_0, /* select configuration index 0 by default */
+ UQ_ASSUME_CM_OVER_DATA, /* modem device breaks on cm over data */
USB_QUIRK_MAX
};
Modified: stable/8/sys/dev/usb/serial/umodem.c
==============================================================================
--- stable/8/sys/dev/usb/serial/umodem.c Thu Dec 31 00:07:37 2009 (r201301)
+++ stable/8/sys/dev/usb/serial/umodem.c Thu Dec 31 00:08:17 2009 (r201302)
@@ -112,6 +112,7 @@ __FBSDID("$FreeBSD$");
#define USB_DEBUG_VAR umodem_debug
#include <dev/usb/usb_debug.h>
#include <dev/usb/usb_process.h>
+#include <dev/usb/quirk/usb_quirk.h>
#include <dev/usb/serial/usb_serial.h>
@@ -349,16 +350,20 @@ umodem_attach(device_t dev)
}
}
- if (sc->sc_cm_cap & USB_CDC_CM_OVER_DATA) {
- if (sc->sc_acm_cap & USB_CDC_ACM_HAS_FEATURE) {
+ if (usb_test_quirk(uaa, UQ_ASSUME_CM_OVER_DATA)) {
+ sc->sc_cm_over_data = 1;
+ } else {
+ if (sc->sc_cm_cap & USB_CDC_CM_OVER_DATA) {
+ if (sc->sc_acm_cap & USB_CDC_ACM_HAS_FEATURE) {
- error = umodem_set_comm_feature
- (uaa->device, sc->sc_ctrl_iface_no,
- UCDC_ABSTRACT_STATE, UCDC_DATA_MULTIPLEXED);
+ error = umodem_set_comm_feature
+ (uaa->device, sc->sc_ctrl_iface_no,
+ UCDC_ABSTRACT_STATE, UCDC_DATA_MULTIPLEXED);
- /* ignore any errors */
+ /* ignore any errors */
+ }
+ sc->sc_cm_over_data = 1;
}
- sc->sc_cm_over_data = 1;
}
error = usbd_transfer_setup(uaa->device,
sc->sc_iface_index, sc->sc_xfer,
Modified: stable/8/sys/dev/usb/usbdevs
==============================================================================
--- stable/8/sys/dev/usb/usbdevs Thu Dec 31 00:07:37 2009 (r201301)
+++ stable/8/sys/dev/usb/usbdevs Thu Dec 31 00:08:17 2009 (r201302)
@@ -1212,6 +1212,9 @@ product DRESDENELEKTRONIK WIRELESSHANDHE
/* Dynastream Innovations */
product DYNASTREAM ANTDEVBOARD 0x1003 ANT dev board
+/* Eicon Networks */
+product EICON DIVA852 0x4905 Diva 852 ISDN TA
+
/* EIZO products */
product EIZO HUB 0x0000 hub
product EIZO MONITOR 0x0001 monitor
@@ -1826,6 +1829,7 @@ product MOSCHIP MCS7830 0x7830 MCS7830
/* Motorola products */
product MOTOROLA MC141555 0x1555 MC141555 hub controller
product MOTOROLA SB4100 0x4100 SB4100 USB Cable Modem
+product MOTOROLA2 T720C 0x2822 T720c
product MOTOROLA2 A41XV32X 0x2a22 A41x/V32x Mobile Phones
product MOTOROLA2 E398 0x4810 E398 Mobile Phone
product MOTOROLA2 USBLAN 0x600c USBLAN
More information about the svn-src-stable
mailing list