📄 cckac1310.c
字号:
/*!****************************************************************************! 05.03.2002 splitted huge cmoscam.c*! FILE NAME : cckac1310.c*! DESCRIPTION: sensor support for KAC-1310*//****************** INCLUDE FILES SECTION ***********************************/#include <linux/module.h>#include <linux/sched.h>#include <linux/slab.h>#include <linux/errno.h>#include <linux/kernel.h>#include <linux/fs.h>#include <linux/string.h>#include <linux/init.h>#include <linux/config.h>#include <asm/system.h>#include <asm/svinto.h>#include <asm/io.h>#include <asm/irq.h>#include <asm/delay.h>#include <asm/uaccess.h>#include <asm/cmoscama.h>#include "cc303.h"#include "cci2c.h"#include "cckac1310.h"#define D(x)// **************************************************************static unsigned long default_KAC1310[]= \ { P_VIRT_WIDTH, 1300, // will set one less to internal registers P_VIRT_HEIGHT, 1064, P_WOI_LEFT, 8, P_WOI_TOP, 16, P_WOI_WIDTH, 1280, P_WOI_HEIGHT, 1024 };void ccamInitWndSizeKAC1310 (void) {}int init_KAC1310(void) { // returns SENSOR_KAC1310=32 if found unsigned char d[2]; unsigned char d1[0x40]; int i; d[0]=P_KAC_PARTID;// read register 0x0f, slave address 0x66 i2c_writeData(0, KAC_I2C_ADDR & 0xfe, &d[0], 1); i2c_readData (0, KAC_I2C_ADDR | 1, &d[0], 1); if (d[0]==KAC1310_PARTID) { set_sensor_i2c_addr(KAC_I2C_ADDR); set_imageParamsR(P_SENSOR,SENSOR_KAC1310); printk("Found KAC-1310 sensor\n");// read appropriate i2c to shadow registers d[0]=0; // i2c address i2c_writeData(0, get_sensor_i2c_addr() & 0xfe, &d[0], 1); i2c_readData (0, get_sensor_i2c_addr() | 1, &d1[0], 0x14); // read regs 0..0x13 for (i=0;i< 0x14; i++) set_sensor_i2c_regs( i+d[0], d1[i]); d[0]=0x20; // i2c address i2c_writeData(0, get_sensor_i2c_addr() & 0xfe, &d[0], 1); i2c_readData (0, get_sensor_i2c_addr() | 1, &d1[0], 0x4); // read regs 0x20..0x23 for (i=0;i< 0x4; i++) set_sensor_i2c_regs( i+d[0], d1[i]); d[0]=0x40; // i2c address i2c_writeData(0, get_sensor_i2c_addr() & 0xfe, &d[0], 1); i2c_readData (0, get_sensor_i2c_addr() | 1, &d1[0], 0x29); // read regs 0x40..0x68 for (i=0;i< 0x29; i++) set_sensor_i2c_regs( i+d[0], d1[i]); d[0]=0x80; // i2c address i2c_writeData(0, get_sensor_i2c_addr() & 0xfe, &d[0], 1); i2c_readData (0, get_sensor_i2c_addr() | 1, &d1[0], 0x40); // read regs 0x80..0xbf for (i=0;i< 0x40; i++) set_sensor_i2c_regs( i+d[0], d1[i]); writeSensorDefaults(& default_KAC1310[0],sizeof(default_KAC1310)/sizeof( default_KAC1310[0])/2); // set KAC1310 specific defaults return (get_imageParamsR(P_SENSOR)); } return 0;}int program_KAC1310(void){ // program KAC1310 sensor return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -