aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/i2c/smiapp/smiapp-quirk.h
diff options
context:
space:
mode:
authorSakari Ailus <sakari.ailus@linux.intel.com>2014-04-01 07:37:38 -0400
committerMauro Carvalho Chehab <m.chehab@samsung.com>2014-04-23 10:31:33 -0400
commit6f7481b6685daf693e995e8653f6c8d27cfe5bfc (patch)
treebde1311964fbd774ec748e70282a238c58f7cc3d /drivers/media/i2c/smiapp/smiapp-quirk.h
parent03efb2a067beaea0496bd6e411452ca90dab9d01 (diff)
[media] smiapp: Add register diversion quirk
Add a quirk for diverting registers for on some sensors, even the standard registers are not where they can be expected to be found. Add a quirk to to help using such sensors. smiapp_write_no_quirk() and smiapp_read_no_quirk() functions are provided for the use of quirk implementations. Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
Diffstat (limited to 'drivers/media/i2c/smiapp/smiapp-quirk.h')
-rw-r--r--drivers/media/i2c/smiapp/smiapp-quirk.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/media/i2c/smiapp/smiapp-quirk.h b/drivers/media/i2c/smiapp/smiapp-quirk.h
index dddb62beeb29..46e9ea8bfa08 100644
--- a/drivers/media/i2c/smiapp/smiapp-quirk.h
+++ b/drivers/media/i2c/smiapp/smiapp-quirk.h
@@ -35,6 +35,17 @@ struct smiapp_sensor;
35 * @post_poweron: Called always after the sensor has been fully powered on. 35 * @post_poweron: Called always after the sensor has been fully powered on.
36 * @pre_streamon: Called just before streaming is enabled. 36 * @pre_streamon: Called just before streaming is enabled.
37 * @post_streamon: Called right after stopping streaming. 37 * @post_streamon: Called right after stopping streaming.
38 * @reg_access: Register access quirk. The quirk may divert the access
39 * to another register, or no register at all.
40 *
41 * @write: Is this read (false) or write (true) access?
42 * @reg: Pointer to the register to access
43 * @value: Register value, set by the caller on write, or
44 * by the quirk on read
45 *
46 * @return: 0 on success, -ENOIOCTLCMD if no register
47 * access may be done by the caller (default read
48 * value is zero), else negative error code on error
38 */ 49 */
39struct smiapp_quirk { 50struct smiapp_quirk {
40 int (*limits)(struct smiapp_sensor *sensor); 51 int (*limits)(struct smiapp_sensor *sensor);
@@ -42,6 +53,8 @@ struct smiapp_quirk {
42 int (*pre_streamon)(struct smiapp_sensor *sensor); 53 int (*pre_streamon)(struct smiapp_sensor *sensor);
43 int (*post_streamoff)(struct smiapp_sensor *sensor); 54 int (*post_streamoff)(struct smiapp_sensor *sensor);
44 unsigned long (*pll_flags)(struct smiapp_sensor *sensor); 55 unsigned long (*pll_flags)(struct smiapp_sensor *sensor);
56 int (*reg_access)(struct smiapp_sensor *sensor, bool write, u32 *reg,
57 u32 *val);
45 unsigned long flags; 58 unsigned long flags;
46}; 59};
47 60