vserver 1.9.5.x5
[linux-2.6.git] / drivers / usb / media / ibmcam.c
index 0d5d718..64eb7ca 100644 (file)
@@ -124,38 +124,38 @@ static int init_model2_yb = -1;
 /* Settings for camera model 3 */
 static int init_model3_input = 0;
 
-MODULE_PARM(debug, "i");
+module_param(debug, int, 0);
 MODULE_PARM_DESC(debug, "Debug level: 0-9 (default=0)");
-MODULE_PARM(flags, "i");
+module_param(flags, int, 0);
 MODULE_PARM_DESC(flags, "Bitfield: 0=VIDIOCSYNC, 1=B/W, 2=show hints, 3=show stats, 4=test pattern, 5=separate frames, 6=clean frames");
-MODULE_PARM(framerate, "i");
+module_param(framerate, int, 0);
 MODULE_PARM_DESC(framerate, "Framerate setting: 0=slowest, 6=fastest (default=2)");
-MODULE_PARM(lighting, "i");
+module_param(lighting, int, 0);
 MODULE_PARM_DESC(lighting, "Photosensitivity: 0=bright, 1=medium (default), 2=low light");
-MODULE_PARM(sharpness, "i");
+module_param(sharpness, int, 0);
 MODULE_PARM_DESC(sharpness, "Model1 noise reduction: 0=smooth, 6=sharp (default=4)");
-MODULE_PARM(size, "i");
+module_param(size, int, 0);
 MODULE_PARM_DESC(size, "Image size: 0=128x96 1=160x120 2=176x144 3=320x240 4=352x240 5=352x288 6=640x480  (default=5)");
-MODULE_PARM(init_brightness, "i");
+module_param(init_brightness, int, 0);
 MODULE_PARM_DESC(init_brightness, "Brightness preconfiguration: 0-255 (default=128)");
-MODULE_PARM(init_contrast, "i");
+module_param(init_contrast, int, 0);
 MODULE_PARM_DESC(init_contrast, "Contrast preconfiguration: 0-255 (default=192)");
-MODULE_PARM(init_color, "i");
+module_param(init_color, int, 0);
 MODULE_PARM_DESC(init_color, "Color preconfiguration: 0-255 (default=128)");
-MODULE_PARM(init_hue, "i");
+module_param(init_hue, int, 0);
 MODULE_PARM_DESC(init_hue, "Hue preconfiguration: 0-255 (default=128)");
-MODULE_PARM(hue_correction, "i");
+module_param(hue_correction, int, 0);
 MODULE_PARM_DESC(hue_correction, "YUV colorspace regulation: 0-255 (default=128)");
 
-MODULE_PARM(init_model2_rg2, "i");
+module_param(init_model2_rg2, int, 0);
 MODULE_PARM_DESC(init_model2_rg2, "Model2 preconfiguration: 0-255 (default=47)");
-MODULE_PARM(init_model2_sat, "i");
+module_param(init_model2_sat, int, 0);
 MODULE_PARM_DESC(init_model2_sat, "Model2 preconfiguration: 0-255 (default=52)");
-MODULE_PARM(init_model2_yb, "i");
+module_param(init_model2_yb, int, 0);
 MODULE_PARM_DESC(init_model2_yb, "Model2 preconfiguration: 0-255 (default=160)");
 
 /* 01.01.08 - Added for RCA video in support -LO */
-MODULE_PARM(init_model3_input, "i");
+module_param(init_model3_input, int, 0);
 MODULE_PARM_DESC(init_model3_input, "Model3 input: 0=CCD 1=RCA");
 
 MODULE_AUTHOR ("Dmitri");
@@ -3647,7 +3647,7 @@ static int ibmcam_probe(struct usb_interface *intf, const struct usb_device_id *
 {
        struct usb_device *dev = interface_to_usbdev(intf);
        struct uvd *uvd = NULL;
-       int i, nas, model=0, canvasX=0, canvasY=0;
+       int ix, i, nas, model=0, canvasX=0, canvasY=0;
        int actInterface=-1, inactInterface=-1, maxPS=0;
        __u8 ifnum = intf->altsetting->desc.bInterfaceNumber;
        unsigned char video_ep = 0;
@@ -3659,17 +3659,8 @@ static int ibmcam_probe(struct usb_interface *intf, const struct usb_device_id *
        if (dev->descriptor.bNumConfigurations != 1)
                return -ENODEV;
 
-       /* Is it an IBM camera? */
-       if (dev->descriptor.idVendor != IBMCAM_VENDOR_ID)
-               return -ENODEV;
-       if ((dev->descriptor.idProduct != IBMCAM_PRODUCT_ID) &&
-           (dev->descriptor.idProduct != VEO_800C_PRODUCT_ID) &&
-           (dev->descriptor.idProduct != VEO_800D_PRODUCT_ID) &&
-           (dev->descriptor.idProduct != NETCAM_PRODUCT_ID))
-               return -ENODEV;
-
        /* Check the version/revision */
-       switch (dev->descriptor.bcdDevice) {
+       switch (le16_to_cpu(dev->descriptor.bcdDevice)) {
        case 0x0002:
                if (ifnum != 2)
                        return -ENODEV;
@@ -3678,8 +3669,8 @@ static int ibmcam_probe(struct usb_interface *intf, const struct usb_device_id *
        case 0x030A:
                if (ifnum != 0)
                        return -ENODEV;
-               if ((dev->descriptor.idProduct == NETCAM_PRODUCT_ID) ||
-                   (dev->descriptor.idProduct == VEO_800D_PRODUCT_ID))
+               if ((le16_to_cpu(dev->descriptor.idProduct) == NETCAM_PRODUCT_ID) ||
+                   (le16_to_cpu(dev->descriptor.idProduct) == VEO_800D_PRODUCT_ID))
                        model = IBMCAM_MODEL_4;
                else
                        model = IBMCAM_MODEL_2;
@@ -3691,14 +3682,14 @@ static int ibmcam_probe(struct usb_interface *intf, const struct usb_device_id *
                break;
        default:
                err("IBM camera with revision 0x%04x is not supported.",
-                       dev->descriptor.bcdDevice);
+                       le16_to_cpu(dev->descriptor.bcdDevice));
                return -ENODEV;
        }
 
        /* Print detailed info on what we found so far */
        do {
                char *brand = NULL;
-               switch (dev->descriptor.idProduct) {
+               switch (le16_to_cpu(dev->descriptor.idProduct)) {
                case NETCAM_PRODUCT_ID:
                        brand = "IBM NetCamera";
                        break;
@@ -3714,11 +3705,11 @@ static int ibmcam_probe(struct usb_interface *intf, const struct usb_device_id *
                        break;
                }
                info("%s USB camera found (model %d, rev. 0x%04x)",
-                    brand, model, dev->descriptor.bcdDevice);
+                    brand, model, le16_to_cpu(dev->descriptor.bcdDevice));
        } while (0);
 
        /* Validate found interface: must have one ISO endpoint */
-       nas = dev->actconfig->interface[ifnum]->num_altsetting;
+       nas = intf->num_altsetting;
        if (debug > 0)
                info("Number of alternate settings=%d.", nas);
        if (nas < 2) {
@@ -3726,11 +3717,12 @@ static int ibmcam_probe(struct usb_interface *intf, const struct usb_device_id *
                return -ENODEV;
        }
        /* Validate all alternate settings */
-       for (i=0; i < nas; i++) {
+       for (ix=0; ix < nas; ix++) {
                const struct usb_host_interface *interface;
                const struct usb_endpoint_descriptor *endpoint;
 
-               interface = &dev->actconfig->interface[ifnum]->altsetting[i];
+               interface = &intf->altsetting[ix];
+               i = interface->desc.bAlternateSetting;
                if (interface->desc.bNumEndpoints != 1) {
                        err("Interface %d. has %u. endpoints!",
                            ifnum, (unsigned)(interface->desc.bNumEndpoints));
@@ -3751,7 +3743,7 @@ static int ibmcam_probe(struct usb_interface *intf, const struct usb_device_id *
                        err("Interface %d. has ISO OUT endpoint!", ifnum);
                        return -ENODEV;
                }
-               if (endpoint->wMaxPacketSize == 0) {
+               if (le16_to_cpu(endpoint->wMaxPacketSize) == 0) {
                        if (inactInterface < 0)
                                inactInterface = i;
                        else {
@@ -3761,7 +3753,7 @@ static int ibmcam_probe(struct usb_interface *intf, const struct usb_device_id *
                } else {
                        if (actInterface < 0) {
                                actInterface = i;
-                               maxPS = endpoint->wMaxPacketSize;
+                               maxPS = le16_to_cpu(endpoint->wMaxPacketSize);
                                if (debug > 0)
                                        info("Active setting=%d. maxPS=%d.", i, maxPS);
                        } else