Home | History | Annotate | Download | only in linux
      1 /*
      2  * Copyright (c) 2008-2009, Kionix, Inc. All Rights Reserved.
      3  *
      4  * This program is free software: you can redistribute it and/or modify
      5  * it under the terms of the GNU General Public License as published by
      6  * the Free Software Foundation, either version 3 of the License, or
      7  * (at your option) any later version.
      8  *
      9  * This program is distributed in the hope that it will be useful,
     10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     12  * GNU General Public License for more details.
     13  *
     14  * You should have received a copy of the GNU General Public License
     15  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
     16  *
     17  */
     18 
     19 #ifndef __KXTF9_H__
     20 #define __KXTF9_H__
     21 
     22 #include <linux/ioctl.h>  /* For IOCTL macros */
     23 
     24 /** This define controls compilation of the master device interface */
     25 /*#define KXTF9_MASTER_DEVICE*/
     26 
     27 #define KXTF9_IOCTL_BASE 77
     28 /** The following define the IOCTL command values via the ioctl macros */
     29 #define KXTF9_IOCTL_SET_DELAY		_IOW(KXTF9_IOCTL_BASE, 0, int)
     30 #define KXTF9_IOCTL_GET_DELAY		_IOR(KXTF9_IOCTL_BASE, 1, int)
     31 #define KXTF9_IOCTL_SET_ENABLE		_IOW(KXTF9_IOCTL_BASE, 2, int)
     32 #define KXTF9_IOCTL_GET_ENABLE		_IOR(KXTF9_IOCTL_BASE, 3, int)
     33 #define KXTF9_IOCTL_SET_G_RANGE		_IOW(KXTF9_IOCTL_BASE, 4, int)
     34 
     35 #define KXTF9_IOCTL_SET_TILT_ENABLE	_IOW(KXTF9_IOCTL_BASE, 5, int)
     36 #define KXTF9_IOCTL_SET_TAP_ENABLE	_IOW(KXTF9_IOCTL_BASE, 6, int)
     37 #define KXTF9_IOCTL_SET_WAKE_ENABLE	_IOW(KXTF9_IOCTL_BASE, 7, int)
     38 #define KXTF9_IOCTL_SET_PM_MODE		_IOW(KXTF9_IOCTL_BASE, 8, int)
     39 #define KXTF9_IOCTL_SELF_TEST		_IOW(KXTF9_IOCTL_BASE, 9, int)
     40 #define KXTF9_IOCTL_SET_SENSITIVITY     _IOW(KXTF9_IOCTL_BASE, 10, int)
     41 
     42 /* CONTROL REGISTER 1 BITS */
     43 #define RES_12BIT		0x40
     44 #define KXTF9_G_2G		0x00
     45 #define KXTF9_G_4G		0x08
     46 #define KXTF9_G_8G		0x10
     47 #define TPE			0x01	/* tilt position function enable bit */
     48 #define WUFE			0x02	/* wake-up function enable bit */
     49 #define TDTE			0x04	/* tap/double-tap function enable bit */
     50 /* CONTROL REGISTER 3 BITS */
     51 #define OTP1_6			0x00	/* tilt ODR masks */
     52 #define OTP6_3			0x20
     53 #define OTP12_5			0x40
     54 #define OTP50			0x60
     55 #define OWUF25			0x00	/* wuf ODR masks */
     56 #define OWUF50			0x01
     57 #define OWUF100			0x02
     58 #define OWUF200			0x03
     59 #define OTDT50			0x00	/* tdt ODR masks */
     60 #define OTDT100			0x04
     61 #define OTDT200			0x08
     62 #define OTDT400			0x0C
     63 /* INTERRUPT CONTROL REGISTER 1 BITS */
     64 #define IEN			0x20	/* interrupt enable */
     65 #define IEA			0x10	/* interrupt polarity */
     66 #define IEL			0x08	/* interrupt response */
     67 #define IEU			0x04	/* alternate unlatched response */
     68 /* DATA CONTROL REGISTER BITS */
     69 #define ODR800			0x06	/* lpf output ODR masks */
     70 #define ODR400			0x05
     71 #define ODR200			0x04
     72 #define ODR100			0x03
     73 #define ODR50			0x02
     74 #define ODR25			0x01
     75 #define ODR12_5			0x00
     76 
     77 #define SENSITIVITY_REGS 0x07
     78 
     79 #ifdef __KERNEL__
     80 struct kxtf9_platform_data {
     81 	int poll_interval;
     82 	int min_interval;
     83 
     84 	u8 g_range;
     85 
     86 	u8 axis_map_x;
     87 	u8 axis_map_y;
     88 	u8 axis_map_z;
     89 
     90 	u8 negate_x;
     91 	u8 negate_y;
     92 	u8 negate_z;
     93 
     94 	u8 data_odr_init;
     95 	u8 ctrl_reg1_init;
     96 	u8 int_ctrl_init;
     97 	u8 tilt_timer_init;
     98 	u8 engine_odr_init;
     99 	u8 wuf_timer_init;
    100 	u8 wuf_thresh_init;
    101 	u8 tdt_timer_init;
    102 	u8 tdt_h_thresh_init;
    103 	u8 tdt_l_thresh_init;
    104 	u8 tdt_tap_timer_init;
    105 	u8 tdt_total_timer_init;
    106 	u8 tdt_latency_timer_init;
    107 	u8 tdt_window_timer_init;
    108 
    109 	int (*init)(void);
    110 	void (*exit)(void);
    111 	int (*power_on)(void);
    112 	int (*power_off)(void);
    113 
    114 	int (*gpio)(void);
    115 
    116 	u8 gesture;
    117 	u8 sensitivity_low[SENSITIVITY_REGS];
    118 	u8 sensitivity_medium[SENSITIVITY_REGS];
    119 	u8 sensitivity_high[SENSITIVITY_REGS];
    120 };
    121 
    122 #endif /* __KERNEL__ */
    123 
    124 #endif  /* __KXTF9_H__ */
    125 
    126