/*
|
*************************************************************************
|
* Rockchip driver for CIF ISP 1.0
|
* (Based on Intel driver for sofiaxxx)
|
*
|
* Copyright (C) 2015 Intel Mobile Communications GmbH
|
* Copyright (C) 2016 Fuzhou Rockchip Electronics Co., Ltd.
|
*
|
*
|
* This program is free software; you can redistribute it and/or modify
|
* it under the terms of the GNU General Public License as published by
|
* the Free Software Foundation; either version 2 of the License, or
|
* (at your option) any later version.
|
*************************************************************************
|
*/
|
|
#ifndef _V4L2_CONFIG_ROCKCHIP_H
|
#define _V4L2_CONFIG_ROCKCHIP_H
|
|
#define CAMERA_STRLEN 32
|
#define CAMERA_METADATA_LEN (2 * PAGE_SIZE)
|
#define VALID_FR_EXP_T_INDEX 0
|
#define VALID_FR_EXP_G_INDEX 1
|
#define SENSOR_CONFIG_NUM 4
|
#define SENSOR_READ_MODE 0
|
#define SENSOR_WRITE_MODE 1
|
|
/* Sensor resolution specific data for AE calculation.*/
|
struct isp_supplemental_sensor_mode_data {
|
unsigned int coarse_integration_time_min;
|
unsigned int coarse_integration_time_max_margin;
|
unsigned int fine_integration_time_min;
|
unsigned int fine_integration_time_max_margin;
|
unsigned int frame_length_lines;
|
unsigned int line_length_pck;
|
unsigned int vt_pix_clk_freq_hz;
|
unsigned int crop_horizontal_start; /* Sensor crop start cord. (x0,y0)*/
|
unsigned int crop_vertical_start;
|
unsigned int crop_horizontal_end; /* Sensor crop end cord. (x1,y1)*/
|
unsigned int crop_vertical_end;
|
unsigned int sensor_output_width; /* input size to ISP */
|
unsigned int sensor_output_height;
|
unsigned int isp_input_horizontal_start; /* cif isp input */
|
unsigned int isp_input_vertical_start;
|
unsigned int isp_input_width;
|
unsigned int isp_input_height;
|
unsigned int isp_output_width; /* cif isp output */
|
unsigned int isp_output_height;
|
unsigned char binning_factor_x; /* horizontal binning factor used */
|
unsigned char binning_factor_y; /* vertical binning factor used */
|
/*
|
*0: Exposure time valid fileds;
|
*1: Exposure gain valid fileds;
|
*(2 fileds == 1 frames)
|
*/
|
unsigned char exposure_valid_frame[2];
|
int exp_time;
|
unsigned short gain;
|
unsigned char max_exp_gain_h;
|
unsigned char max_exp_gain_l;
|
};
|
|
struct camera_module_info_s {
|
char sensor_name[CAMERA_STRLEN];
|
char module_name[CAMERA_STRLEN];
|
char len_name[CAMERA_STRLEN];
|
char fov_h[CAMERA_STRLEN];
|
char fov_v[CAMERA_STRLEN];
|
char focal_length[CAMERA_STRLEN];
|
char focus_distance[CAMERA_STRLEN];
|
int facing;
|
int orientation;
|
bool iq_mirror;
|
bool iq_flip;
|
int flash_support;
|
int flash_exp_percent;
|
int af_support;
|
};
|
|
struct sensor_resolution_s {
|
unsigned short width;
|
unsigned short height;
|
};
|
|
struct sensor_config_info_s {
|
unsigned char config_num;
|
unsigned char sensor_fmt[SENSOR_CONFIG_NUM];
|
struct sensor_resolution_s reso[SENSOR_CONFIG_NUM];
|
};
|
|
struct sensor_reg_rw_s {
|
unsigned char reg_access_mode;
|
unsigned char reg_addr_len;
|
unsigned char reg_data_len;
|
unsigned short addr;
|
unsigned short data;
|
};
|
|
struct flash_timeinfo_s {
|
struct timeval preflash_start_t;
|
struct timeval preflash_end_t;
|
struct timeval mainflash_start_t;
|
struct timeval mainflash_end_t;
|
int flash_turn_on_time;
|
int flash_on_timeout;
|
};
|
|
struct frame_timeinfo_s {
|
struct timeval vs_t;
|
struct timeval fi_t;
|
};
|
|
struct sensor_metadata_s {
|
unsigned int exp_time;
|
unsigned int gain;
|
};
|
|
struct v4l2_buffer_metadata_s {
|
unsigned int frame_id;
|
struct frame_timeinfo_s frame_t;
|
struct flash_timeinfo_s flash_t;
|
struct sensor_metadata_s sensor;
|
unsigned char isp[CAMERA_METADATA_LEN - 512];
|
};
|
|
#endif
|