#define DBG(x...)\r
#endif\r
\r
+#define SENSOR_VERSION_AND_TIME "sensor-dev.c v1.0 2013-2-18"\r
+\r
+\r
struct sensor_private_data *g_sensor[SENSOR_NUM_TYPES];\r
static struct sensor_operate *sensor_ops[SENSOR_NUM_ID]; \r
static struct class *g_sensor_class[SENSOR_NUM_TYPES];\r
client->irq = irq;\r
if((sensor->pdata->type == SENSOR_TYPE_GYROSCOPE) || (sensor->pdata->type == SENSOR_TYPE_ACCEL))\r
disable_irq_nosync(client->irq);//disable irq\r
+ if(((sensor->pdata->type == SENSOR_TYPE_LIGHT) || (sensor->pdata->type == SENSOR_TYPE_PROXIMITY))&& (!(sensor->ops->trig & IRQF_SHARED))) \r
+ disable_irq_nosync(client->irq);//disable irq\r
printk("%s:use irq=%d\n",__func__,irq);\r
}\r
else if(!sensor->pdata->irq_enable)\r
printk("%s:fail to active sensor,ret=%d\n",__func__,result); \r
goto error; \r
} \r
- \r
- if(!sensor->pdata->irq_enable)\r
+ if(sensor->pdata->irq_enable)\r
+ {\r
+ if(!(sensor->ops->trig & IRQF_SHARED))\r
+ {\r
+ DBG("%s:enable irq,irq=%d\n",__func__,client->irq);\r
+ enable_irq(client->irq); //enable irq\r
+ }\r
+ } \r
+ else\r
{\r
PREPARE_DELAYED_WORK(&sensor->delaywork, sensor_delaywork_func);\r
schedule_delayed_work(&sensor->delaywork, msecs_to_jiffies(sensor->pdata->poll_delay_ms));\r
}\r
+ \r
sensor->status_cur = SENSOR_ON;\r
} \r
}\r
goto error;\r
}\r
\r
- if(!sensor->pdata->irq_enable)\r
- cancel_delayed_work_sync(&sensor->delaywork); \r
+ if(sensor->pdata->irq_enable)\r
+ { \r
+ if(!(sensor->ops->trig & IRQF_SHARED))\r
+ {\r
+ DBG("%s:disable irq,irq=%d\n",__func__,client->irq);\r
+ disable_irq_nosync(client->irq);//disable irq\r
+ }\r
+ }\r
+ else\r
+ cancel_delayed_work_sync(&sensor->delaywork); \r
+ \r
sensor->status_cur = SENSOR_OFF;\r
}\r
}\r
goto error; \r
}\r
\r
- if(!sensor->pdata->irq_enable)\r
+ if(sensor->pdata->irq_enable)\r
+ {\r
+ if(!(sensor->ops->trig & IRQF_SHARED))\r
+ {\r
+ DBG("%s:enable irq,irq=%d\n",__func__,client->irq);\r
+ enable_irq(client->irq); //enable irq\r
+ }\r
+ } \r
+ else\r
{\r
PREPARE_DELAYED_WORK(&sensor->delaywork, sensor_delaywork_func);\r
schedule_delayed_work(&sensor->delaywork, msecs_to_jiffies(sensor->pdata->poll_delay_ms));\r
}\r
+ \r
sensor->status_cur = SENSOR_ON;\r
} \r
}\r
mutex_unlock(&sensor->operation_mutex); \r
goto error;\r
}\r
- if(!sensor->pdata->irq_enable)\r
+ if(sensor->pdata->irq_enable)\r
+ { \r
+ if(!(sensor->ops->trig & IRQF_SHARED))\r
+ {\r
+ DBG("%s:disable irq,irq=%d\n",__func__,client->irq);\r
+ disable_irq_nosync(client->irq);//disable irq\r
+ }\r
+ }\r
+ else\r
cancel_delayed_work_sync(&sensor->delaywork); \r
sensor->status_cur = SENSOR_OFF;\r
}\r
{"gs_kxtik", ACCEL_ID_KXTIK},\r
{"gs_lis3dh", ACCEL_ID_LIS3DH},\r
{"gs_mma7660", ACCEL_ID_MMA7660},\r
+ {"gs_mxc6225", ACCEL_ID_MXC6225},\r
/*compass*/\r
{"compass", COMPASS_ID_ALL},\r
{"ak8975", COMPASS_ID_AK8975},\r
{"light_cm3217", LIGHT_ID_CM3217},\r
{"light_al3006", LIGHT_ID_AL3006},\r
{"ls_stk3171", LIGHT_ID_STK3171},\r
+ {"ls_isl29023", LIGHT_ID_ISL29023},\r
+ {"ls_ap321xx", LIGHT_ID_AP321XX},\r
+ {"ls_photoresistor", LIGHT_ID_PHOTORESISTOR},\r
/*proximity sensor*/\r
{"psensor", PROXIMITY_ID_ALL},\r
{"proximity_al3006", PROXIMITY_ID_AL3006}, \r
{"ps_stk3171", PROXIMITY_ID_STK3171},\r
+ {"ps_ap321xx", PROXIMITY_ID_AP321XX},\r
/*temperature*/\r
{"temperature", TEMPERATURE_ID_ALL},\r
{},\r
pr_info("%s: Probe name %s\n", __func__, sensor_driver.driver.name);\r
if (res)\r
pr_err("%s failed\n", __func__);\r
+ \r
+ printk("%s\n", SENSOR_VERSION_AND_TIME);\r
return res;\r
}\r
\r