Message ID | 1542038454-20066-4-git-send-email-akinobu.mita@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | media: i2c: small enhancements for camera sensor drivers | expand |
On Tue, Nov 13, 2018 at 01:00:50AM +0900, Akinobu Mita wrote: > The ov2640 has the test pattern generator features. This makes use of > it through V4L2_CID_TEST_PATTERN control. > > Cc: Sakari Ailus <sakari.ailus@linux.intel.com> > Cc: Mauro Carvalho Chehab <mchehab@kernel.org> > Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com> > --- > drivers/media/i2c/ov2640.c | 14 +++++++++++++- > 1 file changed, 13 insertions(+), 1 deletion(-) > > diff --git a/drivers/media/i2c/ov2640.c b/drivers/media/i2c/ov2640.c > index 20a8853..4992d77 100644 > --- a/drivers/media/i2c/ov2640.c > +++ b/drivers/media/i2c/ov2640.c > @@ -705,6 +705,11 @@ static int ov2640_reset(struct i2c_client *client) > return ret; > } > > +static const char * const ov2640_test_pattern_menu[] = { > + "Disabled", > + "Color bar", s/b/B/ The smiapp driver uses "Eight Vertical Colour Bars", not sure if that'd fit here or not. FYI. > +}; > + > /* > * functions > */ > @@ -740,6 +745,9 @@ static int ov2640_s_ctrl(struct v4l2_ctrl *ctrl) > case V4L2_CID_HFLIP: > val = ctrl->val ? REG04_HFLIP_IMG : 0x00; > return ov2640_mask_set(client, REG04, REG04_HFLIP_IMG, val); > + case V4L2_CID_TEST_PATTERN: > + val = ctrl->val ? COM7_COLOR_BAR_TEST : 0x00; > + return ov2640_mask_set(client, COM7, COM7_COLOR_BAR_TEST, val); > } > > return -EINVAL; > @@ -1184,12 +1192,16 @@ static int ov2640_probe(struct i2c_client *client, > v4l2_i2c_subdev_init(&priv->subdev, client, &ov2640_subdev_ops); > priv->subdev.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE; > mutex_init(&priv->lock); > - v4l2_ctrl_handler_init(&priv->hdl, 2); > + v4l2_ctrl_handler_init(&priv->hdl, 3); > priv->hdl.lock = &priv->lock; > v4l2_ctrl_new_std(&priv->hdl, &ov2640_ctrl_ops, > V4L2_CID_VFLIP, 0, 1, 1, 0); > v4l2_ctrl_new_std(&priv->hdl, &ov2640_ctrl_ops, > V4L2_CID_HFLIP, 0, 1, 1, 0); > + v4l2_ctrl_new_std_menu_items(&priv->hdl, &ov2640_ctrl_ops, > + V4L2_CID_TEST_PATTERN, > + ARRAY_SIZE(ov2640_test_pattern_menu) - 1, 0, 0, > + ov2640_test_pattern_menu); > priv->subdev.ctrl_handler = &priv->hdl; > if (priv->hdl.error) { > ret = priv->hdl.error; > -- > 2.7.4 >
2018年11月13日(火) 19:37 Sakari Ailus <sakari.ailus@linux.intel.com>: > > On Tue, Nov 13, 2018 at 01:00:50AM +0900, Akinobu Mita wrote: > > The ov2640 has the test pattern generator features. This makes use of > > it through V4L2_CID_TEST_PATTERN control. > > > > Cc: Sakari Ailus <sakari.ailus@linux.intel.com> > > Cc: Mauro Carvalho Chehab <mchehab@kernel.org> > > Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com> > > --- > > drivers/media/i2c/ov2640.c | 14 +++++++++++++- > > 1 file changed, 13 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/media/i2c/ov2640.c b/drivers/media/i2c/ov2640.c > > index 20a8853..4992d77 100644 > > --- a/drivers/media/i2c/ov2640.c > > +++ b/drivers/media/i2c/ov2640.c > > @@ -705,6 +705,11 @@ static int ov2640_reset(struct i2c_client *client) > > return ret; > > } > > > > +static const char * const ov2640_test_pattern_menu[] = { > > + "Disabled", > > + "Color bar", > > s/b/B/ > > The smiapp driver uses "Eight Vertical Colour Bars", not sure if that'd fit > here or not. FYI. This test pattern shows eight vertical color bars with blending actual sensor image, although the datasheet tells just 'Color bar'. So either is fine for me.
On Tue, Nov 13, 2018 at 10:55:46PM +0900, Akinobu Mita wrote: > 2018年11月13日(火) 19:37 Sakari Ailus <sakari.ailus@linux.intel.com>: > > > > On Tue, Nov 13, 2018 at 01:00:50AM +0900, Akinobu Mita wrote: > > > The ov2640 has the test pattern generator features. This makes use of > > > it through V4L2_CID_TEST_PATTERN control. > > > > > > Cc: Sakari Ailus <sakari.ailus@linux.intel.com> > > > Cc: Mauro Carvalho Chehab <mchehab@kernel.org> > > > Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com> > > > --- > > > drivers/media/i2c/ov2640.c | 14 +++++++++++++- > > > 1 file changed, 13 insertions(+), 1 deletion(-) > > > > > > diff --git a/drivers/media/i2c/ov2640.c b/drivers/media/i2c/ov2640.c > > > index 20a8853..4992d77 100644 > > > --- a/drivers/media/i2c/ov2640.c > > > +++ b/drivers/media/i2c/ov2640.c > > > @@ -705,6 +705,11 @@ static int ov2640_reset(struct i2c_client *client) > > > return ret; > > > } > > > > > > +static const char * const ov2640_test_pattern_menu[] = { > > > + "Disabled", > > > + "Color bar", > > > > s/b/B/ > > > > The smiapp driver uses "Eight Vertical Colour Bars", not sure if that'd fit > > here or not. FYI. > > This test pattern shows eight vertical color bars with blending actual > sensor image, although the datasheet tells just 'Color bar'. > > So either is fine for me. I'll use what the smiapp driver does. Thanks.
diff --git a/drivers/media/i2c/ov2640.c b/drivers/media/i2c/ov2640.c index 20a8853..4992d77 100644 --- a/drivers/media/i2c/ov2640.c +++ b/drivers/media/i2c/ov2640.c @@ -705,6 +705,11 @@ static int ov2640_reset(struct i2c_client *client) return ret; } +static const char * const ov2640_test_pattern_menu[] = { + "Disabled", + "Color bar", +}; + /* * functions */ @@ -740,6 +745,9 @@ static int ov2640_s_ctrl(struct v4l2_ctrl *ctrl) case V4L2_CID_HFLIP: val = ctrl->val ? REG04_HFLIP_IMG : 0x00; return ov2640_mask_set(client, REG04, REG04_HFLIP_IMG, val); + case V4L2_CID_TEST_PATTERN: + val = ctrl->val ? COM7_COLOR_BAR_TEST : 0x00; + return ov2640_mask_set(client, COM7, COM7_COLOR_BAR_TEST, val); } return -EINVAL; @@ -1184,12 +1192,16 @@ static int ov2640_probe(struct i2c_client *client, v4l2_i2c_subdev_init(&priv->subdev, client, &ov2640_subdev_ops); priv->subdev.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE; mutex_init(&priv->lock); - v4l2_ctrl_handler_init(&priv->hdl, 2); + v4l2_ctrl_handler_init(&priv->hdl, 3); priv->hdl.lock = &priv->lock; v4l2_ctrl_new_std(&priv->hdl, &ov2640_ctrl_ops, V4L2_CID_VFLIP, 0, 1, 1, 0); v4l2_ctrl_new_std(&priv->hdl, &ov2640_ctrl_ops, V4L2_CID_HFLIP, 0, 1, 1, 0); + v4l2_ctrl_new_std_menu_items(&priv->hdl, &ov2640_ctrl_ops, + V4L2_CID_TEST_PATTERN, + ARRAY_SIZE(ov2640_test_pattern_menu) - 1, 0, 0, + ov2640_test_pattern_menu); priv->subdev.ctrl_handler = &priv->hdl; if (priv->hdl.error) { ret = priv->hdl.error;
The ov2640 has the test pattern generator features. This makes use of it through V4L2_CID_TEST_PATTERN control. Cc: Sakari Ailus <sakari.ailus@linux.intel.com> Cc: Mauro Carvalho Chehab <mchehab@kernel.org> Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com> --- drivers/media/i2c/ov2640.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-)