Input: wm97xx: add new AC97 bus support
[sfrench/cifs-2.6.git] / drivers / staging / media / atomisp / i2c / imx / common.h
1 #ifndef __COMMON_H__
2 #define __COMMON_H__
3
4 #define MAX_FPS_OPTIONS_SUPPORTED       3
5 #define I2C_MSG_LENGTH          0x2
6 #define E2PROM_2ADDR 0x80000000
7 #define E2PROM_ADDR_MASK 0x7fffffff
8
9 /* Defines for register writes and register array processing */
10 #define IMX_BYTE_MAX    32
11 #define IMX_SHORT_MAX   16
12 #define I2C_RETRY_COUNT         5
13 #define IMX_TOK_MASK    0xfff0
14
15 enum imx_tok_type {
16         IMX_8BIT  = 0x0001,
17         IMX_16BIT = 0x0002,
18         IMX_TOK_TERM   = 0xf000,        /* terminating token for reg list */
19         IMX_TOK_DELAY  = 0xfe00 /* delay token for reg list */
20 };
21
22 /**
23  * struct imx_reg - MI sensor  register format
24  * @type: type of the register
25  * @reg: 16-bit offset to register
26  * @val: 8/16/32-bit register value
27  *
28  * Define a structure for sensor register initialization values
29  */
30 struct imx_reg {
31         enum imx_tok_type type;
32         u16 sreg;
33         u32 val;        /* @set value for read/mod/write, @mask */
34 };
35
36 struct imx_fps_setting {
37         int fps;
38         unsigned short pixels_per_line;
39         unsigned short lines_per_frame;
40         int mipi_freq;                  /* MIPI lane frequency in kHz */
41         const struct imx_reg *regs; /* regs that the fps setting needs */
42 };
43
44 struct imx_resolution {
45         const struct imx_fps_setting fps_options[MAX_FPS_OPTIONS_SUPPORTED];
46         u8 *desc;
47         const struct imx_reg *regs;
48         int res;
49         int width;
50         int height;
51         int fps;
52         unsigned short pixels_per_line;
53         unsigned short lines_per_frame;
54         int mipi_freq;                  /* MIPI lane frequency in kHz */
55         unsigned short skip_frames;
56         u8 bin_factor_x;
57         u8 bin_factor_y;
58         bool used;
59 };
60
61 #define GROUPED_PARAMETER_HOLD_ENABLE  {IMX_8BIT, 0x0104, 0x1}
62 #define GROUPED_PARAMETER_HOLD_DISABLE  {IMX_8BIT, 0x0104, 0x0}
63
64 int imx_write_reg(struct i2c_client *client, u16 data_length, u16 reg, u16 val);
65 #endif