Revert "media: subdev: disallow ioctl for saa6588/davinci"
This reverts commit db317a3722
as it
breaks the ABI and is not needed for Android devices at this point in
time.
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I060fe0a18cc6232f82fa4d3dd0426262a71aaccf
This commit is contained in:
@@ -380,7 +380,7 @@ static void saa6588_configure(struct saa6588 *s)
|
|||||||
|
|
||||||
/* ---------------------------------------------------------------------- */
|
/* ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
static long saa6588_command(struct v4l2_subdev *sd, unsigned int cmd, void *arg)
|
static long saa6588_ioctl(struct v4l2_subdev *sd, unsigned int cmd, void *arg)
|
||||||
{
|
{
|
||||||
struct saa6588 *s = to_saa6588(sd);
|
struct saa6588 *s = to_saa6588(sd);
|
||||||
struct saa6588_command *a = arg;
|
struct saa6588_command *a = arg;
|
||||||
@@ -433,7 +433,7 @@ static int saa6588_s_tuner(struct v4l2_subdev *sd, const struct v4l2_tuner *vt)
|
|||||||
/* ----------------------------------------------------------------------- */
|
/* ----------------------------------------------------------------------- */
|
||||||
|
|
||||||
static const struct v4l2_subdev_core_ops saa6588_core_ops = {
|
static const struct v4l2_subdev_core_ops saa6588_core_ops = {
|
||||||
.command = saa6588_command,
|
.ioctl = saa6588_ioctl,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct v4l2_subdev_tuner_ops saa6588_tuner_ops = {
|
static const struct v4l2_subdev_tuner_ops saa6588_tuner_ops = {
|
||||||
|
@@ -3187,7 +3187,7 @@ static int radio_release(struct file *file)
|
|||||||
|
|
||||||
btv->radio_user--;
|
btv->radio_user--;
|
||||||
|
|
||||||
bttv_call_all(btv, core, command, SAA6588_CMD_CLOSE, &cmd);
|
bttv_call_all(btv, core, ioctl, SAA6588_CMD_CLOSE, &cmd);
|
||||||
|
|
||||||
if (btv->radio_user == 0)
|
if (btv->radio_user == 0)
|
||||||
btv->has_radio_tuner = 0;
|
btv->has_radio_tuner = 0;
|
||||||
@@ -3268,7 +3268,7 @@ static ssize_t radio_read(struct file *file, char __user *data,
|
|||||||
cmd.result = -ENODEV;
|
cmd.result = -ENODEV;
|
||||||
radio_enable(btv);
|
radio_enable(btv);
|
||||||
|
|
||||||
bttv_call_all(btv, core, command, SAA6588_CMD_READ, &cmd);
|
bttv_call_all(btv, core, ioctl, SAA6588_CMD_READ, &cmd);
|
||||||
|
|
||||||
return cmd.result;
|
return cmd.result;
|
||||||
}
|
}
|
||||||
@@ -3289,7 +3289,7 @@ static __poll_t radio_poll(struct file *file, poll_table *wait)
|
|||||||
cmd.instance = file;
|
cmd.instance = file;
|
||||||
cmd.event_list = wait;
|
cmd.event_list = wait;
|
||||||
cmd.poll_mask = res;
|
cmd.poll_mask = res;
|
||||||
bttv_call_all(btv, core, command, SAA6588_CMD_POLL, &cmd);
|
bttv_call_all(btv, core, ioctl, SAA6588_CMD_POLL, &cmd);
|
||||||
|
|
||||||
return cmd.poll_mask;
|
return cmd.poll_mask;
|
||||||
}
|
}
|
||||||
|
@@ -1178,7 +1178,7 @@ static int video_release(struct file *file)
|
|||||||
|
|
||||||
saa_call_all(dev, tuner, standby);
|
saa_call_all(dev, tuner, standby);
|
||||||
if (vdev->vfl_type == VFL_TYPE_RADIO)
|
if (vdev->vfl_type == VFL_TYPE_RADIO)
|
||||||
saa_call_all(dev, core, command, SAA6588_CMD_CLOSE, &cmd);
|
saa_call_all(dev, core, ioctl, SAA6588_CMD_CLOSE, &cmd);
|
||||||
mutex_unlock(&dev->lock);
|
mutex_unlock(&dev->lock);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@@ -1197,7 +1197,7 @@ static ssize_t radio_read(struct file *file, char __user *data,
|
|||||||
cmd.result = -ENODEV;
|
cmd.result = -ENODEV;
|
||||||
|
|
||||||
mutex_lock(&dev->lock);
|
mutex_lock(&dev->lock);
|
||||||
saa_call_all(dev, core, command, SAA6588_CMD_READ, &cmd);
|
saa_call_all(dev, core, ioctl, SAA6588_CMD_READ, &cmd);
|
||||||
mutex_unlock(&dev->lock);
|
mutex_unlock(&dev->lock);
|
||||||
|
|
||||||
return cmd.result;
|
return cmd.result;
|
||||||
@@ -1213,7 +1213,7 @@ static __poll_t radio_poll(struct file *file, poll_table *wait)
|
|||||||
cmd.event_list = wait;
|
cmd.event_list = wait;
|
||||||
cmd.poll_mask = 0;
|
cmd.poll_mask = 0;
|
||||||
mutex_lock(&dev->lock);
|
mutex_lock(&dev->lock);
|
||||||
saa_call_all(dev, core, command, SAA6588_CMD_POLL, &cmd);
|
saa_call_all(dev, core, ioctl, SAA6588_CMD_POLL, &cmd);
|
||||||
mutex_unlock(&dev->lock);
|
mutex_unlock(&dev->lock);
|
||||||
|
|
||||||
return rc | cmd.poll_mask;
|
return rc | cmd.poll_mask;
|
||||||
|
@@ -47,7 +47,7 @@ static int venc_is_second_field(struct vpbe_display *disp_dev)
|
|||||||
|
|
||||||
ret = v4l2_subdev_call(vpbe_dev->venc,
|
ret = v4l2_subdev_call(vpbe_dev->venc,
|
||||||
core,
|
core,
|
||||||
command,
|
ioctl,
|
||||||
VENC_GET_FLD,
|
VENC_GET_FLD,
|
||||||
&val);
|
&val);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
|
@@ -521,7 +521,9 @@ static int venc_s_routing(struct v4l2_subdev *sd, u32 input, u32 output,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static long venc_command(struct v4l2_subdev *sd, unsigned int cmd, void *arg)
|
static long venc_ioctl(struct v4l2_subdev *sd,
|
||||||
|
unsigned int cmd,
|
||||||
|
void *arg)
|
||||||
{
|
{
|
||||||
u32 val;
|
u32 val;
|
||||||
|
|
||||||
@@ -540,7 +542,7 @@ static long venc_command(struct v4l2_subdev *sd, unsigned int cmd, void *arg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static const struct v4l2_subdev_core_ops venc_core_ops = {
|
static const struct v4l2_subdev_core_ops venc_core_ops = {
|
||||||
.command = venc_command,
|
.ioctl = venc_ioctl,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct v4l2_subdev_video_ops venc_video_ops = {
|
static const struct v4l2_subdev_video_ops venc_video_ops = {
|
||||||
|
@@ -162,9 +162,6 @@ struct v4l2_subdev_io_pin_config {
|
|||||||
* @s_gpio: set GPIO pins. Very simple right now, might need to be extended with
|
* @s_gpio: set GPIO pins. Very simple right now, might need to be extended with
|
||||||
* a direction argument if needed.
|
* a direction argument if needed.
|
||||||
*
|
*
|
||||||
* @command: called by in-kernel drivers in order to call functions internal
|
|
||||||
* to subdev drivers driver that have a separate callback.
|
|
||||||
*
|
|
||||||
* @ioctl: called at the end of ioctl() syscall handler at the V4L2 core.
|
* @ioctl: called at the end of ioctl() syscall handler at the V4L2 core.
|
||||||
* used to provide support for private ioctls used on the driver.
|
* used to provide support for private ioctls used on the driver.
|
||||||
*
|
*
|
||||||
@@ -196,7 +193,6 @@ struct v4l2_subdev_core_ops {
|
|||||||
int (*load_fw)(struct v4l2_subdev *sd);
|
int (*load_fw)(struct v4l2_subdev *sd);
|
||||||
int (*reset)(struct v4l2_subdev *sd, u32 val);
|
int (*reset)(struct v4l2_subdev *sd, u32 val);
|
||||||
int (*s_gpio)(struct v4l2_subdev *sd, u32 val);
|
int (*s_gpio)(struct v4l2_subdev *sd, u32 val);
|
||||||
long (*command)(struct v4l2_subdev *sd, unsigned int cmd, void *arg);
|
|
||||||
long (*ioctl)(struct v4l2_subdev *sd, unsigned int cmd, void *arg);
|
long (*ioctl)(struct v4l2_subdev *sd, unsigned int cmd, void *arg);
|
||||||
#ifdef CONFIG_COMPAT
|
#ifdef CONFIG_COMPAT
|
||||||
long (*compat_ioctl32)(struct v4l2_subdev *sd, unsigned int cmd,
|
long (*compat_ioctl32)(struct v4l2_subdev *sd, unsigned int cmd,
|
||||||
|
Reference in New Issue
Block a user