summaryrefslogtreecommitdiff
path: root/include/video/sensor_drv_k.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/video/sensor_drv_k.h')
-rw-r--r--include/video/sensor_drv_k.h145
1 files changed, 145 insertions, 0 deletions
diff --git a/include/video/sensor_drv_k.h b/include/video/sensor_drv_k.h
new file mode 100644
index 00000000..94aff28b
--- /dev/null
+++ b/include/video/sensor_drv_k.h
@@ -0,0 +1,145 @@
+/*
+ * Copyright (C) 2012 Spreadtrum Communications Inc.
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+#ifndef _SENSOR_DRV_K_H_
+#define _SENSOR_DRV_K_H_
+
+
+struct sensor_i2c_tag {
+ uint8_t *i2c_data;
+ uint16_t i2c_count;
+ uint16_t slave_addr;
+};
+
+struct sensor_reg_tag {
+ uint16_t reg_addr;
+ uint16_t reg_value;
+};
+
+struct sensor_reg_bits_tag {
+ uint16_t reg_addr;
+ uint16_t reg_value;
+ uint32_t reg_bits;
+};
+
+struct sensor_reg_tab_tag {
+ struct sensor_reg_tag *sensor_reg_tab_ptr;
+ uint32_t reg_count;
+ uint32_t reg_bits;
+ uint32_t burst_mode;
+};
+
+struct sensor_flash_level {
+ uint32_t low_light;
+ uint32_t high_light;
+};
+
+enum INTERFACE_OP_ID {
+ INTERFACE_OPEN = 0,
+ INTERFACE_CLOSE
+};
+
+enum INTERFACE_TYPE_ID {
+ INTERFACE_CCIR = 0,
+ INTERFACE_MIPI
+};
+
+struct sensor_if_cfg_tag {
+ uint32_t is_open;
+ uint32_t if_type;
+ uint32_t phy_id;
+ uint32_t lane_num;
+ uint32_t bps_per_lane;
+};
+
+struct sensor_socid_tag {
+ uint32_t d_die;
+ uint32_t a_die;
+};
+
+struct sensor_power {
+ uint32_t af_volt_level;
+ uint32_t avdd_volt_level;
+ uint32_t dvdd_volt_level;
+ uint32_t iovdd_volt_level;
+ uint32_t power_down_level;
+ uint32_t reset_level;
+ uint32_t default_mclk;
+};
+
+struct sensor_power_info_tag {
+ uint32_t is_on;
+ uint32_t op_sensor_id;
+ struct sensor_power dev0;
+ struct sensor_power dev1;
+ struct sensor_power dev2;
+};
+struct sensor_name{
+ char back_name;
+ char front_name;
+};
+typedef enum {
+ SENSOR_OTP_PARAM_NORMAL = 0x00,
+ SENSOR_OTP_PARAM_CHECKSUM,
+ SENSOR_OTP_PARAM_READBYTE,
+ SENSOR_OTP_PARAM_FW_VERSION,
+ SENSOR_OTP_PARAM_TYPE_MAX
+} SENSOR_OTP_PARAM_TYPE_T;
+
+typedef struct _sensor_otp_data_info_tag {
+ uint32_t size;
+ void *data_ptr;
+} SENSOR_OTP_DATA_INFO_T, *SENSOR_OTP_DATA_INFO_T_PTR;
+
+typedef struct _sensor_otp_param_tag {
+ uint32_t type;
+ uint32_t start_addr;
+ uint32_t len;
+ uint8_t *buff;
+ struct _sensor_otp_data_info_tag golden;
+ struct _sensor_otp_data_info_tag awb;
+ struct _sensor_otp_data_info_tag lsc;
+} SENSOR_OTP_PARAM_T, *SENSOR_OTP_PARAM_T_PTR;
+
+
+#define SENSOR_IOC_MAGIC 'R'
+
+#define SENSOR_IO_PD _IOW(SENSOR_IOC_MAGIC, 0, uint8_t)
+#define SENSOR_IO_SET_AVDD _IOW(SENSOR_IOC_MAGIC, 1, uint32_t)
+#define SENSOR_IO_SET_DVDD _IOW(SENSOR_IOC_MAGIC, 2, uint32_t)
+#define SENSOR_IO_SET_IOVDD _IOW(SENSOR_IOC_MAGIC, 3, uint32_t)
+#define SENSOR_IO_SET_MCLK _IOW(SENSOR_IOC_MAGIC, 4, uint32_t)
+#define SENSOR_IO_RST _IOW(SENSOR_IOC_MAGIC, 5, uint32_t)
+#define SENSOR_IO_I2C_INIT _IOW(SENSOR_IOC_MAGIC, 6, uint32_t)
+#define SENSOR_IO_I2C_DEINIT _IOW(SENSOR_IOC_MAGIC, 7, uint32_t)
+#define SENSOR_IO_SET_ID _IOW(SENSOR_IOC_MAGIC, 8, uint32_t)
+#define SENSOR_IO_RST_LEVEL _IOW(SENSOR_IOC_MAGIC, 9, uint32_t)
+#define SENSOR_IO_I2C_ADDR _IOW(SENSOR_IOC_MAGIC, 10, uint16_t)
+#define SENSOR_IO_I2C_READ _IOWR(SENSOR_IOC_MAGIC, 11, struct sensor_reg_bits_tag)
+#define SENSOR_IO_I2C_WRITE _IOW(SENSOR_IOC_MAGIC, 12, struct sensor_reg_bits_tag)
+#define SENSOR_IO_SET_FLASH _IOW(SENSOR_IOC_MAGIC, 13, uint32_t)
+#define SENSOR_IO_I2C_WRITE_REGS _IOW(SENSOR_IOC_MAGIC, 14, struct sensor_reg_tab_tag)
+#define SENSOR_IO_SET_CAMMOT _IOW(SENSOR_IOC_MAGIC, 15, uint32_t)
+#define SENSOR_IO_SET_I2CCLOCK _IOW(SENSOR_IOC_MAGIC, 16, uint32_t)
+#define SENSOR_IO_I2C_WRITE_EXT _IOW(SENSOR_IOC_MAGIC, 17, struct sensor_i2c_tag)
+#define SENSOR_IO_GET_FLASH_LEVEL _IOWR(SENSOR_IOC_MAGIC, 18, struct sensor_flash_level)
+#define SENSOR_IO_IF_CFG _IOW(SENSOR_IOC_MAGIC, 19, struct sensor_if_cfg_tag)
+#define SENSOR_IO_I2C_READ_EXT _IOWR(SENSOR_IOC_MAGIC, 20, struct sensor_i2c_tag)
+#define SENSOR_IO_POWER_CFG _IOWR(SENSOR_IOC_MAGIC, 21, struct sensor_power_info_tag)
+#define SENSOR_IO_SET_SOCNAME _IOWR(SENSOR_IOC_MAGIC, 22, struct sensor_name)
+#define SENSOR_IO_READ_OTPDATA _IOWR(SENSOR_IOC_MAGIC, 254,struct _sensor_otp_param_tag)
+#define SENSOR_IO_GET_SOCID _IOWR(SENSOR_IOC_MAGIC, 255,uint32_t)
+
+
+
+
+#endif //_SENSOR_DRV_K_H_