@@ -60,6 +60,7 @@
#define OV5647_REG_MIPI_CTRL00 0x4800
#define OV5647_REG_MIPI_CTRL14 0x4814
#define OV5647_REG_AWB 0x5001
+#define OV5647_REG_ISP_CTRL3D 0x503d
#define REG_TERM 0xfffe
#define VAL_TERM 0xfe
@@ -812,6 +813,22 @@ static const struct ov5647_mode ov5647_8_bpp_modes[] = {
#define OV5647_DEFAULT_MODE (&ov5647_10_bpp_modes[3])
#define OV5647_DEFAULT_FORMAT (ov5647_10_bpp_modes[3].format)
+static const char * const ov5647_test_pattern_menu[] = {
+ "Disabled",
+ "Color Bars",
+ "Color Squares",
+ "Random Data",
+ "Input Data"
+};
+
+static u8 ov5647_test_pattern_val[] = {
+ 0x00, /* Disabled */
+ 0x80, /* Color Bars */
+ 0x82, /* Color Squares */
+ 0x81, /* Random Data */
+ 0x83, /* Input Data */
+};
+
static int ov5647_write16(struct v4l2_subdev *sd, u16 reg, u16 val)
{
unsigned char data[4] = { reg >> 8, reg & 0xff, val >> 8, val & 0xff};
@@ -1582,6 +1599,10 @@ static int ov5647_s_ctrl(struct v4l2_ctrl *ctrl)
ov5647_s_flip(sd, OV5647_REG_VFLIP, ctrl->val);
break;
+ case V4L2_CID_TEST_PATTERN:
+ ret = ov5647_write(sd, OV5647_REG_ISP_CTRL3D,
+ ov5647_test_pattern_val[ctrl->val]);
+ break;
default:
dev_info(&client->dev,
"Control (id:0x%x, val:0x%x) not supported\n",
@@ -1604,7 +1625,7 @@ static int ov5647_init_controls(struct ov5647 *sensor, struct device *dev)
int hblank, exposure_max, exposure_def;
struct v4l2_fwnode_device_properties props;
- v4l2_ctrl_handler_init(&sensor->ctrls, 10);
+ v4l2_ctrl_handler_init(&sensor->ctrls, 11);
v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops,
V4L2_CID_AUTOGAIN, 0, 1, 1, 0);
@@ -1658,6 +1679,11 @@ static int ov5647_init_controls(struct ov5647 *sensor, struct device *dev)
if (sensor->vflip)
sensor->vflip->flags |= V4L2_CTRL_FLAG_MODIFY_LAYOUT;
+ v4l2_ctrl_new_std_menu_items(&sensor->ctrls, &ov5647_ctrl_ops,
+ V4L2_CID_TEST_PATTERN,
+ ARRAY_SIZE(ov5647_test_pattern_menu) - 1,
+ 0, 0, ov5647_test_pattern_menu);
+
v4l2_fwnode_device_parse(dev, &props);
v4l2_ctrl_new_fwnode_properties(&sensor->ctrls, &ov5647_ctrl_ops,
Add support for V4L2_CID_TEST_PATTERN. Based on a patch from Renesas R-Car BSP 4.1.0 from Valentine Barshak <valentine.barshak@cogentembedded.com> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org> --- drivers/media/i2c/ov5647.c | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-)