NVP6324与主机通过I2C进行通讯的。为了方便调试NVP6324图像功能,方便调试各个寄存器的值,故添加一个可以获取和设置各个寄存器值ioctl,以便于应用层能可以动态设置。
首先在jaguar1_common.h定义一个结构体
typedef struct _rw_register_attr
{
unsigned char flag;/**0:read;1:write*/
unsigned char dev; /*0 or 1*/
unsigned char bank;
unsigned char addr;
unsigned char val;
unsigned char pos;
unsigned char size;
unsigned char reserved;
}rw_register_attr;
在jaguar1_ioctl.h中定义一个ioctl类型
#define IOC_RW_REGISTER 0xFD /**获取设置寄存器*/
在jaguar1_ioctl函数中添加如下
case IOC_RW_REGISTER :
{
rw_register_attr reg_info;
if(copy_from_user(®_info, argp, sizeof(rw_register_attr)))
{
printk("IOC_RW_REGISTER error\n");
}
if(reg_info.flag == 0) /*read*/
{
gpio_i2c_write(jaguar1_i2c_addr[reg_info.dev], 0xFF, 0x00);
reg_info.val = gpio_i2c_read(jaguar1_i2c_addr[reg_info.dev], reg_info.addr);
}
else if(reg_info.flag &