OSDN Git Service

Staging: rspiusb: duplicate code in pixis_io
authorRichard Genoud <richard.genoud@gmail.com>
Sun, 17 May 2009 11:06:32 +0000 (13:06 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 19 Jun 2009 18:00:54 +0000 (11:00 -0700)
It seems that pixis_io and pixis_io2 should do the same thing.

Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/rspiusb/rspiusb.c

index 685ab3f..090bf41 100644 (file)
@@ -252,38 +252,6 @@ static int pixis_io(struct ioctl_struct *ctrl, struct device_extension *pdx,
        return ctrl->numbytes;
 }
 
-static int pixis_io2(struct ioctl_struct *ctrl, struct device_extension *pdx,
-               struct ioctl_struct *arg)
-{
-       unsigned char *uBuf;
-       int numbytes;
-       int i;
-
-       uBuf = kmalloc(ctrl->numbytes, GFP_KERNEL);
-       if (!uBuf) {
-               dbg("Alloc for uBuf failed");
-               return 0;
-       }
-       numbytes = (int) ctrl->numbytes;
-       /* dbg( "numbytes to read = %d", numbytes ); */
-       if (copy_from_user(uBuf, ctrl->pData, numbytes))
-               dbg("copying ctrl->pData to dummyBuf failed");
-
-       i = usb_bulk_msg(pdx->udev, pdx->hEP[ctrl->endpoint],
-                       uBuf, numbytes, &numbytes, HZ * 10);
-       if (i) {
-               dbg("Blocking ReadI/O Failed with status %d", i);
-               kfree(uBuf);
-               return -1;
-       }
-       ctrl->numbytes = numbytes;
-       memcpy(ctrl->pData, uBuf, numbytes);
-       if (copy_to_user(arg, ctrl, sizeof(struct ioctl_struct)))
-               dbg("copy_to_user failed in IORB");
-       kfree(uBuf);
-       return ctrl->numbytes;
-}
-
 static int pixel_data(struct ioctl_struct *ctrl, struct device_extension *pdx)
 {
        int i;
@@ -398,27 +366,16 @@ static int piusb_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
                                        sizeof(struct ioctl_struct)))
                        dev_err(&pdx->udev->dev, "copy_from_user failed\n");
 
-               switch (ctrl.endpoint) {
-               case 0: /* ST133 Pixel Data or PIXIS IO */
-                       if (pdx->iama == PIXIS_PID) {
-                               return pixis_io(&ctrl, pdx,
-                                               (struct ioctl_struct *)arg);
-                       }
-                       /* ST133 Pixel Data */
-                       /* fall through */
-               case 2: /* PIXIS Ping */
-                       /* fall through */
-               case 3: /* PIXIS Pong */
+               if (((0 == ctrl.endpoint) && (PIXIS_PID == pdx->iama)) ||
+                               (1 == ctrl.endpoint) || /* ST133IO */
+                               (4 == ctrl.endpoint))   /* PIXIS IO */
+                       return pixis_io(&ctrl, pdx,
+                                       (struct ioctl_struct *)arg);
+               else if ((0 == ctrl.endpoint) || /* ST133 Pixel Data */
+                               (2 == ctrl.endpoint) || /* PIXIS Ping */
+                               (3 == ctrl.endpoint))   /* PIXIS Pong */
                        return pixel_data(&ctrl, pdx);
 
-               case 1: /* ST133IO */
-                       /* fall through */
-               case 4: /* PIXIS IO */
-                       return pixis_io2(&ctrl, pdx,
-                                       (struct ioctl_struct *)arg);
-               default:
-                       break;
-               }
                break;
 
        case PIUSB_WHATCAMERA: