diff options
author | Sakari Ailus <sakari.ailus@linux.intel.com> | 2014-04-01 07:37:38 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <m.chehab@samsung.com> | 2014-04-23 10:31:33 -0400 |
commit | 6f7481b6685daf693e995e8653f6c8d27cfe5bfc (patch) | |
tree | bde1311964fbd774ec748e70282a238c58f7cc3d /drivers/media/i2c/smiapp/smiapp-quirk.h | |
parent | 03efb2a067beaea0496bd6e411452ca90dab9d01 (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.h | 13 |
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 | */ |
39 | struct smiapp_quirk { | 50 | struct 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 | ||