ChangeSet 1.1595.7.14, 2003/07/30 13:11:32-07:00, [EMAIL PROTECTED]

[PATCH] USB: usbnet: zaurus c-750, motorola

This patch:

   - Makes the cdc code handle a Motorola cable modem that stores
     CDC descriptors in the wrong place.  The workaround might be
     helpful for other hardware too.  (This was a 2.4 regression.)

   - Recognizes another Zaurus (PXA 255 based clamshell, not yet
     sold by Sharp in the US).

   - Cleaned the Zaurus stuff up a bit.  Rather than expecting
     a new driver_info struct (or re-using the right one) for
     each new pxa based product, they all use the same one.  So
     patches for new products only need new usb_device_id entries.
     (Also notes the issue that every Zaurus model will need to be
     blacklisted for CDC if the Z code isn't enabled.)


 drivers/usb/net/usbnet.c |   67 +++++++++++++++++++++++++----------------------
 1 files changed, 36 insertions(+), 31 deletions(-)


diff -Nru a/drivers/usb/net/usbnet.c b/drivers/usb/net/usbnet.c
--- a/drivers/usb/net/usbnet.c  Fri Aug  1 10:55:11 2003
+++ b/drivers/usb/net/usbnet.c  Fri Aug  1 10:55:11 2003
@@ -519,7 +519,17 @@
        if (sizeof dev->data < sizeof *info)
                return -EDOM;
 
-       /* expect strict spec conformance for the descriptors */
+       /* expect strict spec conformance for the descriptors, but
+        * cope with firmware which stores them in the wrong place
+        */
+       if (len == 0 && dev->udev->config->extralen) {
+               /* Motorola SB4100 (and maybe others) put
+                * CDC descriptors here
+                */
+               buf = dev->udev->config->extra;
+               len = dev->udev->config->extralen;
+       }
+
        memset (info, 0, sizeof *info);
        info->control = intf;
        while (len > 3) {
@@ -606,7 +616,7 @@
        return 0;
 
 bad_desc:
-       // devdbg (dev, "bad CDC descriptors");
+       dev_info (&dev->udev->dev, "bad CDC descriptors\n");
        return -ENODEV;
 }
 
@@ -1645,6 +1655,9 @@
  * crc32, added to help detect when some sa1100 usb-to-memory DMA errata
  * haven't been fully worked around.
  *
+ * PXA based models use the same framing, and also can't implement
+ * set_interface properly.
+ *
  *-------------------------------------------------------------------------*/
 
 static struct sk_buff *
@@ -1684,34 +1697,14 @@
        .unbind =       cdc_unbind,
        .tx_fixup =     zaurus_tx_fixup,
 };
-static const struct driver_info        zaurus_sla300_info = {
-       .description =  "Sharp Zaurus SL-A300",
+static const struct driver_info        zaurus_pxa_info = {
+       .description =  "Sharp Zaurus, PXA-2xx based",
        .flags =        FLAG_FRAMING_Z,
        .check_connect = always_connected,
        .tx_fixup =     zaurus_tx_fixup,
 
        .in = 1, .out = 2,
 };
-static const struct driver_info        zaurus_slb500_info = {
-       /* Japanese B500 ~= US SL-5600 */
-       .description =  "Sharp Zaurus SL-B500",
-       .flags =        FLAG_FRAMING_Z,
-       .check_connect = always_connected,
-       .tx_fixup =     zaurus_tx_fixup,
-
-       .in = 1, .out = 2,
-};
-static const struct driver_info zaurus_slc700_info = {
-    .description =  "Sharp Zaurus SL-C700",
-    .flags =    FLAG_FRAMING_Z,
-    .check_connect = always_connected,
-    .tx_fixup =     zaurus_tx_fixup,
-
-    .in = 1, .out = 2,
-};
-
-
-// SL-5600 and C-700 are PXA based; should resemble A300
 
 #endif
 
@@ -2731,6 +2724,8 @@
 /*
  * SA-1100 based Sharp Zaurus ("collie"), or compatible.
  * Same idea as above, but different framing.
+ *
+ * PXA-2xx based models are also lying-about-cdc.
  */
 {
        .match_flags    =   USB_DEVICE_ID_MATCH_INT_INFO
@@ -2746,29 +2741,38 @@
        .match_flags    =   USB_DEVICE_ID_MATCH_INT_INFO
                          | USB_DEVICE_ID_MATCH_DEVICE, 
        .idVendor               = 0x04DD,
-       .idProduct              = 0x8005,
+       .idProduct              = 0x8005,       /* A-300 */
        .bInterfaceClass        = 0x02,
        .bInterfaceSubClass     = 0x0a,
        .bInterfaceProtocol     = 0x00,
-       .driver_info =  (unsigned long) &zaurus_sla300_info,
+       .driver_info =  (unsigned long) &zaurus_pxa_info,
 }, {
        .match_flags    =   USB_DEVICE_ID_MATCH_INT_INFO
                          | USB_DEVICE_ID_MATCH_DEVICE, 
        .idVendor               = 0x04DD,
-       .idProduct              = 0x8006,
+       .idProduct              = 0x8006,       /* B-500/SL-5600 */
        .bInterfaceClass        = 0x02,
        .bInterfaceSubClass     = 0x0a,
        .bInterfaceProtocol     = 0x00,
-       .driver_info =  (unsigned long) &zaurus_slb500_info,
+       .driver_info =  (unsigned long) &zaurus_pxa_info,
 }, {
        .match_flags    =   USB_DEVICE_ID_MATCH_INT_INFO
                  | USB_DEVICE_ID_MATCH_DEVICE,
-       .idVendor       = 0x04DD,
-       .idProduct      = 0x8007,
+       .idVendor               = 0x04DD,
+       .idProduct              = 0x8007,       /* C-700 */
        .bInterfaceClass    = 0x02,
        .bInterfaceSubClass = 0x0a,
        .bInterfaceProtocol = 0x00,
-       .driver_info =  (unsigned long) &zaurus_slc700_info,
+       .driver_info =  (unsigned long) &zaurus_pxa_info,
+}, {
+       .match_flags    =   USB_DEVICE_ID_MATCH_INT_INFO
+                | USB_DEVICE_ID_MATCH_DEVICE,
+       .idVendor               = 0x04DD,
+       .idProduct              = 0x9031,       /* C-750 */
+       .bInterfaceClass        = 0x02,
+       .bInterfaceSubClass     = 0x0a,
+       .bInterfaceProtocol     = 0x00,
+       .driver_info =  (unsigned long) &zaurus_pxa_info,
 },
 #endif
 
@@ -2787,6 +2791,7 @@
        .bInterfaceProtocol     = 0,
        .driver_info            = 0, /* BLACKLIST */
 },
+       // FIXME blacklist the other Zaurus models too, sigh
 #endif
 
 {



-------------------------------------------------------
This SF.Net email sponsored by: Free pre-built ASP.NET sites including
Data Reports, E-commerce, Portals, and Forums are available now.
Download today and enter to win an XBOX or Visual Studio .NET.
http://aspnet.click-url.com/go/psa00100003ave/direct;at.aspnet_072303_01/01
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to