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