0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #ifndef ET8EK8REGS_H
0012 #define ET8EK8REGS_H
0013
0014 #include <linux/i2c.h>
0015 #include <linux/types.h>
0016 #include <linux/videodev2.h>
0017 #include <linux/v4l2-subdev.h>
0018
0019 struct v4l2_mbus_framefmt;
0020 struct v4l2_subdev_pad_mbus_code_enum;
0021
0022 struct et8ek8_mode {
0023
0024 u16 sensor_width;
0025 u16 sensor_height;
0026 u16 sensor_window_origin_x;
0027 u16 sensor_window_origin_y;
0028 u16 sensor_window_width;
0029 u16 sensor_window_height;
0030
0031
0032 u16 width;
0033 u16 height;
0034 u16 window_origin_x;
0035 u16 window_origin_y;
0036 u16 window_width;
0037 u16 window_height;
0038
0039 u32 pixel_clock;
0040 u32 ext_clock;
0041 struct v4l2_fract timeperframe;
0042 u32 max_exp;
0043 u32 bus_format;
0044 u32 sensitivity;
0045 };
0046
0047 #define ET8EK8_REG_8BIT 1
0048 #define ET8EK8_REG_16BIT 2
0049 #define ET8EK8_REG_DELAY 100
0050 #define ET8EK8_REG_TERM 0xff
0051 struct et8ek8_reg {
0052 u16 type;
0053 u16 reg;
0054 u32 val;
0055 };
0056
0057
0058 #define ET8EK8_REGLIST_STANDBY 0
0059 #define ET8EK8_REGLIST_POWERON 1
0060 #define ET8EK8_REGLIST_RESUME 2
0061 #define ET8EK8_REGLIST_STREAMON 3
0062 #define ET8EK8_REGLIST_STREAMOFF 4
0063 #define ET8EK8_REGLIST_DISABLED 5
0064
0065 #define ET8EK8_REGLIST_MODE 10
0066
0067 #define ET8EK8_REGLIST_LSC_ENABLE 100
0068 #define ET8EK8_REGLIST_LSC_DISABLE 101
0069 #define ET8EK8_REGLIST_ANR_ENABLE 102
0070 #define ET8EK8_REGLIST_ANR_DISABLE 103
0071
0072 struct et8ek8_reglist {
0073 u32 type;
0074 struct et8ek8_mode mode;
0075 struct et8ek8_reg regs[];
0076 };
0077
0078 #define ET8EK8_MAX_LEN 32
0079 struct et8ek8_meta_reglist {
0080 char version[ET8EK8_MAX_LEN];
0081 union {
0082 struct et8ek8_reglist *ptr;
0083 } reglist[];
0084 };
0085
0086 extern struct et8ek8_meta_reglist meta_reglist;
0087
0088 #endif