Staging: rspiusb: duplicate code in pixis_io
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>
This commit is contained in:
parent
c854b5e58f
commit
14e8bcd086
@ -252,38 +252,6 @@ static int pixis_io(struct ioctl_struct *ctrl, struct device_extension *pdx,
|
|||||||
return ctrl->numbytes;
|
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)
|
static int pixel_data(struct ioctl_struct *ctrl, struct device_extension *pdx)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
@ -398,27 +366,16 @@ static int piusb_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
|
|||||||
sizeof(struct ioctl_struct)))
|
sizeof(struct ioctl_struct)))
|
||||||
dev_err(&pdx->udev->dev, "copy_from_user failed\n");
|
dev_err(&pdx->udev->dev, "copy_from_user failed\n");
|
||||||
|
|
||||||
switch (ctrl.endpoint) {
|
if (((0 == ctrl.endpoint) && (PIXIS_PID == pdx->iama)) ||
|
||||||
case 0: /* ST133 Pixel Data or PIXIS IO */
|
(1 == ctrl.endpoint) || /* ST133IO */
|
||||||
if (pdx->iama == PIXIS_PID) {
|
(4 == ctrl.endpoint)) /* PIXIS IO */
|
||||||
return pixis_io(&ctrl, pdx,
|
return pixis_io(&ctrl, pdx,
|
||||||
(struct ioctl_struct *)arg);
|
(struct ioctl_struct *)arg);
|
||||||
}
|
else if ((0 == ctrl.endpoint) || /* ST133 Pixel Data */
|
||||||
/* ST133 Pixel Data */
|
(2 == ctrl.endpoint) || /* PIXIS Ping */
|
||||||
/* fall through */
|
(3 == ctrl.endpoint)) /* PIXIS Pong */
|
||||||
case 2: /* PIXIS Ping */
|
|
||||||
/* fall through */
|
|
||||||
case 3: /* PIXIS Pong */
|
|
||||||
return pixel_data(&ctrl, pdx);
|
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;
|
break;
|
||||||
|
|
||||||
case PIUSB_WHATCAMERA:
|
case PIUSB_WHATCAMERA:
|
||||||
|
Loading…
Reference in New Issue
Block a user