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