From: Sakari Ailus <sakari.ailus@iki.fi>
To: Pavel Machek <pavel@ucw.cz>
Cc: Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com>,
pali.rohar@gmail.com, sre@kernel.org,
kernel list <linux-kernel@vger.kernel.org>,
linux-arm-kernel <linux-arm-kernel@lists.infradead.org>,
linux-omap@vger.kernel.org, tony@atomide.com, khilman@kernel.org,
aaro.koskinen@iki.fi, patrikbachan@gmail.com, serge@hallyn.com,
linux-media@vger.kernel.org, mchehab@osg.samsung.com,
robh+dt@kernel.org, pawel.moll@arm.com, mark.rutland@arm.com,
ijc+devicetree@hellion.org.uk, galak@codeaurora.org,
devicetree@vger.kernel.org
Subject: Re: [PATCH] userspace API definitions for auto-focus coil
Date: Sat, 18 Jun 2016 00:35:46 +0300 [thread overview]
Message-ID: <20160617213545.GH24980@valkosipuli.retiisi.org.uk> (raw)
In-Reply-To: <20160613191753.GA17459@amd>
Hi Pavel,
On Mon, Jun 13, 2016 at 09:17:53PM +0200, Pavel Machek wrote:
> On Sun 2016-06-12 14:22:53, Sakari Ailus wrote:
> > Hi Pavel,
> >
> > On Sun, Jun 12, 2016 at 10:48:11AM +0200, Pavel Machek wrote:
> > > Hi!
> > >
> > > > > >Add userspace API definitions.
> > > > > >
> > > > > >Signed-off-by: Pavel Machek <pavel@ucw.cz>
> > > > > >
> > > > > >diff --git a/include/uapi/linux/v4l2-controls.h b/include/uapi/linux/v4l2-controls.h
> > > > > >index b6a357a..23011cc 100644
> > > > > >--- a/include/uapi/linux/v4l2-controls.h
> > > > > >+++ b/include/uapi/linux/v4l2-controls.h
> > > > > >@@ -974,4 +975,9 @@ enum v4l2_detect_md_mode {
> > > > > > #define V4L2_CID_DETECT_MD_THRESHOLD_GRID (V4L2_CID_DETECT_CLASS_BASE + 3)
> > > > > > #define V4L2_CID_DETECT_MD_REGION_GRID (V4L2_CID_DETECT_CLASS_BASE + 4)
> > > > > >
> > > > > >+/* Control IDs specific to the AD5820 driver as defined by V4L2 */
> > > > > >+#define V4L2_CID_FOCUS_AD5820_BASE (V4L2_CTRL_CLASS_CAMERA | 0x10af)
> > > >
> > > > Please check V4L2_CID_USER_*_BASE. That's how custom controls are handled
> > > > nowadays.
> > >
> > > So something like this?
> > >
> > > Thanks,
> > > Pavel
> > >
> > > diff --git a/drivers/media/i2c/ad5820.c b/drivers/media/i2c/ad5820.c
> > > index 2efa5dc1..b04b471 100644
> > > --- a/drivers/media/i2c/ad5820.c
> > > +++ b/drivers/media/i2c/ad5820.c
> > > @@ -40,6 +40,11 @@
> > > #define AD5820_RAMP_MODE_LINEAR (0 << 3)
> > > #define AD5820_RAMP_MODE_64_16 (1 << 3)
> > >
> > > +/* Control IDs specific to the AD5820 driver as defined by V4L2 */
> > > +#define V4L2_CID_FOCUS_AD5820_RAMP_TIME (V4L2_CID_USER_AD5820_BASE+0)
> > > +#define V4L2_CID_FOCUS_AD5820_RAMP_MODE (V4L2_CID_FOCUS_AD5820_BASE+1)
> > > +
> > > +
> >
> > We could still define these in a header file that can be included by the
> > user space. Please use V4L2_CID_AD5820 prefix.
>
> Not V4L2_CID_USER_AD5820...?
The rest of the controls have no USER as part of the macro name, so I
wouldn't use it here either.
>
> > A separate header file should be used,
> > e.g. include/uapi/linux/ad5820.h.
>
> Ok, separate header file for 2 lines seemed like a bit of overkill,
> but why not.
That follows an existing pattern of how controls have been implemented in
other drivers.
>
> Something like this?
Yes. A few minor comments below.
Could you merge this with the driver patch? I've dropped that from my ad5820
branch as it does not compile.
>
> commit 8dd701d2580e41b06bb2285e6bd59a4f1702b4d8
> Author: Pavel <pavel@ucw.cz>
> Date: Mon Jun 13 21:17:15 2016 +0200
>
> Userspace api, as Sakari asked.
>
> diff --git a/drivers/media/i2c/ad5820.c b/drivers/media/i2c/ad5820.c
> index 2efa5dc1..ed3facc 100644
> --- a/drivers/media/i2c/ad5820.c
> +++ b/drivers/media/i2c/ad5820.c
> @@ -32,6 +32,8 @@
> #include <media/v4l2-device.h>
> #include <media/v4l2-subdev.h>
>
> +#include <uapi/linux/ad5820.h>
> +
> #define AD5820_NAME "ad5820"
>
> /* Register definitions */
> @@ -40,6 +42,8 @@
> #define AD5820_RAMP_MODE_LINEAR (0 << 3)
> #define AD5820_RAMP_MODE_64_16 (1 << 3)
>
> +
> +
Extra newlines.
> #define CODE_TO_RAMP_US(s) ((s) == 0 ? 0 : (1 << ((s) - 1)) * 50)
> #define RAMP_US_TO_CODE(c) fls(((c) + ((c)>>1)) / 50)
>
> @@ -165,13 +169,13 @@ static int ad5820_set_ctrl(struct v4l2_ctrl *ctrl)
> coil->focus_absolute = ctrl->val;
> return ad5820_update_hw(coil);
>
> - case V4L2_CID_FOCUS_AD5820_RAMP_TIME:
> + case V4L2_CID_AD5820_RAMP_TIME:
> code = RAMP_US_TO_CODE(ctrl->val);
> ctrl->val = CODE_TO_RAMP_US(code);
> coil->focus_ramp_time = ctrl->val;
> break;
>
> - case V4L2_CID_FOCUS_AD5820_RAMP_MODE:
> + case V4L2_CID_AD5820_RAMP_MODE:
> coil->focus_ramp_mode = ctrl->val;
> break;
> }
> @@ -191,7 +195,7 @@ static const char * const ad5820_focus_menu[] = {
> static const struct v4l2_ctrl_config ad5820_ctrls[] = {
> {
> .ops = &ad5820_ctrl_ops,
> - .id = V4L2_CID_FOCUS_AD5820_RAMP_TIME,
> + .id = V4L2_CID_AD5820_RAMP_TIME,
> .type = V4L2_CTRL_TYPE_INTEGER,
> .name = "Focus ramping time [us]",
> .min = 0,
> @@ -202,7 +206,7 @@ static const struct v4l2_ctrl_config ad5820_ctrls[] = {
> },
> {
> .ops = &ad5820_ctrl_ops,
> - .id = V4L2_CID_FOCUS_AD5820_RAMP_MODE,
> + .id = V4L2_CID_AD5820_RAMP_MODE,
> .type = V4L2_CTRL_TYPE_MENU,
> .name = "Focus ramping mode",
> .min = 0,
> diff --git a/include/uapi/linux/ad5820.h b/include/uapi/linux/ad5820.h
> new file mode 100644
> index 0000000..d44ba9c
> --- /dev/null
> +++ b/include/uapi/linux/ad5820.h
> @@ -0,0 +1,18 @@
> +/*
> + * AD5820 DAC driver for camera voice coil focus.
> + *
> + * 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 published by the Free Software Foundation.
> + */
> +
> +#ifndef __LINUX_AD5820_H
> +#define __LINUX_AD5820_H
> +
> +#include <linux/v4l2-controls.h>
> +
> +/* Control IDs specific to the AD5820 driver as defined by V4L2 */
> +#define V4L2_CID_AD5820_RAMP_TIME (V4L2_CID_AD5820_BASE+0)
(V4L2_CID_AD5820_BASE + 0)
Same below.
> +#define V4L2_CID_AD5820_RAMP_MODE (V4L2_CID_AD5820_BASE+1)
> +
> +#endif
> diff --git a/include/uapi/linux/v4l2-controls.h b/include/uapi/linux/v4l2-controls.h
> index 23011cc..015e90b 100644
> --- a/include/uapi/linux/v4l2-controls.h
> +++ b/include/uapi/linux/v4l2-controls.h
> @@ -181,6 +181,10 @@ enum v4l2_colorfx {
> * We reserve 16 controls for this driver. */
> #define V4L2_CID_USER_TC358743_BASE (V4L2_CID_USER_BASE + 0x1080)
>
> +/* The base for the ad5820 driver controls.
> + * We reserve 16 controls for this driver. */
> +#define V4L2_CID_AD5820_BASE (V4L2_CID_USER_BASE + 0x1090)
> +
> /* MPEG-class control IDs */
> /* The MPEG controls are applicable to all codec controls
> * and the 'MPEG' part of the define is historical */
> @@ -986,9 +990,4 @@ enum v4l2_detect_md_mode {
> #define V4L2_CID_MODE_SENSITIVITY (V4L2_CID_MODE_CLASS_BASE+6)
> #define V4L2_CID_MODE_OPSYSCLOCK (V4L2_CID_MODE_CLASS_BASE+7)
>
> -/* Control IDs specific to the AD5820 driver as defined by V4L2 */
> -#define V4L2_CID_FOCUS_AD5820_BASE (V4L2_CTRL_CLASS_CAMERA | 0x10af)
> -#define V4L2_CID_FOCUS_AD5820_RAMP_TIME (V4L2_CID_FOCUS_AD5820_BASE+0)
> -#define V4L2_CID_FOCUS_AD5820_RAMP_MODE (V4L2_CID_FOCUS_AD5820_BASE+1)
> -
> #endif
>
>
--
Regards,
Sakari Ailus
e-mail: sakari.ailus@iki.fi XMPP: sailus@retiisi.org.uk
next prev parent reply other threads:[~2016-06-17 21:36 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-17 18:19 [PATCH] support for AD5820 camera " Pavel Machek
2016-05-17 18:33 ` Marcus Folkesson
2016-05-18 8:30 ` Pavel Machek
2016-05-21 5:43 ` [PATCHv2] " Pavel Machek
2016-05-21 6:25 ` Ivaylo Dimitrov
2016-05-21 10:56 ` [PATCHv3] " Pavel Machek
2016-05-21 11:43 ` Ivaylo Dimitrov
2016-05-23 7:41 ` Pali Rohár
2016-05-24 9:04 ` Pavel Machek
2016-05-24 9:16 ` Ivaylo Dimitrov
2016-05-24 20:20 ` Pavel Machek
2016-05-26 3:46 ` Ivaylo Dimitrov
2016-05-24 9:17 ` [PATCHv4] " Pavel Machek
2016-05-25 21:26 ` Sakari Ailus
2016-05-27 20:33 ` Pavel Machek
2016-05-27 20:51 ` [PATCHv5] " Pavel Machek
2016-05-31 21:22 ` Sakari Ailus
2016-05-31 21:34 ` Pavel Machek
2016-06-01 15:24 ` Sakari Ailus
2016-06-01 22:08 ` Pavel Machek
2016-06-02 7:45 ` Sakari Ailus
2016-06-02 19:27 ` Pavel Machek
2016-06-02 21:23 ` Sakari Ailus
2016-06-02 19:30 ` [PATCH] device tree description " Pavel Machek
2016-06-02 21:27 ` Sakari Ailus
2016-06-03 6:19 ` Pavel Machek
2016-06-05 19:07 ` [PATCH] userspace API definitions for " Pavel Machek
2016-06-06 6:06 ` Ivaylo Dimitrov
2016-06-06 7:21 ` Pavel Machek
2016-06-11 22:06 ` Sakari Ailus
2016-06-12 7:54 ` Pavel Machek
2016-06-17 21:28 ` Sakari Ailus
2016-06-12 8:48 ` Pavel Machek
2016-06-12 11:22 ` Sakari Ailus
2016-06-13 19:17 ` Pavel Machek
2016-06-17 21:35 ` Sakari Ailus [this message]
2016-06-18 15:37 ` [PATCHv4] support for AD5820 camera " Pavel Machek
2016-06-18 15:38 ` [PATCH] userspace API definitions for " Pavel Machek
2016-07-12 23:32 ` Mauro Carvalho Chehab
2016-07-13 6:57 ` Pavel Machek
2016-07-13 7:26 ` Pavel Machek
2016-06-06 13:29 ` [PATCH] device tree description for AD5820 camera " Rob Herring
2016-06-07 7:10 ` [PATCHv2] " Pavel Machek
2016-06-09 22:37 ` Sakari Ailus
2016-06-04 23:27 ` [PATCHv5] support " kbuild test robot
2016-06-05 0:46 ` kbuild test robot
2016-06-12 20:41 ` [PATCH 1/1] v4l: Add camera voice coil lens control class, current control Sakari Ailus
2016-06-12 21:48 ` Ivaylo Dimitrov
2016-06-17 22:11 ` Pavel Machek
2016-06-17 22:39 ` Laurent Pinchart
2016-06-18 11:28 ` Pavel Machek
2016-06-17 22:06 ` Pavel Machek
2016-08-05 10:26 ` [PATCHv6] support for AD5820 camera auto-focus coil Pavel Machek
2016-08-05 10:30 ` Pali Rohár
2016-08-08 8:09 ` Sakari Ailus
2016-08-08 21:41 ` Pavel Machek
2016-08-10 12:01 ` Sakari Ailus
2016-08-08 23:23 ` Pavel Machek
2016-08-11 11:16 ` Sakari Ailus
2016-08-18 10:45 ` Pavel Machek
2016-08-18 20:26 ` Sakari Ailus
2016-08-18 21:28 ` Pavel Machek
2016-11-03 10:27 ` Pavel Machek
2016-11-03 21:49 ` Sakari Ailus
2016-11-04 7:45 ` Pavel Machek
2016-11-04 14:49 ` Tony Lindgren
2016-12-14 13:38 ` Pali Rohár
2016-12-14 15:08 ` Tony Lindgren
2016-12-15 6:50 ` Sakari Ailus
2016-12-19 22:23 ` Pavel Machek
2016-08-10 7:34 ` Pali Rohár
2016-08-08 21:40 ` Pavel Machek
2016-08-10 12:00 ` Sakari Ailus
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=20160617213545.GH24980@valkosipuli.retiisi.org.uk \
--to=sakari.ailus@iki.fi \
--cc=aaro.koskinen@iki.fi \
--cc=devicetree@vger.kernel.org \
--cc=galak@codeaurora.org \
--cc=ijc+devicetree@hellion.org.uk \
--cc=ivo.g.dimitrov.75@gmail.com \
--cc=khilman@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mchehab@osg.samsung.com \
--cc=pali.rohar@gmail.com \
--cc=patrikbachan@gmail.com \
--cc=pavel@ucw.cz \
--cc=pawel.moll@arm.com \
--cc=robh+dt@kernel.org \
--cc=serge@hallyn.com \
--cc=sre@kernel.org \
--cc=tony@atomide.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®