|
@@ -1006,103 +1006,14 @@ long v4l2_compat_ioctl32(struct file *file, unsigned int cmd, unsigned long arg)
|
|
|
if (!file->f_op->unlocked_ioctl)
|
|
|
return ret;
|
|
|
|
|
|
- switch (cmd) {
|
|
|
- case VIDIOC_QUERYCAP:
|
|
|
- case VIDIOC_RESERVED:
|
|
|
- case VIDIOC_ENUM_FMT:
|
|
|
- case VIDIOC_G_FMT32:
|
|
|
- case VIDIOC_S_FMT32:
|
|
|
- case VIDIOC_REQBUFS:
|
|
|
- case VIDIOC_QUERYBUF32:
|
|
|
- case VIDIOC_G_FBUF32:
|
|
|
- case VIDIOC_S_FBUF32:
|
|
|
- case VIDIOC_OVERLAY32:
|
|
|
- case VIDIOC_QBUF32:
|
|
|
- case VIDIOC_EXPBUF:
|
|
|
- case VIDIOC_DQBUF32:
|
|
|
- case VIDIOC_STREAMON32:
|
|
|
- case VIDIOC_STREAMOFF32:
|
|
|
- case VIDIOC_G_PARM:
|
|
|
- case VIDIOC_S_PARM:
|
|
|
- case VIDIOC_G_STD:
|
|
|
- case VIDIOC_S_STD:
|
|
|
- case VIDIOC_ENUMSTD32:
|
|
|
- case VIDIOC_ENUMINPUT32:
|
|
|
- case VIDIOC_G_CTRL:
|
|
|
- case VIDIOC_S_CTRL:
|
|
|
- case VIDIOC_G_TUNER:
|
|
|
- case VIDIOC_S_TUNER:
|
|
|
- case VIDIOC_G_AUDIO:
|
|
|
- case VIDIOC_S_AUDIO:
|
|
|
- case VIDIOC_QUERYCTRL:
|
|
|
- case VIDIOC_QUERYMENU:
|
|
|
- case VIDIOC_G_INPUT32:
|
|
|
- case VIDIOC_S_INPUT32:
|
|
|
- case VIDIOC_G_OUTPUT32:
|
|
|
- case VIDIOC_S_OUTPUT32:
|
|
|
- case VIDIOC_ENUMOUTPUT:
|
|
|
- case VIDIOC_G_AUDOUT:
|
|
|
- case VIDIOC_S_AUDOUT:
|
|
|
- case VIDIOC_G_MODULATOR:
|
|
|
- case VIDIOC_S_MODULATOR:
|
|
|
- case VIDIOC_S_FREQUENCY:
|
|
|
- case VIDIOC_G_FREQUENCY:
|
|
|
- case VIDIOC_CROPCAP:
|
|
|
- case VIDIOC_G_CROP:
|
|
|
- case VIDIOC_S_CROP:
|
|
|
- case VIDIOC_G_SELECTION:
|
|
|
- case VIDIOC_S_SELECTION:
|
|
|
- case VIDIOC_G_JPEGCOMP:
|
|
|
- case VIDIOC_S_JPEGCOMP:
|
|
|
- case VIDIOC_QUERYSTD:
|
|
|
- case VIDIOC_TRY_FMT32:
|
|
|
- case VIDIOC_ENUMAUDIO:
|
|
|
- case VIDIOC_ENUMAUDOUT:
|
|
|
- case VIDIOC_G_PRIORITY:
|
|
|
- case VIDIOC_S_PRIORITY:
|
|
|
- case VIDIOC_G_SLICED_VBI_CAP:
|
|
|
- case VIDIOC_LOG_STATUS:
|
|
|
- case VIDIOC_G_EXT_CTRLS32:
|
|
|
- case VIDIOC_S_EXT_CTRLS32:
|
|
|
- case VIDIOC_TRY_EXT_CTRLS32:
|
|
|
- case VIDIOC_ENUM_FRAMESIZES:
|
|
|
- case VIDIOC_ENUM_FRAMEINTERVALS:
|
|
|
- case VIDIOC_G_ENC_INDEX:
|
|
|
- case VIDIOC_ENCODER_CMD:
|
|
|
- case VIDIOC_TRY_ENCODER_CMD:
|
|
|
- case VIDIOC_DECODER_CMD:
|
|
|
- case VIDIOC_TRY_DECODER_CMD:
|
|
|
- case VIDIOC_DBG_S_REGISTER:
|
|
|
- case VIDIOC_DBG_G_REGISTER:
|
|
|
- case VIDIOC_S_HW_FREQ_SEEK:
|
|
|
- case VIDIOC_S_DV_TIMINGS:
|
|
|
- case VIDIOC_G_DV_TIMINGS:
|
|
|
- case VIDIOC_DQEVENT:
|
|
|
- case VIDIOC_DQEVENT32:
|
|
|
- case VIDIOC_SUBSCRIBE_EVENT:
|
|
|
- case VIDIOC_UNSUBSCRIBE_EVENT:
|
|
|
- case VIDIOC_CREATE_BUFS32:
|
|
|
- case VIDIOC_PREPARE_BUF32:
|
|
|
- case VIDIOC_ENUM_DV_TIMINGS:
|
|
|
- case VIDIOC_QUERY_DV_TIMINGS:
|
|
|
- case VIDIOC_DV_TIMINGS_CAP:
|
|
|
- case VIDIOC_ENUM_FREQ_BANDS:
|
|
|
- case VIDIOC_SUBDEV_G_EDID32:
|
|
|
- case VIDIOC_SUBDEV_S_EDID32:
|
|
|
+ if (_IOC_TYPE(cmd) == 'V' && _IOC_NR(cmd) < BASE_VIDIOC_PRIVATE)
|
|
|
ret = do_video_ioctl(file, cmd, arg);
|
|
|
- break;
|
|
|
+ else if (vdev->fops->compat_ioctl32)
|
|
|
+ ret = vdev->fops->compat_ioctl32(file, cmd, arg);
|
|
|
|
|
|
- default:
|
|
|
- if (vdev->fops->compat_ioctl32)
|
|
|
- ret = vdev->fops->compat_ioctl32(file, cmd, arg);
|
|
|
-
|
|
|
- if (ret == -ENOIOCTLCMD)
|
|
|
- printk(KERN_WARNING "compat_ioctl32: "
|
|
|
- "unknown ioctl '%c', dir=%d, #%d (0x%08x)\n",
|
|
|
- _IOC_TYPE(cmd), _IOC_DIR(cmd), _IOC_NR(cmd),
|
|
|
- cmd);
|
|
|
- break;
|
|
|
- }
|
|
|
+ if (ret == -ENOIOCTLCMD)
|
|
|
+ pr_warn("compat_ioctl32: unknown ioctl '%c', dir=%d, #%d (0x%08x)\n",
|
|
|
+ _IOC_TYPE(cmd), _IOC_DIR(cmd), _IOC_NR(cmd), cmd);
|
|
|
return ret;
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(v4l2_compat_ioctl32);
|