[media] smiapp: provide g_skip_top_lines method in sensor ops
authorIvaylo Dimitrov <ivo.g.dimitrov.75@gmail.com>
Sat, 16 Apr 2016 08:12:20 +0000 (05:12 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Fri, 6 May 2016 18:40:04 +0000 (15:40 -0300)
Some sensors (like the one in Nokia N900) provide metadata in the first
couple of lines. Make that information information available to the
pipeline.

Use u16 instead, this is a 16-bit value.

Signed-off-by: Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/i2c/smiapp/smiapp-core.c
drivers/media/i2c/smiapp/smiapp.h

index a215efe..3dfe387 100644 (file)
@@ -188,6 +188,8 @@ static int smiapp_read_frame_fmt(struct smiapp_sensor *sensor)
                embedded_end = 0;
        }
 
+       sensor->image_start = image_start;
+
        dev_dbg(&client->dev, "embedded data from lines %d to %d\n",
                embedded_start, embedded_end);
        dev_dbg(&client->dev, "image data starts at line %d\n", image_start);
@@ -2280,6 +2282,15 @@ static int smiapp_get_skip_frames(struct v4l2_subdev *subdev, u32 *frames)
        return 0;
 }
 
+static int smiapp_get_skip_top_lines(struct v4l2_subdev *subdev, u32 *lines)
+{
+       struct smiapp_sensor *sensor = to_smiapp_sensor(subdev);
+
+       *lines = sensor->image_start;
+
+       return 0;
+}
+
 /* -----------------------------------------------------------------------------
  * sysfs attributes
  */
@@ -2890,6 +2901,7 @@ static const struct v4l2_subdev_pad_ops smiapp_pad_ops = {
 
 static const struct v4l2_subdev_sensor_ops smiapp_sensor_ops = {
        .g_skip_frames = smiapp_get_skip_frames,
+       .g_skip_top_lines = smiapp_get_skip_top_lines,
 };
 
 static const struct v4l2_subdev_ops smiapp_ops = {
index f6af0cc..2174f89 100644 (file)
@@ -217,6 +217,7 @@ struct smiapp_sensor {
 
        u8 hvflip_inv_mask; /* H/VFLIP inversion due to sensor orientation */
        u8 frame_skip;
+       u16 image_start;        /* Offset to first line after metadata lines */
 
        int power_count;