[RFC,06/24] smiapp: Add quirk control support
Commit Message
From: Sakari Ailus <sakari.ailus@linux.intel.com>
Quirk controls can be set up in the init quirk.
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
drivers/media/i2c/smiapp/smiapp-core.c | 6 ++++++
drivers/media/i2c/smiapp/smiapp-quirk.h | 3 +++
2 files changed, 9 insertions(+)
Comments
On Mon, Apr 25, 2016 at 12:08:06AM +0300, Ivaylo Dimitrov wrote:
> From: Sakari Ailus <sakari.ailus@linux.intel.com>
>
> Quirk controls can be set up in the init quirk.
>
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Do you need quirk controls for something at the moment? I guess not at least
with the secondary sensor?
Hi,
On 1.05.2016 13:46, Sakari Ailus wrote:
> On Mon, Apr 25, 2016 at 12:08:06AM +0300, Ivaylo Dimitrov wrote:
>> From: Sakari Ailus <sakari.ailus@linux.intel.com>
>>
>> Quirk controls can be set up in the init quirk.
>>
>> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
>
> Do you need quirk controls for something at the moment? I guess not at least
> with the secondary sensor?
>
Yes, vs6555 doesn't seem to need quirks ATM, I guess that patch comes
from N9/50 adaptation kernel.
Ivo
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
@@ -412,6 +412,12 @@ static int smiapp_set_ctrl(struct v4l2_ctrl *ctrl)
int exposure;
int rval;
+ rval = smiapp_call_quirk(sensor, s_ctrl, ctrl);
+ if (rval < 0)
+ return rval;
+ if (rval > 0)
+ return 0;
+
switch (ctrl->id) {
case V4L2_CID_ANALOGUE_GAIN:
return smiapp_write(
@@ -32,6 +32,8 @@ struct smiapp_sensor;
* @pll_flags: Return flags for the PLL calculator.
* @init: Quirk initialisation, called the last in probe(). This is
* also appropriate for adding sensor specific controls, for instance.
+ * @s_ctrl: Set control quirk. Returns 0 if the control isn't
+ * implemented by the quirk, > 0 if it is.
* @reg_access: Register access quirk. The quirk may divert the access
* to another register, or no register at all.
*
@@ -51,6 +53,7 @@ struct smiapp_quirk {
int (*post_streamoff)(struct smiapp_sensor *sensor);
unsigned long (*pll_flags)(struct smiapp_sensor *sensor);
int (*init)(struct smiapp_sensor *sensor);
+ int (*s_ctrl)(struct smiapp_sensor *sensor, struct v4l2_ctrl *ctrl);
int (*reg_access)(struct smiapp_sensor *sensor, bool write, u32 *reg,
u32 *val);
unsigned long flags;