From: Sakari Ailus <sakari.ailus@linux.intel.com>
To: linux-media@vger.kernel.org
Cc: pavel@ucw.cz
Subject: [PATCH v3 2/2] ad5820: Use VOICE_COIL_CURRENT control
Date: Tue, 14 Feb 2017 14:20:23 +0200 [thread overview]
Message-ID: <1487074823-28274-3-git-send-email-sakari.ailus@linux.intel.com> (raw)
In-Reply-To: <1487074823-28274-1-git-send-email-sakari.ailus@linux.intel.com>
Add V4L2_CID_VOICE_COIL_CURRENT control support to the ad5820 driver. The
usage of the control is equivalent to how V4L2_CID_FOCUS_ABSOLUTE was used
by the driver. The old control remains supported.
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
drivers/media/i2c/ad5820.c | 27 +++++++++++++++++++++------
1 file changed, 21 insertions(+), 6 deletions(-)
diff --git a/drivers/media/i2c/ad5820.c b/drivers/media/i2c/ad5820.c
index a9026a91..e5ff1a2 100644
--- a/drivers/media/i2c/ad5820.c
+++ b/drivers/media/i2c/ad5820.c
@@ -51,7 +51,7 @@ struct ad5820_device {
struct regulator *vana;
struct v4l2_ctrl_handler ctrls;
- u32 focus_absolute;
+ struct v4l2_ctrl *focus, *curr;
u32 focus_ramp_time;
u32 focus_ramp_mode;
@@ -59,6 +59,7 @@ struct ad5820_device {
int power_count;
bool standby;
+ bool in_set_ctrl;
};
static int ad5820_write(struct ad5820_device *coil, u16 data)
@@ -98,7 +99,7 @@ static int ad5820_update_hw(struct ad5820_device *coil)
status = RAMP_US_TO_CODE(coil->focus_ramp_time);
status |= coil->focus_ramp_mode
? AD5820_RAMP_MODE_64_16 : AD5820_RAMP_MODE_LINEAR;
- status |= coil->focus_absolute << AD5820_DAC_SHIFT;
+ status |= coil->curr->val << AD5820_DAC_SHIFT;
if (coil->standby)
status |= AD5820_POWER_DOWN;
@@ -160,9 +161,16 @@ static int ad5820_set_ctrl(struct v4l2_ctrl *ctrl)
struct ad5820_device *coil =
container_of(ctrl->handler, struct ad5820_device, ctrls);
+ if (coil->in_set_ctrl)
+ return 0;
+
switch (ctrl->id) {
case V4L2_CID_FOCUS_ABSOLUTE:
- coil->focus_absolute = ctrl->val;
+ case V4L2_CID_VOICE_COIL_CURRENT:
+ coil->in_set_ctrl = true;
+ __v4l2_ctrl_s_ctrl(ctrl == coil->focus ?
+ coil->curr : coil->focus, ctrl->val);
+ coil->in_set_ctrl = false;
return ad5820_update_hw(coil);
}
@@ -189,14 +197,21 @@ static int ad5820_init_controls(struct ad5820_device *coil)
* will just use abstract codes here. In any case, smaller value = focus
* position farther from camera. The default zero value means focus at
* infinity, and also least current consumption.
+ *
+ * The two controls below control the current. The
+ * FOCUS_ABSOLUTE is there for compatibility with old user
+ * space whereas the VOICE_COIL_CURRENT should be used by both
+ * new applications and drivers.
*/
- v4l2_ctrl_new_std(&coil->ctrls, &ad5820_ctrl_ops,
- V4L2_CID_FOCUS_ABSOLUTE, 0, 1023, 1, 0);
+ coil->focus = v4l2_ctrl_new_std(&coil->ctrls, &ad5820_ctrl_ops,
+ V4L2_CID_FOCUS_ABSOLUTE, 0, 1023, 1, 0);
+ coil->curr = v4l2_ctrl_new_std(&coil->ctrls, &ad5820_ctrl_ops,
+ V4L2_CID_VOICE_COIL_CURRENT,
+ 0, 1023, 1, 0);
if (coil->ctrls.error)
return coil->ctrls.error;
- coil->focus_absolute = 0;
coil->focus_ramp_time = 0;
coil->focus_ramp_mode = 0;
--
2.7.4
prev parent reply other threads:[~2017-02-14 12:23 UTC|newest]
Thread overview: 152+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-02-14 12:20 [PATCH v3 0/2] v4l: Add camera voice coil lens control class, current control Sakari Ailus
2017-02-14 12:20 ` [PATCH v3 1/2] " Sakari Ailus
2017-02-14 22:47 ` Pavel Machek
2017-02-15 7:15 ` Sakari Ailus
2017-02-15 8:09 ` Pavel Machek
2017-02-20 22:26 ` Sakari Ailus
2017-02-20 22:48 ` Pavel Machek
2017-04-15 2:23 ` Mauro Carvalho Chehab
2017-04-15 7:12 ` Pavel Machek
2017-04-16 9:12 ` Sakari Ailus
2017-04-19 13:51 ` Mauro Carvalho Chehab
2017-04-24 9:30 ` support autofocus / autogain in libv4l2 Pavel Machek
2017-04-24 13:38 ` Mauro Carvalho Chehab
2017-04-24 13:38 ` Mauro Carvalho Chehab
2017-04-24 21:29 ` Pavel Machek
2017-04-24 21:29 ` Pavel Machek
2017-04-25 1:47 ` Mauro Carvalho Chehab
2017-04-25 1:47 ` Mauro Carvalho Chehab
2017-04-25 8:05 ` Pavel Machek
2017-04-25 8:05 ` Pavel Machek
2017-04-25 8:08 ` Pali Rohár
2017-04-25 8:08 ` Pali Rohár
2017-04-25 8:08 ` Pali Rohár
2017-04-25 11:23 ` Pavel Machek
2017-04-25 11:23 ` Pavel Machek
2017-04-25 11:30 ` Pali Rohár
2017-04-25 11:30 ` Pali Rohár
2017-04-25 12:28 ` Pavel Machek
2017-04-25 12:28 ` Pavel Machek
2017-04-25 12:51 ` Pali Rohár
2017-04-25 12:51 ` Pali Rohár
2017-04-25 16:55 ` Nicolas Dufresne
2017-04-25 16:55 ` Nicolas Dufresne
2017-04-25 16:51 ` Nicolas Dufresne
2017-04-25 16:51 ` Nicolas Dufresne
2017-04-25 16:53 ` Nicolas Dufresne
2017-04-25 16:53 ` Nicolas Dufresne
2017-04-25 16:53 ` Nicolas Dufresne
2017-04-26 10:53 ` Pavel Machek
2017-04-26 10:53 ` Pavel Machek
2017-04-26 10:53 ` [patch] propagating controls in libv4l2 was " Pavel Machek
2017-04-26 10:53 ` Pavel Machek
2017-04-26 11:13 ` Mauro Carvalho Chehab
2017-04-26 11:13 ` Mauro Carvalho Chehab
2017-04-26 13:23 ` [patch] autogain support for bayer10 format (was Re: [patch] propagating controls in libv4l2) Pavel Machek
2017-04-26 13:23 ` Pavel Machek
2017-04-26 15:43 ` Ivaylo Dimitrov
2017-04-26 15:43 ` Ivaylo Dimitrov
2017-04-26 22:51 ` Pavel Machek
2017-04-26 22:51 ` Pavel Machek
2017-04-26 22:51 ` Pavel Machek
2017-04-27 5:52 ` Ivaylo Dimitrov
2017-04-27 5:52 ` Ivaylo Dimitrov
2017-07-13 7:57 ` Pavel Machek
2017-07-13 7:57 ` Pavel Machek
2017-05-03 19:05 ` Russell King - ARM Linux
2017-05-03 19:05 ` Russell King - ARM Linux
2017-05-03 19:58 ` Pavel Machek
2017-05-03 19:58 ` Pavel Machek
2017-05-08 22:28 ` [patch, libv4l]: fix integer overflow Pavel Machek
2017-05-09 6:29 ` Hans Verkuil
2017-05-09 6:32 ` Hans Verkuil
2017-05-09 8:02 ` Pavel Machek
2017-05-09 10:59 ` [patch, libv4l]: fix typos Pavel Machek
2017-05-09 11:01 ` [patch, libv4l]: Add support for GRBG10 format conversion Pavel Machek
2017-05-09 11:04 ` [patch, libv4l]: Introduce define for lookup table size Pavel Machek
2017-05-16 11:17 ` Hans Verkuil
2017-05-16 12:45 ` Pavel Machek
2017-05-16 12:56 ` Hans Verkuil
2017-05-16 23:23 ` Pavel Machek
2017-05-19 9:13 ` [libv4l]: How to do 10-bit support? Stand-alone conversions? Pavel Machek
2018-03-16 20:55 ` [RFC, libv4l]: Make libv4l2 usable on devices with complex pipeline Pavel Machek
2018-03-19 9:47 ` Hans Verkuil
2018-03-19 10:23 ` Pavel Machek
2018-03-19 10:47 ` Mauro Carvalho Chehab
2018-03-19 11:11 ` Hans Verkuil
2018-03-19 12:00 ` Pavel Machek
2018-03-19 12:15 ` Hans Verkuil
2018-03-19 12:48 ` Pavel Machek
2018-03-19 13:29 ` Hans Verkuil
2018-03-19 22:18 ` Pavel Machek
2018-03-19 13:45 ` Mauro Carvalho Chehab
2018-03-19 13:26 ` Mauro Carvalho Chehab
2018-03-20 7:50 ` Pavel Machek
2018-05-15 20:01 ` Pavel Machek
2018-05-15 22:03 ` Mauro Carvalho Chehab
2018-05-16 20:53 ` Pavel Machek
2018-06-02 21:01 ` Pavel Machek
2018-06-06 6:18 ` Tomasz Figa
2018-06-06 8:46 ` Pavel Machek
2018-06-06 8:53 ` Tomasz Figa
2018-06-06 10:01 ` Pavel Machek
2018-06-06 16:57 ` Mauro Carvalho Chehab
2018-06-06 21:27 ` Pavel Machek
2018-06-07 12:22 ` [PATCH, " Pavel Machek
2018-06-06 10:51 ` [RFC, " Pavel Machek
2018-06-06 11:16 ` Tomasz Figa
2018-06-06 20:37 ` Pavel Machek
2018-06-06 17:13 ` Mauro Carvalho Chehab
2018-06-06 10:23 ` Pavel Machek
2018-06-07 7:25 ` Pavel Machek
2017-05-09 11:10 ` [patch, libv4l]: fix integer overflow Pavel Machek
2017-05-16 10:42 ` Pavel Machek
2017-05-21 10:33 ` [patch, libv4l]: add sdlcam example for testing digital still camera functionality Pavel Machek
2017-05-26 20:41 ` Pavel Machek
2017-05-27 9:27 ` Hans Verkuil
2017-05-29 6:13 ` Hans Verkuil
2017-05-29 7:32 ` Pavel Machek
2017-05-29 8:02 ` Hans Verkuil
2017-06-14 11:16 ` Sakari Ailus
2017-06-14 20:41 ` Pavel Machek
2017-07-13 8:36 ` Pavel Machek
2017-05-09 8:07 ` [patch, libv4l]: fix integer overflow Pavel Machek
2017-04-30 22:48 ` [patch] autogain support for bayer10 format (was Re: [patch] propagating controls in libv4l2) Pavel Machek
2017-04-30 22:48 ` Pavel Machek
2017-07-13 9:49 ` [patch] propagating controls in libv4l2 was Re: support autofocus / autogain in libv4l2 Pavel Machek
2017-07-13 9:49 ` Pavel Machek
2017-04-26 11:26 ` Mauro Carvalho Chehab
2017-04-26 11:26 ` Mauro Carvalho Chehab
2017-04-29 9:19 ` Pavel Machek
2017-04-29 9:19 ` Pavel Machek
2017-10-21 22:00 ` Camera support, Prague next week, sdlcam Pavel Machek
2017-10-22 7:36 ` Hans Verkuil
2017-10-22 7:36 ` Hans Verkuil
2017-10-22 8:31 ` Pavel Machek
2017-10-22 8:31 ` Pavel Machek
2017-10-23 18:54 ` Pavel Machek
2017-10-23 18:54 ` Pavel Machek
2017-10-23 19:24 ` Hans Verkuil
2017-10-23 19:24 ` Hans Verkuil
2017-10-23 20:15 ` Sakari Ailus
2017-10-23 20:15 ` Sakari Ailus
2017-10-23 21:02 ` Mauro Carvalho Chehab
2017-10-23 21:02 ` Mauro Carvalho Chehab
2017-10-31 21:28 ` Nokia N9: fun with camera Pavel Machek
2017-11-01 6:36 ` Pavel Machek
2017-11-01 6:36 ` Pavel Machek
2017-11-01 15:32 ` Pavel Machek
2017-11-01 15:32 ` Pavel Machek
2017-04-24 22:07 ` support autofocus / autogain in libv4l2 Pavel Machek
2017-04-24 22:07 ` Pavel Machek
2017-04-25 1:57 ` Mauro Carvalho Chehab
2017-04-25 1:57 ` Mauro Carvalho Chehab
2017-04-25 8:20 ` Pavel Machek
2017-04-25 8:20 ` Pavel Machek
2017-04-25 11:23 ` Pavel Machek
2017-04-25 11:23 ` Pavel Machek
2017-04-28 22:00 ` [PATCH v3 1/2] v4l: Add camera voice coil lens control class, current control Pavel Machek
2017-04-29 1:46 ` Mauro Carvalho Chehab
2017-05-12 10:49 ` Sakari Ailus
2017-05-13 11:08 ` Pavel Machek
2017-02-14 12:20 ` Sakari Ailus [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1487074823-28274-3-git-send-email-sakari.ailus@linux.intel.com \
--to=sakari.ailus@linux.intel.com \
--cc=linux-media@vger.kernel.org \
--cc=pavel@ucw.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.