-/* include/linux/sensor-dev.h - sensor header file\r
- *\r
- * Copyright (C) 2012-2015 ROCKCHIP.\r
- * Author: luowei <lw@rock-chips.com>\r
- *\r
- * This software is licensed under the terms of the GNU General Public\r
- * License version 2, as published by the Free Software Foundation, and\r
- * may be copied, distributed, and modified under those terms.\r
- *\r
- * This program is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- * GNU General Public License for more details.\r
- *\r
- */\r
-\r
-#include <linux/miscdevice.h>\r
-#ifdef CONFIG_HAS_EARLYSUSPEND\r
-#include <linux/earlysuspend.h>\r
-#endif\r
-\r
-#include <dt-bindings/sensor-dev.h>\r
-\r
-#define SENSOR_ON 1\r
-#define SENSOR_OFF 0\r
-#define SENSOR_UNKNOW_DATA -1\r
-\r
-#define GPIO_HIGH 1\r
-#define GPIO_LOW 0\r
-\r
-enum sensor_id {\r
- ID_INVALID = 0,\r
-\r
- ANGLE_ID_ALL,\r
- ANGLE_ID_KXTIK,\r
- ANGLE_ID_LIS3DH,\r
- \r
- ACCEL_ID_ALL,\r
- ACCEL_ID_LIS331,\r
- ACCEL_ID_LSM303DLX,\r
- ACCEL_ID_LIS3DH,\r
- ACCEL_ID_KXSD9,\r
- ACCEL_ID_KXTF9,\r
- ACCEL_ID_KXTIK,\r
- ACCEL_ID_KXTJ9,\r
- ACCEL_ID_BMA150,\r
- ACCEL_ID_BMA222,\r
- ACCEL_ID_BMA250,\r
- ACCEL_ID_ADXL34X,\r
- ACCEL_ID_MMA8450,\r
- ACCEL_ID_MMA845X,\r
- ACCEL_ID_MMA7660,\r
- ACCEL_ID_MPU6050,\r
- ACCEL_ID_MXC6225,\r
- ACCEL_ID_DMARD10,\r
- ACCEL_ID_LSM303D,\r
- ACCEL_ID_MC3230,\r
- ACCEL_ID_MPU6880,\r
- ACCEL_ID_MPU6500,\r
- COMPASS_ID_ALL,\r
- COMPASS_ID_AK8975,\r
- COMPASS_ID_AK8963,\r
- COMPASS_ID_AK09911,\r
- COMPASS_ID_AK8972,\r
- COMPASS_ID_AMI30X,\r
- COMPASS_ID_AMI306,\r
- COMPASS_ID_YAS529,\r
- COMPASS_ID_YAS530,\r
- COMPASS_ID_HMC5883,\r
- COMPASS_ID_LSM303DLH,\r
- COMPASS_ID_LSM303DLM,\r
- COMPASS_ID_MMC314X,\r
- COMPASS_ID_HSCDTD002B,\r
- COMPASS_ID_HSCDTD004A,\r
-\r
- GYRO_ID_ALL,\r
- GYRO_ID_L3G4200D,\r
- GYRO_ID_L3G20D,\r
- GYRO_ID_EWTSA,\r
- GYRO_ID_K3G,\r
- GYRO_ID_MPU6880,\r
- LIGHT_ID_ALL,\r
- LIGHT_ID_CM3217,\r
- LIGHT_ID_CM3218,\r
- LIGHT_ID_CM3232,\r
- LIGHT_ID_AL3006,\r
- LIGHT_ID_STK3171,\r
- LIGHT_ID_ISL29023,\r
- LIGHT_ID_AP321XX,\r
- LIGHT_ID_PHOTORESISTOR, \r
- LIGHT_ID_US5152,\r
-\r
- PROXIMITY_ID_ALL,\r
- PROXIMITY_ID_AL3006,\r
- PROXIMITY_ID_STK3171,\r
- PROXIMITY_ID_AP321XX,\r
- \r
- TEMPERATURE_ID_ALL, \r
- TEMPERATURE_ID_MS5607,\r
-\r
- PRESSURE_ID_ALL,\r
- PRESSURE_ID_BMA085,\r
- PRESSURE_ID_MS5607,\r
-\r
- HALL_ID_ALL,\r
- HALL_ID_OCH165T,\r
- \r
- SENSOR_NUM_ID,\r
-};\r
-\r
-\r
-struct sensor_axis {\r
- int x;\r
- int y;\r
- int z;\r
-};\r
-\r
-struct sensor_flag {\r
- atomic_t a_flag; \r
- atomic_t m_flag; \r
- atomic_t mv_flag; \r
- atomic_t open_flag;\r
- atomic_t debug_flag;\r
- long long delay; \r
- wait_queue_head_t open_wq;\r
-};\r
-\r
-\r
-struct sensor_operate {\r
- char *name;\r
- int type;\r
- int id_i2c;\r
- int range[2];\r
- int brightness[2];//backlight min_brightness max_brightness \r
- int read_reg;\r
- int read_len;\r
- int id_reg;\r
- int id_data;\r
- int precision;\r
- int ctrl_reg;\r
- int ctrl_data;\r
- int int_ctrl_reg;\r
- int int_status_reg;\r
- int trig; //intterupt trigger\r
- int (*active)(struct i2c_client *client, int enable, int rate); \r
- int (*init)(struct i2c_client *client); \r
- int (*report)(struct i2c_client *client);\r
- int (*suspend)(struct i2c_client *client);\r
- int (*resume)(struct i2c_client *client);\r
- struct miscdevice *misc_dev;\r
-\r
-};\r
-\r
-\r
-/* Platform data for the sensor */\r
-struct sensor_private_data {\r
- int type;\r
- struct i2c_client *client; \r
- struct input_dev *input_dev;\r
- struct work_struct work;\r
- struct delayed_work delaywork; /*report second event*/\r
- struct sensor_axis axis;\r
- char sensor_data[40]; //max support40 bytes data\r
- atomic_t data_ready;\r
- wait_queue_head_t data_ready_wq; \r
- struct mutex data_mutex;\r
- struct mutex operation_mutex; \r
- struct mutex sensor_mutex;\r
- struct mutex i2c_mutex;\r
- int status_cur;\r
- int start_count;\r
- int devid;\r
- struct sensor_flag flags;\r
- struct i2c_device_id *i2c_id;\r
- struct sensor_platform_data *pdata;\r
- struct sensor_operate *ops; \r
- struct file_operations fops;\r
- struct miscdevice miscdev;\r
-#ifdef CONFIG_HAS_EARLYSUSPEND\r
- struct early_suspend early_suspend;\r
-#endif\r
-};\r
-\r
-struct sensor_platform_data {\r
- int type;\r
- int irq;\r
- int irq_pin;\r
- int power_pin;\r
- int reset_pin;\r
- int standby_pin;\r
- int irq_enable; //if irq_enable=1 then use irq else use polling \r
- int poll_delay_ms; //polling\r
- int x_min; //filter\r
- int y_min;\r
- int z_min;\r
- int factory;\r
- int layout;\r
- unsigned char address;\r
- unsigned long irq_flags;\r
- signed char orientation[9];\r
- short m_layout[4][3][3];\r
- int* project_name;\r
-};\r
-\r
- struct gsensor_platform_data {\r
- u16 model;\r
- u16 swap_xy;\r
- u16 swap_xyz;\r
- signed char orientation[9];\r
- int (*get_pendown_state)(void);\r
- int (*init_platform_hw)(void);\r
- int (*gsensor_platform_sleep)(void);\r
- int (*gsensor_platform_wakeup)(void);\r
- void (*exit_platform_hw)(void);\r
- };\r
- \r
- struct akm8975_platform_data {\r
- short m_layout[4][3][3];\r
- char project_name[64];\r
- int gpio_DRDY;\r
- };\r
- \r
- struct akm_platform_data {\r
- short m_layout[4][3][3];\r
- char project_name[64];\r
- char layout;\r
- char outbit;\r
- int gpio_DRDY;\r
- int gpio_RST;\r
- };\r
-\r
-extern int sensor_register_slave(int type,struct i2c_client *client,\r
- struct sensor_platform_data *slave_pdata,\r
- struct sensor_operate *(*get_sensor_ops)(void));\r
-\r
-\r
-extern int sensor_unregister_slave(int type,struct i2c_client *client,\r
- struct sensor_platform_data *slave_pdata,\r
- struct sensor_operate *(*get_sensor_ops)(void));\r
-\r
-#if 0\r
-#define DBG(x...) if((atomic_read(&sensor->flags.debug_flag) == sensor->pdata->type) || (atomic_read(&sensor->flags.debug_flag) == SENSOR_NUM_TYPES))printk(x)\r
-#else\r
-#define DBG(x...)\r
-#endif\r
-\r
-#define GSENSOR_IOCTL_MAGIC 'a'\r
-#define GBUFF_SIZE 12 /* Rx buffer size */\r
-\r
-/* IOCTLs for MMA8452 library */\r
-#define GSENSOR_IOCTL_INIT _IO(GSENSOR_IOCTL_MAGIC, 0x01)\r
-#define GSENSOR_IOCTL_RESET _IO(GSENSOR_IOCTL_MAGIC, 0x04)\r
-#define GSENSOR_IOCTL_CLOSE _IO(GSENSOR_IOCTL_MAGIC, 0x02)\r
-#define GSENSOR_IOCTL_START _IO(GSENSOR_IOCTL_MAGIC, 0x03)\r
-#define GSENSOR_IOCTL_GETDATA _IOR(GSENSOR_IOCTL_MAGIC, 0x08, char[GBUFF_SIZE+1])\r
-/* IOCTLs for APPs */\r
-#define GSENSOR_IOCTL_APP_SET_RATE _IOW(GSENSOR_IOCTL_MAGIC, 0x10, char)\r
-\r
-\r
-#define COMPASS_IOCTL_MAGIC 'c'\r
-/* IOCTLs for APPs */\r
-#define ECS_IOCTL_APP_SET_MODE _IOW(COMPASS_IOCTL_MAGIC, 0x10, short)\r
-#define ECS_IOCTL_APP_SET_MFLAG _IOW(COMPASS_IOCTL_MAGIC, 0x11, short)\r
-#define ECS_IOCTL_APP_GET_MFLAG _IOW(COMPASS_IOCTL_MAGIC, 0x12, short)\r
-#define ECS_IOCTL_APP_SET_AFLAG _IOW(COMPASS_IOCTL_MAGIC, 0x13, short)\r
-#define ECS_IOCTL_APP_GET_AFLAG _IOR(COMPASS_IOCTL_MAGIC, 0x14, short)\r
-#define ECS_IOCTL_APP_SET_TFLAG _IOR(COMPASS_IOCTL_MAGIC, 0x15, short)/* NOT use */\r
-#define ECS_IOCTL_APP_GET_TFLAG _IOR(COMPASS_IOCTL_MAGIC, 0x16, short)/* NOT use */\r
-#define ECS_IOCTL_APP_RESET_PEDOMETER _IOW(COMPASS_IOCTL_MAGIC, 0x17) /* NOT use */\r
-#define ECS_IOCTL_APP_SET_DELAY _IOW(COMPASS_IOCTL_MAGIC, 0x18, short)\r
-#define ECS_IOCTL_APP_SET_MVFLAG _IOW(COMPASS_IOCTL_MAGIC, 0x19, short)\r
-#define ECS_IOCTL_APP_GET_MVFLAG _IOR(COMPASS_IOCTL_MAGIC, 0x1A, short)\r
-#define ECS_IOCTL_APP_GET_DELAY _IOR(COMPASS_IOCTL_MAGIC, 0x1B, short)\r
-\r
-\r
-\r
-\r
-#define LIGHTSENSOR_IOCTL_MAGIC 'l'\r
-#define LIGHTSENSOR_IOCTL_GET_ENABLED _IOR(LIGHTSENSOR_IOCTL_MAGIC, 1, int *) \r
-#define LIGHTSENSOR_IOCTL_ENABLE _IOW(LIGHTSENSOR_IOCTL_MAGIC, 2, int *) \r
-#define LIGHTSENSOR_IOCTL_DISABLE _IOW(LIGHTSENSOR_IOCTL_MAGIC, 3, int *)\r
-\r
-#define PSENSOR_IOCTL_MAGIC 'p'\r
-#define PSENSOR_IOCTL_GET_ENABLED _IOR(PSENSOR_IOCTL_MAGIC, 1, int *)\r
-#define PSENSOR_IOCTL_ENABLE _IOW(PSENSOR_IOCTL_MAGIC, 2, int *)\r
-#define PSENSOR_IOCTL_DISABLE _IOW(PSENSOR_IOCTL_MAGIC, 3, int *)\r
-\r
-\r
-#define PRESSURE_IOCTL_MAGIC 'r'\r
-#define PRESSURE_IOCTL_GET_ENABLED _IOR(PRESSURE_IOCTL_MAGIC, 1, int *)\r
-#define PRESSURE_IOCTL_ENABLE _IOW(PRESSURE_IOCTL_MAGIC, 2, int *)\r
-#define PRESSURE_IOCTL_DISABLE _IOW(PRESSURE_IOCTL_MAGIC, 3, int *)\r
-#define PRESSURE_IOCTL_SET_DELAY _IOW(PRESSURE_IOCTL_MAGIC, 4, int *)\r
-\r
-\r
-#define TEMPERATURE_IOCTL_MAGIC 't'\r
-#define TEMPERATURE_IOCTL_GET_ENABLED _IOR(TEMPERATURE_IOCTL_MAGIC, 1, int *)\r
-#define TEMPERATURE_IOCTL_ENABLE _IOW(TEMPERATURE_IOCTL_MAGIC, 2, int *)\r
-#define TEMPERATURE_IOCTL_DISABLE _IOW(TEMPERATURE_IOCTL_MAGIC, 3, int *)\r
-#define TEMPERATURE_IOCTL_SET_DELAY _IOW(TEMPERATURE_IOCTL_MAGIC, 4, int *)\r
-\r
-\r
-extern int sensor_rx_data(struct i2c_client *client, char *rxData, int length);\r
-extern int sensor_tx_data(struct i2c_client *client, char *txData, int length);\r
-extern int sensor_write_reg(struct i2c_client *client, int addr, int value);\r
-extern int sensor_read_reg(struct i2c_client *client, int addr);\r
-extern int sensor_tx_data_normal(struct i2c_client *client, char *buf, int num);\r
-extern int sensor_rx_data_normal(struct i2c_client *client, char *buf, int num);\r
-extern int sensor_write_reg_normal(struct i2c_client *client, char value);\r
-extern int sensor_read_reg_normal(struct i2c_client *client);\r
-\r
+/* include/linux/sensor-dev.h - sensor header file
+ *
+ * Copyright (C) 2012-2015 ROCKCHIP.
+ * Author: luowei <lw@rock-chips.com>
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#include <linux/miscdevice.h>
+#ifdef CONFIG_HAS_EARLYSUSPEND
+#include <linux/earlysuspend.h>
+#endif
+
+#include <dt-bindings/sensor-dev.h>
+
+#define SENSOR_ON 1
+#define SENSOR_OFF 0
+#define SENSOR_UNKNOW_DATA -1
+
+#define GPIO_HIGH 1
+#define GPIO_LOW 0
+
+enum sensor_id {
+ ID_INVALID = 0,
+
+ ANGLE_ID_ALL,
+ ANGLE_ID_KXTIK,
+ ANGLE_ID_LIS3DH,
+
+ ACCEL_ID_ALL,
+ ACCEL_ID_LIS331,
+ ACCEL_ID_LSM303DLX,
+ ACCEL_ID_LIS3DH,
+ ACCEL_ID_KXSD9,
+ ACCEL_ID_KXTF9,
+ ACCEL_ID_KXTIK,
+ ACCEL_ID_KXTJ9,
+ ACCEL_ID_BMA150,
+ ACCEL_ID_BMA222,
+ ACCEL_ID_BMA250,
+ ACCEL_ID_ADXL34X,
+ ACCEL_ID_MMA8450,
+ ACCEL_ID_MMA845X,
+ ACCEL_ID_MMA7660,
+ ACCEL_ID_MPU6050,
+ ACCEL_ID_MXC6225,
+ ACCEL_ID_DMARD10,
+ ACCEL_ID_LSM303D,
+ ACCEL_ID_MC3230,
+ ACCEL_ID_MPU6880,
+ ACCEL_ID_MPU6500,
+ COMPASS_ID_ALL,
+ COMPASS_ID_AK8975,
+ COMPASS_ID_AK8963,
+ COMPASS_ID_AK09911,
+ COMPASS_ID_AK8972,
+ COMPASS_ID_AMI30X,
+ COMPASS_ID_AMI306,
+ COMPASS_ID_YAS529,
+ COMPASS_ID_YAS530,
+ COMPASS_ID_HMC5883,
+ COMPASS_ID_LSM303DLH,
+ COMPASS_ID_LSM303DLM,
+ COMPASS_ID_MMC314X,
+ COMPASS_ID_HSCDTD002B,
+ COMPASS_ID_HSCDTD004A,
+
+ GYRO_ID_ALL,
+ GYRO_ID_L3G4200D,
+ GYRO_ID_L3G20D,
+ GYRO_ID_EWTSA,
+ GYRO_ID_K3G,
+ GYRO_ID_MPU6880,
+ LIGHT_ID_ALL,
+ LIGHT_ID_CM3217,
+ LIGHT_ID_CM3218,
+ LIGHT_ID_CM3232,
+ LIGHT_ID_AL3006,
+ LIGHT_ID_STK3171,
+ LIGHT_ID_ISL29023,
+ LIGHT_ID_AP321XX,
+ LIGHT_ID_PHOTORESISTOR,
+ LIGHT_ID_US5152,
+
+ PROXIMITY_ID_ALL,
+ PROXIMITY_ID_AL3006,
+ PROXIMITY_ID_STK3171,
+ PROXIMITY_ID_AP321XX,
+
+ TEMPERATURE_ID_ALL,
+ TEMPERATURE_ID_MS5607,
+
+ PRESSURE_ID_ALL,
+ PRESSURE_ID_BMA085,
+ PRESSURE_ID_MS5607,
+
+ HALL_ID_ALL,
+ HALL_ID_OCH165T,
+
+ SENSOR_NUM_ID,
+};
+
+
+struct sensor_axis {
+ int x;
+ int y;
+ int z;
+};
+
+struct sensor_flag {
+ atomic_t a_flag;
+ atomic_t m_flag;
+ atomic_t mv_flag;
+ atomic_t open_flag;
+ atomic_t debug_flag;
+ long long delay;
+ wait_queue_head_t open_wq;
+};
+
+
+struct sensor_operate {
+ char *name;
+ int type;
+ int id_i2c;
+ int range[2];
+ int brightness[2];//backlight min_brightness max_brightness
+ int read_reg;
+ int read_len;
+ int id_reg;
+ int id_data;
+ int precision;
+ int ctrl_reg;
+ int ctrl_data;
+ int int_ctrl_reg;
+ int int_status_reg;
+ int trig; //intterupt trigger
+ int (*active)(struct i2c_client *client, int enable, int rate);
+ int (*init)(struct i2c_client *client);
+ int (*report)(struct i2c_client *client);
+ int (*suspend)(struct i2c_client *client);
+ int (*resume)(struct i2c_client *client);
+ struct miscdevice *misc_dev;
+
+};
+
+
+/* Platform data for the sensor */
+struct sensor_private_data {
+ int type;
+ struct i2c_client *client;
+ struct input_dev *input_dev;
+ struct work_struct work;
+ struct delayed_work delaywork; /*report second event*/
+ struct sensor_axis axis;
+ char sensor_data[40]; //max support40 bytes data
+ atomic_t data_ready;
+ wait_queue_head_t data_ready_wq;
+ struct mutex data_mutex;
+ struct mutex operation_mutex;
+ struct mutex sensor_mutex;
+ struct mutex i2c_mutex;
+ int status_cur;
+ int start_count;
+ int devid;
+ struct sensor_flag flags;
+ struct i2c_device_id *i2c_id;
+ struct sensor_platform_data *pdata;
+ struct sensor_operate *ops;
+ struct file_operations fops;
+ struct miscdevice miscdev;
+#ifdef CONFIG_HAS_EARLYSUSPEND
+ struct early_suspend early_suspend;
+#endif
+};
+
+struct sensor_platform_data {
+ int type;
+ int irq;
+ int irq_pin;
+ int power_pin;
+ int reset_pin;
+ int standby_pin;
+ int irq_enable; //if irq_enable=1 then use irq else use polling
+ int poll_delay_ms; //polling
+ int x_min; //filter
+ int y_min;
+ int z_min;
+ int factory;
+ int layout;
+ unsigned char address;
+ unsigned long irq_flags;
+ signed char orientation[9];
+ short m_layout[4][3][3];
+ int* project_name;
+};
+
+ struct gsensor_platform_data {
+ u16 model;
+ u16 swap_xy;
+ u16 swap_xyz;
+ signed char orientation[9];
+ int (*get_pendown_state)(void);
+ int (*init_platform_hw)(void);
+ int (*gsensor_platform_sleep)(void);
+ int (*gsensor_platform_wakeup)(void);
+ void (*exit_platform_hw)(void);
+ };
+
+ struct akm8975_platform_data {
+ short m_layout[4][3][3];
+ char project_name[64];
+ int gpio_DRDY;
+ };
+
+ struct akm_platform_data {
+ short m_layout[4][3][3];
+ char project_name[64];
+ char layout;
+ char outbit;
+ int gpio_DRDY;
+ int gpio_RST;
+ };
+
+extern int sensor_register_slave(int type,struct i2c_client *client,
+ struct sensor_platform_data *slave_pdata,
+ struct sensor_operate *(*get_sensor_ops)(void));
+
+
+extern int sensor_unregister_slave(int type,struct i2c_client *client,
+ struct sensor_platform_data *slave_pdata,
+ struct sensor_operate *(*get_sensor_ops)(void));
+
+#if 0
+#define DBG(x...) if((atomic_read(&sensor->flags.debug_flag) == sensor->pdata->type) || (atomic_read(&sensor->flags.debug_flag) == SENSOR_NUM_TYPES))printk(x)
+#else
+#define DBG(x...)
+#endif
+
+#define GSENSOR_IOCTL_MAGIC 'a'
+#define GBUFF_SIZE 12 /* Rx buffer size */
+
+/* IOCTLs for MMA8452 library */
+#define GSENSOR_IOCTL_INIT _IO(GSENSOR_IOCTL_MAGIC, 0x01)
+#define GSENSOR_IOCTL_RESET _IO(GSENSOR_IOCTL_MAGIC, 0x04)
+#define GSENSOR_IOCTL_CLOSE _IO(GSENSOR_IOCTL_MAGIC, 0x02)
+#define GSENSOR_IOCTL_START _IO(GSENSOR_IOCTL_MAGIC, 0x03)
+#define GSENSOR_IOCTL_GETDATA _IOR(GSENSOR_IOCTL_MAGIC, 0x08, char[GBUFF_SIZE+1])
+/* IOCTLs for APPs */
+#define GSENSOR_IOCTL_APP_SET_RATE _IOW(GSENSOR_IOCTL_MAGIC, 0x10, char)
+
+
+#define COMPASS_IOCTL_MAGIC 'c'
+/* IOCTLs for APPs */
+#define ECS_IOCTL_APP_SET_MODE _IOW(COMPASS_IOCTL_MAGIC, 0x10, short)
+#define ECS_IOCTL_APP_SET_MFLAG _IOW(COMPASS_IOCTL_MAGIC, 0x11, short)
+#define ECS_IOCTL_APP_GET_MFLAG _IOW(COMPASS_IOCTL_MAGIC, 0x12, short)
+#define ECS_IOCTL_APP_SET_AFLAG _IOW(COMPASS_IOCTL_MAGIC, 0x13, short)
+#define ECS_IOCTL_APP_GET_AFLAG _IOR(COMPASS_IOCTL_MAGIC, 0x14, short)
+#define ECS_IOCTL_APP_SET_TFLAG _IOR(COMPASS_IOCTL_MAGIC, 0x15, short)/* NOT use */
+#define ECS_IOCTL_APP_GET_TFLAG _IOR(COMPASS_IOCTL_MAGIC, 0x16, short)/* NOT use */
+#define ECS_IOCTL_APP_RESET_PEDOMETER _IOW(COMPASS_IOCTL_MAGIC, 0x17) /* NOT use */
+#define ECS_IOCTL_APP_SET_DELAY _IOW(COMPASS_IOCTL_MAGIC, 0x18, short)
+#define ECS_IOCTL_APP_SET_MVFLAG _IOW(COMPASS_IOCTL_MAGIC, 0x19, short)
+#define ECS_IOCTL_APP_GET_MVFLAG _IOR(COMPASS_IOCTL_MAGIC, 0x1A, short)
+#define ECS_IOCTL_APP_GET_DELAY _IOR(COMPASS_IOCTL_MAGIC, 0x1B, short)
+
+#ifdef CONFIG_COMPAT
+#define COMPAT_ECS_IOCTL_APP_SET_MODE _IOW(COMPASS_IOCTL_MAGIC, 0x10, compat_short_t)
+#define COMPAT_ECS_IOCTL_APP_SET_MFLAG _IOW(COMPASS_IOCTL_MAGIC, 0x11, compat_short_t)
+#define COMPAT_ECS_IOCTL_APP_GET_MFLAG _IOW(COMPASS_IOCTL_MAGIC, 0x12, compat_short_t)
+#define COMPAT_ECS_IOCTL_APP_SET_AFLAG _IOW(COMPASS_IOCTL_MAGIC, 0x13, compat_short_t)
+#define COMPAT_ECS_IOCTL_APP_GET_AFLAG _IOR(COMPASS_IOCTL_MAGIC, 0x14, compat_short_t)
+#define COMPAT_ECS_IOCTL_APP_SET_TFLAG _IOR(COMPASS_IOCTL_MAGIC, 0x15, compat_short_t)/* NOT use */
+#define COMPAT_ECS_IOCTL_APP_GET_TFLAG _IOR(COMPASS_IOCTL_MAGIC, 0x16, compat_short_t)/* NOT use */
+#define COMPAT_ECS_IOCTL_APP_RESET_PEDOMETER _IOW(COMPASS_IOCTL_MAGIC, 0x17) /* NOT use */
+#define COMPAT_ECS_IOCTL_APP_SET_DELAY _IOW(COMPASS_IOCTL_MAGIC, 0x18, compat_short_t)
+#define COMPAT_ECS_IOCTL_APP_SET_MVFLAG _IOW(COMPASS_IOCTL_MAGIC, 0x19, compat_short_t)
+#define COMPAT_ECS_IOCTL_APP_GET_MVFLAG _IOR(COMPASS_IOCTL_MAGIC, 0x1A, compat_short_t)
+#define COMPAT_ECS_IOCTL_APP_GET_DELAY _IOR(COMPASS_IOCTL_MAGIC, 0x1B, compat_short_t)
+#endif
+
+#define LIGHTSENSOR_IOCTL_MAGIC 'l'
+#define LIGHTSENSOR_IOCTL_GET_ENABLED _IOR(LIGHTSENSOR_IOCTL_MAGIC, 1, int *)
+#define LIGHTSENSOR_IOCTL_ENABLE _IOW(LIGHTSENSOR_IOCTL_MAGIC, 2, int *)
+#define LIGHTSENSOR_IOCTL_DISABLE _IOW(LIGHTSENSOR_IOCTL_MAGIC, 3, int *)
+
+#ifdef CONFIG_COMPAT
+#define COMPAT_LIGHTSENSOR_IOCTL_GET_ENABLED _IOR(LIGHTSENSOR_IOCTL_MAGIC, 1, compat_uptr_t)
+#define COMPAT_LIGHTSENSOR_IOCTL_ENABLE _IOW(LIGHTSENSOR_IOCTL_MAGIC, 2, compat_uptr_t)
+#define COMPAT_LIGHTSENSOR_IOCTL_DISABLE _IOW(LIGHTSENSOR_IOCTL_MAGIC, 3, compat_uptr_t)
+#endif
+
+#define PSENSOR_IOCTL_MAGIC 'p'
+#define PSENSOR_IOCTL_GET_ENABLED _IOR(PSENSOR_IOCTL_MAGIC, 1, int *)
+#define PSENSOR_IOCTL_ENABLE _IOW(PSENSOR_IOCTL_MAGIC, 2, int *)
+#define PSENSOR_IOCTL_DISABLE _IOW(PSENSOR_IOCTL_MAGIC, 3, int *)
+
+#ifdef CONFIG_COMPAT
+#define COMPAT_PSENSOR_IOCTL_GET_ENABLED _IOR(PSENSOR_IOCTL_MAGIC, 1, compat_uptr_t)
+#define COMPAT_PSENSOR_IOCTL_ENABLE _IOW(PSENSOR_IOCTL_MAGIC, 2, compat_uptr_t)
+#define COMPAT_PSENSOR_IOCTL_DISABLE _IOW(PSENSOR_IOCTL_MAGIC, 3, compat_uptr_t)
+#endif
+
+#define PRESSURE_IOCTL_MAGIC 'r'
+#define PRESSURE_IOCTL_GET_ENABLED _IOR(PRESSURE_IOCTL_MAGIC, 1, int *)
+#define PRESSURE_IOCTL_ENABLE _IOW(PRESSURE_IOCTL_MAGIC, 2, int *)
+#define PRESSURE_IOCTL_DISABLE _IOW(PRESSURE_IOCTL_MAGIC, 3, int *)
+#define PRESSURE_IOCTL_SET_DELAY _IOW(PRESSURE_IOCTL_MAGIC, 4, int *)
+
+
+#define TEMPERATURE_IOCTL_MAGIC 't'
+#define TEMPERATURE_IOCTL_GET_ENABLED _IOR(TEMPERATURE_IOCTL_MAGIC, 1, int *)
+#define TEMPERATURE_IOCTL_ENABLE _IOW(TEMPERATURE_IOCTL_MAGIC, 2, int *)
+#define TEMPERATURE_IOCTL_DISABLE _IOW(TEMPERATURE_IOCTL_MAGIC, 3, int *)
+#define TEMPERATURE_IOCTL_SET_DELAY _IOW(TEMPERATURE_IOCTL_MAGIC, 4, int *)
+
+
+extern int sensor_rx_data(struct i2c_client *client, char *rxData, int length);
+extern int sensor_tx_data(struct i2c_client *client, char *txData, int length);
+extern int sensor_write_reg(struct i2c_client *client, int addr, int value);
+extern int sensor_read_reg(struct i2c_client *client, int addr);
+extern int sensor_tx_data_normal(struct i2c_client *client, char *buf, int num);
+extern int sensor_rx_data_normal(struct i2c_client *client, char *buf, int num);
+extern int sensor_write_reg_normal(struct i2c_client *client, char value);
+extern int sensor_read_reg_normal(struct i2c_client *client);
+