struct sensor_private_data *sensor =\r
(struct sensor_private_data *) i2c_get_clientdata(client); \r
int result = 0;\r
- int status = 0;\r
\r
- sensor->ops->ctrl_data = sensor_read_reg(client, sensor->ops->ctrl_reg);\r
+ //sensor->ops->ctrl_data = sensor_read_reg(client, sensor->ops->ctrl_reg);\r
\r
//register setting according to chip datasheet \r
if(enable)\r
{ \r
- status = AK8975_MODE_SNG_MEASURE;\r
- sensor->ops->ctrl_data |= status; \r
+ sensor->ops->ctrl_data = AK8975_MODE_SNG_MEASURE; \r
}\r
else\r
{\r
- status = ~AK8975_MODE_SNG_MEASURE;\r
- sensor->ops->ctrl_data &= status;\r
+ sensor->ops->ctrl_data = AK8975_MODE_POWERDOWN;\r
}\r
\r
DBG("%s:reg=0x%x,reg_ctrl=0x%x,enable=%d\n",__func__,sensor->ops->ctrl_reg, sensor->ops->ctrl_data, enable);\r
}\r
\r
sensor->status_cur = SENSOR_OFF;\r
- \r
+#if 0 \r
sensor->ops->ctrl_data = 0;\r
result = sensor_write_reg(client, sensor->ops->ctrl_reg, sensor->ops->ctrl_data);\r
if(result)\r
printk("%s:line=%d,error\n",__func__,__LINE__);\r
return result;\r
}\r
-\r
+#endif\r
DBG("%s:status_cur=%d\n",__func__, sensor->status_cur);\r
return result;\r
}\r
}\r
\r
\r
+ //trigger next measurement \r
+ ret = sensor_write_reg(client, sensor->ops->ctrl_reg, sensor->ops->ctrl_data);\r
+ if(ret)\r
+ {\r
+ printk(KERN_ERR "%s:fail to set ctrl_data:0x%x\n",__func__,sensor->ops->ctrl_data);\r
+ return ret;\r
+ }\r
+\r
return ret;\r
}\r
\r
case ECS_IOCTL_SET_MODE: \r
DBG("%s:ECS_IOCTL_SET_MODE start\n",__func__); \r
mutex_lock(&sensor->operation_mutex);\r
- ret = compass_akm_set_mode(client, mode);\r
- if (ret < 0) {\r
- printk("%s:fait to set mode\n",__func__); \r
- mutex_unlock(&sensor->operation_mutex);\r
- return ret;\r
- } \r
+ if(sensor->ops->ctrl_data != mode)\r
+ {\r
+ ret = compass_akm_set_mode(client, mode);\r
+ if (ret < 0) {\r
+ printk("%s:fait to set mode\n",__func__); \r
+ mutex_unlock(&sensor->operation_mutex);\r
+ return ret;\r
+ }\r
+ \r
+ sensor->ops->ctrl_data = mode;\r
+ }\r
mutex_unlock(&sensor->operation_mutex);\r
break;\r
case ECS_IOCTL_GETDATA: \r