|
@@ -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 = {
|