[media] adv7180: add more subdev video ops
Add subdev video ops for ADV7180 video decoder. This makes decoder usable on the soc-camera drivers. [Sergei: renamed adv7180_try_mbus_fmt() to adv7180_mbus_fmt().] Signed-off-by: Vladimir Barinov <vladimir.barinov@cogentembedded.com> Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
Родитель
5f454d82e5
Коммит
cccb83f7a1
|
@ -1,6 +1,8 @@
|
|||
/*
|
||||
* adv7180.c Analog Devices ADV7180 video decoder driver
|
||||
* Copyright (c) 2009 Intel Corporation
|
||||
* Copyright (C) 2013 Cogent Embedded, Inc.
|
||||
* Copyright (C) 2013 Renesas Solutions Corp.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
|
@ -397,10 +399,54 @@ static void adv7180_exit_controls(struct adv7180_state *state)
|
|||
v4l2_ctrl_handler_free(&state->ctrl_hdl);
|
||||
}
|
||||
|
||||
static int adv7180_enum_mbus_fmt(struct v4l2_subdev *sd, unsigned int index,
|
||||
enum v4l2_mbus_pixelcode *code)
|
||||
{
|
||||
if (index > 0)
|
||||
return -EINVAL;
|
||||
|
||||
*code = V4L2_MBUS_FMT_YUYV8_2X8;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int adv7180_mbus_fmt(struct v4l2_subdev *sd,
|
||||
struct v4l2_mbus_framefmt *fmt)
|
||||
{
|
||||
struct adv7180_state *state = to_state(sd);
|
||||
|
||||
fmt->code = V4L2_MBUS_FMT_YUYV8_2X8;
|
||||
fmt->colorspace = V4L2_COLORSPACE_SMPTE170M;
|
||||
fmt->field = V4L2_FIELD_INTERLACED;
|
||||
fmt->width = 720;
|
||||
fmt->height = state->curr_norm & V4L2_STD_525_60 ? 480 : 576;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int adv7180_g_mbus_config(struct v4l2_subdev *sd,
|
||||
struct v4l2_mbus_config *cfg)
|
||||
{
|
||||
/*
|
||||
* The ADV7180 sensor supports BT.601/656 output modes.
|
||||
* The BT.656 is default and not yet configurable by s/w.
|
||||
*/
|
||||
cfg->flags = V4L2_MBUS_MASTER | V4L2_MBUS_PCLK_SAMPLE_RISING |
|
||||
V4L2_MBUS_DATA_ACTIVE_HIGH;
|
||||
cfg->type = V4L2_MBUS_BT656;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct v4l2_subdev_video_ops adv7180_video_ops = {
|
||||
.querystd = adv7180_querystd,
|
||||
.g_input_status = adv7180_g_input_status,
|
||||
.s_routing = adv7180_s_routing,
|
||||
.enum_mbus_fmt = adv7180_enum_mbus_fmt,
|
||||
.try_mbus_fmt = adv7180_mbus_fmt,
|
||||
.g_mbus_fmt = adv7180_mbus_fmt,
|
||||
.s_mbus_fmt = adv7180_mbus_fmt,
|
||||
.g_mbus_config = adv7180_g_mbus_config,
|
||||
};
|
||||
|
||||
static const struct v4l2_subdev_core_ops adv7180_core_ops = {
|
||||
|
|
Загрузка…
Ссылка в новой задаче