当前位置: 代码迷 >> 驱动开发 >> gsensor afa750 i2c有关问题
  详细解决方案

gsensor afa750 i2c有关问题

热度:79   发布时间:2016-04-28 10:06:26.0
gsensor afa750 i2c问题
static int sensor_active(struct i2c_client *client, int enable, int rate)
 {
 struct sensor_private_data *sensor =
     (struct sensor_private_data *) i2c_get_clientdata(client); 
 int result = 0;
 int status = 0;
 sensor->ops->ctrl_data = sensor_read_reg(client, sensor->ops->ctrl_reg);
 //sensor->ops->ctrl_data = sensor_read_reg(client, client->addr);

 //register setting according to chip datasheet 
 if(enable)
 { 
 status = AFA750_ENABLE; //afa750
 sensor->ops->ctrl_data |= status; 
 }
 else
 {
 status = ~AFA750_ENABLE; //afa750
 sensor->ops->ctrl_data &= status;
 }

 DBG("%s:reg=0x%x,reg_ctrl=0x%x,enable=%d\n",__func__,sensor->ops->ctrl_reg, sensor->ops->ctrl_data, enable);
 printk("%s:reg=0x%x,  addr  = 0x%x   reg_ctrl_data=0x%x,enable=%d\n",__func__,sensor->ops->ctrl_reg, client->addr,sensor->ops->ctrl_data, enable);
result = sensor_write_reg(client, sensor->ops->ctrl_reg, sensor->ops->ctrl_data);
if(result){
 printk("%s:fail to active sensor,result = %d\n",__func__,result);
 }
 return result;

 }
为什么result返回的会是负值,是不是ctrl_reg和ctrl_data的问题?求大神解答 
 
------解决方案--------------------
弱弱地问一下:
sensor_write_reg是公用的Linux内核组件的API么?还是厂家的驱动程序定义实现的?

另外,是任何时候都返回负值么?还是设置某些寄存器的时候会是正确的?
有没有可能你写了只读寄存器?