i2c: tvp5158: Enabling the enum_framesizes subdev op
authorRakesh Movva <r-movva@ti.com>
Wed, 20 May 2015 01:14:28 +0000 (20:14 -0500)
committerGerrit Code Review <gerrit2@DLEZVX23.itg.ti.com>
Wed, 27 May 2015 12:24:09 +0000 (07:24 -0500)
This patch allows the VIP driver to call the enum_framsizes subdev
'op' so that it can return the corresct set of supported preview
sizes of the sensor.

Change-Id: I3aca8d913ba30c2cf82678f58bdb83d934d0a610
Signed-off-by: Rakesh Movva <r-movva@ti.com>
drivers/media/i2c/tvp5158.c

index 0a37a48bc892c5bc00094b689d28c023b858d446..d36f4ae0fe15394241e7eff78447cc299a7a4f8c 100644 (file)
@@ -425,6 +425,27 @@ static int tvp5158_enum_fmt(struct v4l2_subdev *sd, unsigned int index,
        return 0;
 }
 
+static int tvp5158_enum_framesizes(struct v4l2_subdev *sd,
+                       struct v4l2_frmsizeenum *f)
+{
+
+       /* For now, hard coded resolutions for TVP5158 NTSC decoder */
+       int cam_width[] =       { 720,  640,};
+       int cam_height[] =      { 240,  240,};
+
+       if (f->index >= 2)
+               return -EINVAL;
+
+       f->type = V4L2_FRMSIZE_TYPE_DISCRETE;
+       f->discrete.width = cam_width[f->index];
+       /* tvp5158 sensor outputs interlaced data, hence, in the timings
+       * we listed down the field height. In the framesize query we need
+       * to publish the frame height, so multiply the field height by 2 */
+       f->discrete.height = 2 * cam_height[f->index];
+
+       return 0;
+}
+
 static int tvp5158_get_gpios(struct device_node *node,
                        struct i2c_client *client)
 {
@@ -474,6 +495,7 @@ static int tvp5158_set_gpios(struct i2c_client *client)
 static struct v4l2_subdev_video_ops tvp5158_video_ops = {
        .querystd       = tvp5158_querystd,
        .enum_mbus_fmt  = tvp5158_enum_fmt,
+       .enum_framesizes = tvp5158_enum_framesizes,
        .g_parm         = tvp5158_g_parm,
        .s_parm         = tvp5158_s_parm,
        .s_stream       = tvp5158_s_stream,