linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Pavel Machek <pavel@ucw.cz>
To: Sakari Ailus <sakari.ailus@iki.fi>
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: Mon, 13 Jun 2016 21:17:53 +0200	[thread overview]
Message-ID: <20160613191753.GA17459@amd> (raw)
In-Reply-To: <20160612112253.GD26360@valkosipuli.retiisi.org.uk>

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...?

> 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.

Something like this?

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)
 
+
+
 #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)
+#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


-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

  reply	other threads:[~2016-06-13 19:17 UTC|newest]

Thread overview: 73+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-17 18:19 [PATCH] support for AD5820 camera auto-focus coil 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 [this message]
2016-06-17 21:35                                           ` Sakari Ailus
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=20160613191753.GA17459@amd \
    --to=pavel@ucw.cz \
    --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=pawel.moll@arm.com \
    --cc=robh+dt@kernel.org \
    --cc=sakari.ailus@iki.fi \
    --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;
as well as URLs for NNTP newsgroup(s).