input: sensors: fromdos and remove trailing whitespace
[firefly-linux-kernel-4.4.55.git] / include / linux / sensor-dev.h
index 38f4490ddef2db4b9b0da23a12041ebb51d1d97d..c5616f6d90ae2b6d7963edf99b27b318e89f5eb0 100755 (executable)
-/* 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
-\r
-#define SENSOR_ON              1\r
-#define SENSOR_OFF             0\r
-#define SENSOR_UNKNOW_DATA     -1\r
-\r
-enum sensor_type {\r
-       SENSOR_TYPE_NULL,\r
-       SENSOR_TYPE_ACCEL,\r
-       SENSOR_TYPE_COMPASS,    \r
-       SENSOR_TYPE_GYROSCOPE,  \r
-       SENSOR_TYPE_LIGHT,      \r
-       SENSOR_TYPE_PROXIMITY,\r
-       SENSOR_TYPE_TEMPERATURE,        \r
-       //SENSOR_TYPE_PRESSURE,\r
-       SENSOR_NUM_TYPES\r
-};\r
-\r
-enum sensor_id {\r
-       ID_INVALID = 0,\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_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
-\r
-       COMPASS_ID_ALL,\r
-       COMPASS_ID_AK8975,\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_K3G,\r
-\r
-       LIGHT_ID_ALL,\r
-       LIGHT_ID_CM3217,\r
-       LIGHT_ID_AL3006,\r
-       LIGHT_ID_STK3171,\r
-       LIGHT_ID_ISL29023,\r
-       \r
-       PROXIMITY_ID_ALL,\r
-       PROXIMITY_ID_AL3006,\r
-       PROXIMITY_ID_STK3171,\r
-       TEMPERATURE_ID_ALL,\r
-\r
-       PRESSURE_ID_ALL,\r
-       PRESSURE_ID_BMA085,\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_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 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
-\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
-\r
-#define GSENSOR_IO                             0xA1\r
-#define GBUFF_SIZE                             12      /* Rx buffer size */\r
-\r
-/* IOCTLs for MMA8452 library */\r
-#define GSENSOR_IOCTL_INIT                  _IO(GSENSOR_IO, 0x01)\r
-#define GSENSOR_IOCTL_RESET                    _IO(GSENSOR_IO, 0x04)\r
-#define GSENSOR_IOCTL_CLOSE                            _IO(GSENSOR_IO, 0x02)\r
-#define GSENSOR_IOCTL_START                        _IO(GSENSOR_IO, 0x03)\r
-#define GSENSOR_IOCTL_GETDATA               _IOR(GSENSOR_IO, 0x08, char[GBUFF_SIZE+1])\r
-/* IOCTLs for APPs */\r
-#define GSENSOR_IOCTL_APP_SET_RATE                     _IOW(GSENSOR_IO, 0x10, char)\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 'c'\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
-\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,
+       ACCEL_ID_LSM330,
+       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,
+       GYRO_ID_LSM330,
+       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;
+       int power_off_in_suspend;
+};
+
+ 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);
+