Commit 9483a3f8 authored by Tim Harvey's avatar Tim Harvey Committed by Mauro Carvalho Chehab

media: adv7180: add g_skip_frames support

The adv7180 produces 1 to 2 frames of garbage before proper sync is
established. This allows V4L2 drivers and apps to skip those.
Signed-off-by: default avatarTim Harvey <tharvey@gateworks.com>
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+samsung@kernel.org>
parent 32211e47
...@@ -180,6 +180,9 @@ ...@@ -180,6 +180,9 @@
#define V4L2_CID_ADV_FAST_SWITCH (V4L2_CID_USER_ADV7180_BASE + 0x00) #define V4L2_CID_ADV_FAST_SWITCH (V4L2_CID_USER_ADV7180_BASE + 0x00)
/* Initial number of frames to skip to avoid possible garbage */
#define ADV7180_NUM_OF_SKIP_FRAMES 2
struct adv7180_state; struct adv7180_state;
#define ADV7180_FLAG_RESET_POWERED BIT(0) #define ADV7180_FLAG_RESET_POWERED BIT(0)
...@@ -769,6 +772,13 @@ static int adv7180_g_mbus_config(struct v4l2_subdev *sd, ...@@ -769,6 +772,13 @@ static int adv7180_g_mbus_config(struct v4l2_subdev *sd,
return 0; return 0;
} }
static int adv7180_get_skip_frames(struct v4l2_subdev *sd, u32 *frames)
{
*frames = ADV7180_NUM_OF_SKIP_FRAMES;
return 0;
}
static int adv7180_g_pixelaspect(struct v4l2_subdev *sd, struct v4l2_fract *aspect) static int adv7180_g_pixelaspect(struct v4l2_subdev *sd, struct v4l2_fract *aspect)
{ {
struct adv7180_state *state = to_state(sd); struct adv7180_state *state = to_state(sd);
...@@ -849,10 +859,15 @@ static const struct v4l2_subdev_pad_ops adv7180_pad_ops = { ...@@ -849,10 +859,15 @@ static const struct v4l2_subdev_pad_ops adv7180_pad_ops = {
.get_fmt = adv7180_get_pad_format, .get_fmt = adv7180_get_pad_format,
}; };
static const struct v4l2_subdev_sensor_ops adv7180_sensor_ops = {
.g_skip_frames = adv7180_get_skip_frames,
};
static const struct v4l2_subdev_ops adv7180_ops = { static const struct v4l2_subdev_ops adv7180_ops = {
.core = &adv7180_core_ops, .core = &adv7180_core_ops,
.video = &adv7180_video_ops, .video = &adv7180_video_ops,
.pad = &adv7180_pad_ops, .pad = &adv7180_pad_ops,
.sensor = &adv7180_sensor_ops,
}; };
static irqreturn_t adv7180_irq(int irq, void *devid) static irqreturn_t adv7180_irq(int irq, void *devid)
......
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