aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/m9mo.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video/m9mo.h')
-rw-r--r--drivers/media/video/m9mo.h230
1 files changed, 209 insertions, 21 deletions
diff --git a/drivers/media/video/m9mo.h b/drivers/media/video/m9mo.h
index 0c3f24c..4da72a2 100644
--- a/drivers/media/video/m9mo.h
+++ b/drivers/media/video/m9mo.h
@@ -71,12 +71,12 @@ u8 buf_port_seting0[] = {
u8 buf_port_seting1[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
- 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
u8 buf_port_seting2[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -96,35 +96,41 @@ enum m9mo_prev_frmsize {
M9MO_PREVIEW_VGA,
M9MO_PREVIEW_D1,
M9MO_PREVIEW_WVGA,
+ M9MO_PREVIEW_960_720,
+ M9MO_PREVIEW_1080_720,
M9MO_PREVIEW_720P,
-#if defined(CONFIG_MACH_Q1_BD)
- M9MO_PREVIEW_880_720,
- M9MO_PREVIEW_1200_800,
- M9MO_PREVIEW_1280_800,
- M9MO_PREVIEW_1280_768,
- M9MO_PREVIEW_1072_800,
- M9MO_PREVIEW_980_800,
-#endif
M9MO_PREVIEW_1080P,
M9MO_PREVIEW_HDR,
M9MO_PREVIEW_720P_60FPS,
M9MO_PREVIEW_VGA_60FPS,
+ M9MO_PREVIEW_1080P_DUAL,
+ M9MO_PREVIEW_720P_DUAL,
+ M9MO_PREVIEW_VGA_DUAL,
+ M9MO_PREVIEW_QVGA_DUAL,
};
enum m9mo_cap_frmsize {
+ M9MO_CAPTURE_HD, /* 960 x 720 */
M9MO_CAPTURE_1MP, /* 1024 x 768 */
M9MO_CAPTURE_2MPW, /* 1920 x 1080 */
M9MO_CAPTURE_3MP, /* 1984 x 1488 */
+ M9MO_CAPTURE_4MP, /* 2304 x 1728 */
M9MO_CAPTURE_5MP, /* 2592 x 1944 */
M9MO_CAPTURE_8MP, /* 3264 x 2448 */
M9MO_CAPTURE_10MP, /* 3648 x 2736 */
- M9MO_CAPTURE_12MPW, /* 4608 x 2768 */
+ M9MO_CAPTURE_12MPW, /* 4608 x 2592 */
M9MO_CAPTURE_14MP, /* 4608 x 3072 */
M9MO_CAPTURE_16MP, /* 4608 x 3456 */
- M9MO_CAPTURE_POSTWVGA, /* 800 x 480 */
+ M9MO_CAPTURE_RAW, /* 4088 x 2500 */
+};
+
+enum m9mo_post_frmsize {
+ M9MO_CAPTURE_POSTQVGA, /* 320 x 240 */
M9MO_CAPTURE_POSTVGA, /* 640 x 480 */
- M9MO_CAPTURE_POSTWHD, /* 1280 x 720 */
M9MO_CAPTURE_POSTHD, /* 960 x 720 */
+ M9MO_CAPTURE_POSTP, /* 1056 x 704 */
+ M9MO_CAPTURE_POSTWVGA, /* 800 x 480 */
+ M9MO_CAPTURE_POSTWHD, /* 1280 x 720 */
};
enum cam_frmratio {
@@ -184,6 +190,24 @@ struct m9mo_focus {
unsigned int pos_y;
};
+struct m9mo_factory_punt_data {
+ unsigned int min;
+ unsigned int max;
+ unsigned int num;
+};
+
+struct m9mo_factory_zoom_data {
+ unsigned int range_min;
+ unsigned int range_max;
+ unsigned int slope_min;
+ unsigned int slope_max;
+};
+
+struct m9mo_factory_zoom_slope_data {
+ unsigned int min;
+ unsigned int max;
+};
+
struct m9mo_exif {
char unique_id[7];
u32 exptime; /* us */
@@ -192,6 +216,9 @@ struct m9mo_exif {
int tv; /* shutter speed */
int bv; /* brightness */
int ebv; /* exposure bias */
+ int av; /* Aperture */
+ int focal_length;
+ int focal_35mm_length;
};
struct m9mo_state {
@@ -205,6 +232,7 @@ struct m9mo_state {
const struct m9mo_frmsizeenum *preview;
const struct m9mo_frmsizeenum *capture;
+ const struct m9mo_frmsizeenum *postview;
enum v4l2_pix_format_mode format_mode;
enum v4l2_sensor_mode sensor_mode;
@@ -212,18 +240,36 @@ struct m9mo_state {
enum v4l2_scene_mode scene_mode;
int vt_mode;
int zoom;
- int optical_zoom;
+ int smart_zoom_mode;
int m9mo_fw_done;
int fw_info_done;
unsigned int fps;
+
+ int factory_down_check;
+ int factory_result_check;
+ int factory_end_check;
+ int factory_category;
+ int factory_byte;
+ int factory_value;
+ int factory_value_size;
+
struct m9mo_focus focus;
+ struct m9mo_factory_punt_data f_punt_data;
+ struct m9mo_factory_zoom_data f_zoom_data;
+
+ unsigned int factory_log_addr;
+ u16 factory_log_size;
+ int factory_test_num;
struct m9mo_jpeg jpeg;
struct m9mo_exif exif;
- char *fw_version;
+ int isp_fw_ver;
+ u8 sensor_ver[10];
+ u8 phone_ver[10];
+ u8 sensor_type[25];
#ifdef CONFIG_CAM_DEBUG
u8 dbg_level;
@@ -232,12 +278,68 @@ struct m9mo_state {
int facedetect_mode;
int running_capture_mode;
int fd_eyeblink_cap;
+ int fd_red_eye_status;
+ int image_stabilizer_mode;
+ int ot_status;
+ int ot_x_loc;
+ int ot_y_loc;
+ int ot_width;
+ int ot_height;
+ int bracket_wbb_val;
unsigned int face_beauty:1;
unsigned int recording:1;
unsigned int check_dataline:1;
int anti_banding;
int pixelformat;
+
+ int wb_g_value;
+ int wb_b_value;
+ int wb_a_value;
+ int wb_m_value;
+ int wb_custom_rg;
+ int wb_custom_bg;
+
+ int vss_mode;
+ int dual_capture_start;
+ int dual_capture_frame;
+
+ int focus_mode;
+ int focus_range;
+ int focus_area_mode;
+
+ int f_number;
+ int iso;
+ int numerator;
+ int denominator;
+
+ int AV;
+ int TV;
+ int SV;
+ int EV;
+ int LV;
+
+ int smart_scene_detect_mode;
+
+ int continueFps;
+
+ int fd_num;
+
+ int caf_state;
+
+ int mode;
+
+ bool stream_on_part2;
+
+ int widget_mode_level;
+ int gamma_rgb_mon;
+ int gamma_rgb_cap;
+ int gamma_tbl_rgb_mon;
+ int gamma_tbl_rgb_cap;
+ int color_effect;
+
+ int preview_width;
+ int preview_height;
};
/* Category */
@@ -246,8 +348,10 @@ struct m9mo_state {
#define M9MO_CATEGORY_MON 0x02
#define M9MO_CATEGORY_AE 0x03
#define M9MO_CATEGORY_NEW 0x04
+#define M9MO_CATEGORY_PRO_MODE 0x05
#define M9MO_CATEGORY_WB 0x06
#define M9MO_CATEGORY_EXIF 0x07
+#define M9MO_CATEGORY_OT 0x08
#define M9MO_CATEGORY_FD 0x09
#define M9MO_CATEGORY_LENS 0x0A
#define M9MO_CATEGORY_CAPPARM 0x0B
@@ -269,6 +373,7 @@ struct m9mo_state {
#define M9MO_SYS_INT_EN 0x10
#define M9MO_SYS_INT_FACTOR 0x1C
#define M9MO_SYS_FRAMESYNC_CNT 0x14
+#define M9MO_SYS_LENS_TIMER 0x28
/* M9MO_CATEGORY_PARAM: 0x01 */
@@ -277,9 +382,14 @@ struct m9mo_state {
#define M9MO_PARM_EFFECT 0x0B
#define M9MO_PARM_FLEX_FPS 0x67
#define M9MO_PARM_HDMOVIE 0x32
+#define M9MO_PARM_VIDEO_SNAP_IMG_TRANSFER_START 0x3A
+#define M9MO_PARM_SEL_FRAME_VIDEO_SNAP 0x3B
+#define M9MO_PARM_MON_MOVIE_SELECT 0x3C
+#define M9MO_PARM_VSS_MODE 0x6E
/* M9MO_CATEGORY_MON: 0x02 */
#define M9MO_MON_ZOOM 0x01
+#define M9MO_MON_HR_ZOOM 0x04
#define M9MO_MON_MON_REVERSE 0x05
#define M9MO_MON_MON_MIRROR 0x06
#define M9MO_MON_SHOT_REVERSE 0x07
@@ -289,7 +399,11 @@ struct m9mo_state {
#define M9MO_MON_COLOR_EFFECT 0x0B
#define M9MO_MON_CHROMA_LVL 0x0F
#define M9MO_MON_EDGE_LVL 0x11
+#define M9MO_MON_EDGE_CTRL 0x20
+#define M9MO_MON_POINT_COLOR 0x22
#define M9MO_MON_TONE_CTRL 0x25
+#define M9MO_MON_START_VIDEO_SNAP_SHOT 0x56
+#define M9MO_MON_VIDEO_SNAP_SHOT_FRAME_COUNT 0x57
/* M9MO_CATEGORY_AE: 0x03 */
#define M9MO_AE_LOCK 0x00
@@ -299,16 +413,52 @@ struct m9mo_state {
#define M9MO_AE_INDEX 0x09
#define M9MO_AE_EP_MODE_MON 0x0A
#define M9MO_AE_EP_MODE_CAP 0x0B
+#define M9MO_AF_AE_LOCK 0x0D
#define M9MO_AE_AUTO_BRACKET_EV 0x20
-#define M9MO_AE_ONESHOT_MAX_EXP 0x36
+#define M9MO_AE_STABILITY 0x21
+#define M9MO_AE_EV_PRG_MODE_CAP 0x34
+#define M9MO_AE_EV_PRG_MODE_MON 0x35
+#define M9MO_AE_EV_PRG_F_NUMBER 0x36
+#define M9MO_AE_EV_PRG_SS_NUMERATOR 0x37
+#define M9MO_AE_EV_PRG_SS_DENOMINATOR 0x39
+#define M9MO_AE_EV_PRG_ISO_VALUE 0x3B
+#define M9MO_AE_EV_PRG_F_NUMBER_MON 0x3D
+#define M9MO_AE_EV_PRG_SS_NUMERATOR_MON 0x3E
+#define M9MO_AE_EV_PRG_SS_DENOMINATOR_MON 0x40
+#define M9MO_AE_EV_PRG_ISO_VALUE_MON 0x42
+#define M9MO_AE_NOW_AV 0x54
+#define M9MO_AE_NOW_TV 0x58
+#define M9MO_AE_NOW_SV 0x5C
+#define M9MO_AE_NOW_LV 0x52
/* M9MO_CATEGORY_NEW: 0x04 */
+#define M9MO_NEW_TIME_INFO 0x02
#define M9MO_NEW_DETECT_SCENE 0x0B
+#define M9MO_NEW_OIS_VERSION 0x1B
+
+/* M9MO_CATEGORY_PRO_MODE: 0x05 */
+#define M9MO_PRO_SMART_READ1 0x20
+#define M9MO_PRO_SMART_READ2 0x24
+#define M9MO_PRO_SMART_READ3 0x28
/* M9MO_CATEGORY_WB: 0x06 */
#define M9MO_AWB_LOCK 0x00
#define M9MO_WB_AWB_MODE 0x02
#define M9MO_WB_AWB_MANUAL 0x03
+#define M9MO_WB_GBAM_MODE 0x8D
+#define M9MO_WB_G_VALUE 0x8E
+#define M9MO_WB_B_VALUE 0x8F
+#define M9MO_WB_A_VALUE 0x90
+#define M9MO_WB_M_VALUE 0x91
+#define M9MO_WB_K_VALUE 0x92
+#define M9MO_WB_CWB_MODE 0x93
+#define M9MO_WB_SET_CUSTOM_RG 0x94
+#define M9MO_WB_SET_CUSTOM_BG 0x96
+#define M9MO_WB_GET_CUSTOM_RG 0x98
+#define M9MO_WB_GET_CUSTOM_BG 0x9A
+#define M9MO_WB_WBB_MODE 0x9C
+#define M9MO_WB_WBB_AB 0x9D
+#define M9MO_WB_WBB_GM 0x9E
/* M9MO_CATEGORY_EXIF: 0x07 */
#define M9MO_EXIF_EXPTIME_NUM 0x00
@@ -321,12 +471,31 @@ struct m9mo_state {
#define M9MO_EXIF_EBV_DEN 0x24
#define M9MO_EXIF_ISO 0x28
#define M9MO_EXIF_FLASH 0x2A
+#define M9MO_EXIF_AV_NUM 0x10
+#define M9MO_EXIF_AV_DEN 0x14
+#define M9MO_EXIF_FL 0x11
+#define M9MO_EXIF_FL_35 0x13
+
+/* M9MO_CATEGORY_OT: 0x08 */
+#define M9MO_OT_TRACKING_CTL 0x00
+#define M9MO_OT_INFO_READY 0x01
+#define M9MO_OT_X_START_LOCATION 0x05
+#define M9MO_OT_Y_START_LOCATION 0x07
+#define M9MO_OT_X_END_LOCATION 0x09
+#define M9MO_OT_Y_END_LOCATION 0x0B
+#define M9MO_OT_TRACKING_X_LOCATION 0x10
+#define M9MO_OT_TRACKING_Y_LOCATION 0x12
+#define M9MO_OT_TRACKING_FRAME_WIDTH 0x14
+#define M9MO_OT_TRACKING_FRAME_HEIGHT 0x16
+#define M9MO_OT_TRACKING_STATUS 0x18
+#define M9MO_OT_FRAME_WIDTH 0x30
/* M9MO_CATEGORY_FD: 0x09 */
#define M9MO_FD_CTL 0x00
#define M9MO_FD_SIZE 0x01
#define M9MO_FD_MAX 0x02
#define M9MO_FD_RED_EYE 0x55
+#define M9MO_FD_RED_DET_STATUS 0x56
#define M9MO_FD_BLINK_FRAMENO 0x59
#define M9MO_FD_BLINK_LEVEL_1 0x5A
#define M9MO_FD_BLINK_LEVEL_2 0x5B
@@ -334,12 +503,14 @@ struct m9mo_state {
/* M9MO_CATEGORY_LENS: 0x0A */
#define M9MO_LENS_AF_INITIAL 0x00
-#define M9MO_LENS_AF_MODE 0x01
+#define M9MO_LENS_AF_LENS_CLOSE 0x01
#define M9MO_LENS_AF_ZOOM_CTRL 0x02
#define M9MO_LENS_AF_START_STOP 0x03
-#define M9MO_LENS_AF_STATUS 0x03
#define M9MO_LENS_AF_IRIS_STEP 0x05
#define M9MO_LENS_AF_ZOOM_LEVEL 0x06
+#define M9MO_LENS_AF_SCAN_RANGE 0x07
+#define M9MO_LENS_AF_MODE 0x08
+#define M9MO_LENS_AF_WINDOW_MODE 0x09
#define M9MO_LENS_AF_BACKLASH_ADJ 0x0A
#define M9MO_LENS_AF_FOCUS_ADJ 0x0B
#define M9MO_LENS_AF_TILT_ADJ 0x0C
@@ -348,9 +519,18 @@ struct m9mo_state {
#define M9MO_LENS_AF_ZOOM_ADJ 0x0F
#define M9MO_LENS_AF_ADJ_TEMP_VALUE 0x0C
#define M9MO_LENS_AF_ALGORITHM 0x0D
+#define M9MO_LENS_ZOOM_LEVEL_INFO 0x10
+#define M9MO_LENS_AF_LED 0x1C
#define M9MO_LENS_AF_CAL 0x1D
+#define M9MO_LENS_AF_RESULT 0x20
+#define M9MO_LENS_ZOOM_SET_INFO 0x22
+#define M9MO_LENS_ZOOM_SPEED 0x25
+#define M9MO_LENS_ZOOM_STATUS 0x26
+#define M9MO_LENS_LENS_STATUS 0x28
+#define M9MO_LENS_ZOOM_LENS_STATUS 0x2A
#define M9MO_LENS_AF_TOUCH_POSX 0x30
#define M9MO_LENS_AF_TOUCH_POSY 0x32
+#define M9MO_LENS_AF_VERSION 0x60
/* M9MO_CATEGORY_CAPPARM: 0x0B */
#define M9MO_CAPPARM_YUVOUT_MAIN 0x00
@@ -364,9 +544,13 @@ struct m9mo_state {
#define M9MO_CAPPARM_JPEG_RATIO 0x17
#define M9MO_CAPPARM_MCC_MODE 0x1D
#define M9MO_CAPPARM_STROBE_EN 0x22
+#define M9MO_CAPPARM_STROBE_CHARGE 0x27
+#define M9MO_CAPPARM_STROBE_EVC 0x28
+#define M9MO_CAPPARM_STROBE_UP_DOWN 0x29
#define M9MO_CAPPARM_WDR_EN 0x2C
-#define M9MO_CAPPARM_JPEG_RATIO_OFS 0x34
+#define M9MO_CAPPARM_JPEG_RATIO_OFS 0x1B
#define M9MO_CAPPARM_THUMB_JPEG_MAX 0x3C
+#define M9MO_CAPPARM_STROBE_BATT_INFO 0x3F
#define M9MO_CAPPARM_AFB_CAP_EN 0x53
/* M9MO_CATEGORY_CAPCTRL: 0x0C */
@@ -376,6 +560,7 @@ struct m9mo_state {
#define M9MO_CAPCTRL_START_DUALCAP 0x05
#define M9MO_CAPCTRL_FRM_SEL 0x06
#define M9MO_CAPCTRL_FRM_PRV_SEL 0x07
+#define M9MO_CAPCTRL_FRM_THUMB_SEL 0x08
#define M9MO_CAPCTRL_TRANSFER 0x09
#define M9MO_CAPCTRL_IMG_SIZE 0x0D
#define M9MO_CAPCTRL_THUMB_SIZE 0x11
@@ -388,6 +573,7 @@ struct m9mo_state {
#define M9MO_CAP_MODE_ADDPIXEL_CAPTURE (0x08)
#define M9MO_CAP_MODE_PANORAMA_CAPTURE (0x0B)
#define M9MO_CAP_MODE_BLINK_CAPTURE (0x0C)
+#define M9MO_CAP_MODE_RAW (0x0D)
/* M9MO_CATEGORY_ADJST: 0x0E */
#define M9MO_ADJST_SHUTTER_MODE 0x33
@@ -426,6 +612,8 @@ struct m9mo_state {
#define M9MO_INT_MODE (1 << 8)
#define M9MO_INT_ATSCENE (1 << 7)
#define M9MO_INT_ATSCENE_UPDATE (1 << 6)
+#define M9MO_INT_AF_STATUS (1 << 5)
+#define M9MO_INT_OIS_SET (1 << 4)
#define M9MO_INT_OIS_INIT (1 << 3)
#define M9MO_INT_STNW_DETECT (1 << 2)
#define M9MO_INT_SCENARIO_FIN (1 << 1)