Hello!

I own a X-MICRO WLAN 11b USB Adapter. But it does not work with the
kernel version 2.6.1 correctly. If I plug the adapter in, I get the
following messages:

hub 3-0:1.0: new USB device on port 1, assigned address 2
usb 3-1: device not accepting address 2, error -110
hub 3-0:1.0: Cannot enable port 1.  Maybe the USB cable is bad?

After a litle searching, I found in the Linux USB FAQ, that I should
look at /proc/interrupts to see if the interrupt count for the host
controller driver goes up. This happens on my system.

After looking to the  <http://www.x-micro.com> www.x-micro.com, I found
a linux driver for the adapter. But the main problem is, that it is for
the 2.4.xx kernel family. In the driver package there is a desription,
how to patch the kernel, but all the described things are 2.4.xx
related. I didn't had success by porting the changes from 2.4.xx to
2.6.1, because of the big changes in 2.6.1 in the
core/usb.c/usb_new_device.

You can find bellow the original 2.4.xx code and the X-MICRO changes in
2.4.xx. Could you please help me to port this changes also in the 2.6.1?

Thanks in advance
Best regards,
nihil


---original-code-2.4.xx------------------------------------------------

int usb_new_device(struct usb_device *dev)
{
        int err;

        /* USB v1.1 5.5.3 */
        /* We read the first 8 bytes from the device descriptor to get to */
        /*  the bMaxPacketSize0 field. Then we set the maximum packet size */
        /*  for the control pipe, and retrieve the rest */

        dev->epmaxpacketin [0] = 8;
        dev->epmaxpacketout[0] = 8;

        err = usb_set_address(dev);
        if (err < 0) {
                err("USB device not accepting new address=%d (error=%d)",
                        dev->devnum, err);
                clear_bit(dev->devnum, &dev->bus->devmap.devicemap);
                dev->devnum = -1;
                return 1;
        }

        wait_ms(10);    /* Let the SET_ADDRESS settle */

        err = usb_get_descriptor(dev, USB_DT_DEVICE, 0, &dev->descriptor, 8);
        if (err < 8) {
                if (err < 0)
                        err("USB device not responding, giving up (error=%d)", err);
                else
                        err("USB device descriptor short read (expected %i, got %i)", 
8, err);
                clear_bit(dev->devnum, &dev->bus->devmap.devicemap);
                dev->devnum = -1;
                return 1;
        }

        dev->epmaxpacketin [0] = dev->descriptor.bMaxPacketSize0;
        dev->epmaxpacketout[0] = dev->descriptor.bMaxPacketSize0;
      ....
        
---x-micro-code-2.4.xx------------------------------------------------
int usb_new_device(struct usb_device *dev)
{
      int err;
      int addr;

      /* USB v1.1 5.5.3 */
      /* We read the first 8 bytes from the device descriptor to get to */
      /* the bMaxPacketSize0 field. Then we set the maximum packet size */
      /* for the control pipe, and retrieve the rest */

      dev->epmaxpacketin [0] = 8;
      dev->epmaxpacketout[0] = 8;

      printk("Address: %d\n", dev->devnum);
      addr = dev->devnum;
      dev->devnum = 0;

      err = usb_get_descriptor(dev, USB_DT_DEVICE, 0, &dev->descriptor, 8);
      if (err < 8) {
             if (err < 0)
                    err("USB device not responding, giving up (error=%d)", err);
             else
                    err("USB device descriptor short read (expected %i, got %i)", 8, 
err);
             clear_bit(dev->devnum, &dev->bus->devmap.devicemap);
             dev->devnum = -1;
             return 1;
      }

     dev->epmaxpacketin [0] = 8;
     dev->epmaxpacketout[0] = 8;
     dev->devnum = addr;

     err = usb_set_address(dev);
     if (err < 0) {
          err("USB device not accepting new address=%d (error=%d)",
                 dev->devnum, err);
          clear_bit(dev->devnum, &dev->bus->devmap.devicemap);
          dev->devnum = -1;
          return 1;
     }

     wait_ms(10);       /* Let the SET_ADDRESS settle */

     dev->epmaxpacketin [0] = dev->descriptor.bMaxPacketSize0;
     dev->epmaxpacketout[0] = dev->descriptor.bMaxPacketSize0;
    ....





-------------------------------------------------------
The SF.Net email is sponsored by EclipseCon 2004
Premiere Conference on Open Tools Development and Integration
See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
http://www.eclipsecon.org/osdn
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to