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;
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: