1 /* SPDX-License-Identifier: GPL-2.0 */
5 #define MAX_FPS_OPTIONS_SUPPORTED 3
6 #define I2C_MSG_LENGTH 0x2
7 #define E2PROM_2ADDR 0x80000000
8 #define E2PROM_ADDR_MASK 0x7fffffff
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
19 IMX_TOK_TERM
= 0xf000, /* terminating token for reg list */
20 IMX_TOK_DELAY
= 0xfe00 /* delay token for reg list */
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
29 * Define a structure for sensor register initialization values
32 enum imx_tok_type type
;
34 u32 val
; /* @set value for read/mod/write, @mask */
37 struct imx_fps_setting
{
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 */
45 struct imx_resolution
{
46 const struct imx_fps_setting fps_options
[MAX_FPS_OPTIONS_SUPPORTED
];
48 const struct imx_reg
*regs
;
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
;
62 #define GROUPED_PARAMETER_HOLD_ENABLE {IMX_8BIT, 0x0104, 0x1}
63 #define GROUPED_PARAMETER_HOLD_DISABLE {IMX_8BIT, 0x0104, 0x0}
65 int imx_write_reg(struct i2c_client
*client
, u16 data_length
, u16 reg
, u16 val
);