Commit fa8cb644 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab

[media] ov2659: Don't depend on subdev API

The subdev API is optional. No driver should depend on it.

Avoid compilation breakages if subdev API is not selected:

drivers/media/i2c/ov2659.c: In function ‘ov2659_get_fmt’:
drivers/media/i2c/ov2659.c:1054:3: error: implicit declaration of function ‘v4l2_subdev_get_try_format’ [-Werror=implicit-function-declaration]
   mf = v4l2_subdev_get_try_format(sd, cfg, 0);
   ^
drivers/media/i2c/ov2659.c:1054:6: warning: assignment makes pointer from integer without a cast
   mf = v4l2_subdev_get_try_format(sd, cfg, 0);
      ^
drivers/media/i2c/ov2659.c: In function ‘ov2659_set_fmt’:
drivers/media/i2c/ov2659.c:1129:6: warning: assignment makes pointer from integer without a cast
   mf = v4l2_subdev_get_try_format(sd, cfg, fmt->pad);
      ^
drivers/media/i2c/ov2659.c: In function ‘ov2659_open’:
drivers/media/i2c/ov2659.c:1264:38: error: ‘struct v4l2_subdev_fh’ has no member named ‘pad’
     v4l2_subdev_get_try_format(sd, fh->pad, 0);
                                      ^
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
Tested-by: default avatarLad, Prabhakar <prabhakar.csengg@gmail.com>
parent 04bd844a
...@@ -1046,16 +1046,21 @@ static int ov2659_get_fmt(struct v4l2_subdev *sd, ...@@ -1046,16 +1046,21 @@ static int ov2659_get_fmt(struct v4l2_subdev *sd,
{ {
struct i2c_client *client = v4l2_get_subdevdata(sd); struct i2c_client *client = v4l2_get_subdevdata(sd);
struct ov2659 *ov2659 = to_ov2659(sd); struct ov2659 *ov2659 = to_ov2659(sd);
struct v4l2_mbus_framefmt *mf;
dev_dbg(&client->dev, "ov2659_get_fmt\n"); dev_dbg(&client->dev, "ov2659_get_fmt\n");
if (fmt->which == V4L2_SUBDEV_FORMAT_TRY) { if (fmt->which == V4L2_SUBDEV_FORMAT_TRY) {
#ifdef CONFIG_VIDEO_V4L2_SUBDEV_API
struct v4l2_mbus_framefmt *mf;
mf = v4l2_subdev_get_try_format(sd, cfg, 0); mf = v4l2_subdev_get_try_format(sd, cfg, 0);
mutex_lock(&ov2659->lock); mutex_lock(&ov2659->lock);
fmt->format = *mf; fmt->format = *mf;
mutex_unlock(&ov2659->lock); mutex_unlock(&ov2659->lock);
return 0; return 0;
#else
return -ENOTTY;
#endif
} }
mutex_lock(&ov2659->lock); mutex_lock(&ov2659->lock);
...@@ -1126,8 +1131,12 @@ static int ov2659_set_fmt(struct v4l2_subdev *sd, ...@@ -1126,8 +1131,12 @@ static int ov2659_set_fmt(struct v4l2_subdev *sd,
mutex_lock(&ov2659->lock); mutex_lock(&ov2659->lock);
if (fmt->which == V4L2_SUBDEV_FORMAT_TRY) { if (fmt->which == V4L2_SUBDEV_FORMAT_TRY) {
#ifdef CONFIG_VIDEO_V4L2_SUBDEV_API
mf = v4l2_subdev_get_try_format(sd, cfg, fmt->pad); mf = v4l2_subdev_get_try_format(sd, cfg, fmt->pad);
*mf = fmt->format; *mf = fmt->format;
#else
return -ENOTTY;
#endif
} else { } else {
s64 val; s64 val;
...@@ -1257,6 +1266,7 @@ static const char * const ov2659_test_pattern_menu[] = { ...@@ -1257,6 +1266,7 @@ static const char * const ov2659_test_pattern_menu[] = {
* V4L2 subdev internal operations * V4L2 subdev internal operations
*/ */
#ifdef CONFIG_VIDEO_V4L2_SUBDEV_API
static int ov2659_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh) static int ov2659_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh)
{ {
struct i2c_client *client = v4l2_get_subdevdata(sd); struct i2c_client *client = v4l2_get_subdevdata(sd);
...@@ -1269,6 +1279,7 @@ static int ov2659_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh) ...@@ -1269,6 +1279,7 @@ static int ov2659_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh)
return 0; return 0;
} }
#endif
static const struct v4l2_subdev_core_ops ov2659_subdev_core_ops = { static const struct v4l2_subdev_core_ops ov2659_subdev_core_ops = {
.log_status = v4l2_ctrl_subdev_log_status, .log_status = v4l2_ctrl_subdev_log_status,
...@@ -1287,6 +1298,7 @@ static const struct v4l2_subdev_pad_ops ov2659_subdev_pad_ops = { ...@@ -1287,6 +1298,7 @@ static const struct v4l2_subdev_pad_ops ov2659_subdev_pad_ops = {
.set_fmt = ov2659_set_fmt, .set_fmt = ov2659_set_fmt,
}; };
#ifdef CONFIG_VIDEO_V4L2_SUBDEV_API
static const struct v4l2_subdev_ops ov2659_subdev_ops = { static const struct v4l2_subdev_ops ov2659_subdev_ops = {
.core = &ov2659_subdev_core_ops, .core = &ov2659_subdev_core_ops,
.video = &ov2659_subdev_video_ops, .video = &ov2659_subdev_video_ops,
...@@ -1296,6 +1308,7 @@ static const struct v4l2_subdev_ops ov2659_subdev_ops = { ...@@ -1296,6 +1308,7 @@ static const struct v4l2_subdev_ops ov2659_subdev_ops = {
static const struct v4l2_subdev_internal_ops ov2659_subdev_internal_ops = { static const struct v4l2_subdev_internal_ops ov2659_subdev_internal_ops = {
.open = ov2659_open, .open = ov2659_open,
}; };
#endif
static int ov2659_detect(struct v4l2_subdev *sd) static int ov2659_detect(struct v4l2_subdev *sd)
{ {
...@@ -1426,11 +1439,13 @@ static int ov2659_probe(struct i2c_client *client, ...@@ -1426,11 +1439,13 @@ static int ov2659_probe(struct i2c_client *client,
sd = &ov2659->sd; sd = &ov2659->sd;
client->flags |= I2C_CLIENT_SCCB; client->flags |= I2C_CLIENT_SCCB;
#ifdef CONFIG_VIDEO_V4L2_SUBDEV_API
v4l2_i2c_subdev_init(sd, client, &ov2659_subdev_ops); v4l2_i2c_subdev_init(sd, client, &ov2659_subdev_ops);
sd->internal_ops = &ov2659_subdev_internal_ops; sd->internal_ops = &ov2659_subdev_internal_ops;
sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE | sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE |
V4L2_SUBDEV_FL_HAS_EVENTS; V4L2_SUBDEV_FL_HAS_EVENTS;
#endif
#if defined(CONFIG_MEDIA_CONTROLLER) #if defined(CONFIG_MEDIA_CONTROLLER)
ov2659->pad.flags = MEDIA_PAD_FL_SOURCE; ov2659->pad.flags = MEDIA_PAD_FL_SOURCE;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment