/* * Copyright (c) 2008-2009, Kionix, Inc. All Rights Reserved. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * 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. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ #ifndef __KXTF9_H__ #define __KXTF9_H__ #include <linux/ioctl.h> /* For IOCTL macros */ /** This define controls compilation of the master device interface */ /*#define KXTF9_MASTER_DEVICE*/ #define KXTF9_IOCTL_BASE 77 /** The following define the IOCTL command values via the ioctl macros */ #define KXTF9_IOCTL_SET_DELAY _IOW(KXTF9_IOCTL_BASE, 0, int) #define KXTF9_IOCTL_GET_DELAY _IOR(KXTF9_IOCTL_BASE, 1, int) #define KXTF9_IOCTL_SET_ENABLE _IOW(KXTF9_IOCTL_BASE, 2, int) #define KXTF9_IOCTL_GET_ENABLE _IOR(KXTF9_IOCTL_BASE, 3, int) #define KXTF9_IOCTL_SET_G_RANGE _IOW(KXTF9_IOCTL_BASE, 4, int) #define KXTF9_IOCTL_SET_TILT_ENABLE _IOW(KXTF9_IOCTL_BASE, 5, int) #define KXTF9_IOCTL_SET_TAP_ENABLE _IOW(KXTF9_IOCTL_BASE, 6, int) #define KXTF9_IOCTL_SET_WAKE_ENABLE _IOW(KXTF9_IOCTL_BASE, 7, int) #define KXTF9_IOCTL_SET_PM_MODE _IOW(KXTF9_IOCTL_BASE, 8, int) #define KXTF9_IOCTL_SELF_TEST _IOW(KXTF9_IOCTL_BASE, 9, int) #define KXTF9_IOCTL_SET_SENSITIVITY _IOW(KXTF9_IOCTL_BASE, 10, int) /* CONTROL REGISTER 1 BITS */ #define RES_12BIT 0x40 #define KXTF9_G_2G 0x00 #define KXTF9_G_4G 0x08 #define KXTF9_G_8G 0x10 #define TPE 0x01 /* tilt position function enable bit */ #define WUFE 0x02 /* wake-up function enable bit */ #define TDTE 0x04 /* tap/double-tap function enable bit */ /* CONTROL REGISTER 3 BITS */ #define OTP1_6 0x00 /* tilt ODR masks */ #define OTP6_3 0x20 #define OTP12_5 0x40 #define OTP50 0x60 #define OWUF25 0x00 /* wuf ODR masks */ #define OWUF50 0x01 #define OWUF100 0x02 #define OWUF200 0x03 #define OTDT50 0x00 /* tdt ODR masks */ #define OTDT100 0x04 #define OTDT200 0x08 #define OTDT400 0x0C /* INTERRUPT CONTROL REGISTER 1 BITS */ #define IEN 0x20 /* interrupt enable */ #define IEA 0x10 /* interrupt polarity */ #define IEL 0x08 /* interrupt response */ #define IEU 0x04 /* alternate unlatched response */ /* DATA CONTROL REGISTER BITS */ #define ODR800 0x06 /* lpf output ODR masks */ #define ODR400 0x05 #define ODR200 0x04 #define ODR100 0x03 #define ODR50 0x02 #define ODR25 0x01 #define ODR12_5 0x00 #define SENSITIVITY_REGS 0x07 #ifdef __KERNEL__ struct kxtf9_platform_data { int poll_interval; int min_interval; u8 g_range; u8 axis_map_x; u8 axis_map_y; u8 axis_map_z; u8 negate_x; u8 negate_y; u8 negate_z; u8 data_odr_init; u8 ctrl_reg1_init; u8 int_ctrl_init; u8 tilt_timer_init; u8 engine_odr_init; u8 wuf_timer_init; u8 wuf_thresh_init; u8 tdt_timer_init; u8 tdt_h_thresh_init; u8 tdt_l_thresh_init; u8 tdt_tap_timer_init; u8 tdt_total_timer_init; u8 tdt_latency_timer_init; u8 tdt_window_timer_init; int (*init)(void); void (*exit)(void); int (*power_on)(void); int (*power_off)(void); int (*gpio)(void); u8 gesture; u8 sensitivity_low[SENSITIVITY_REGS]; u8 sensitivity_medium[SENSITIVITY_REGS]; u8 sensitivity_high[SENSITIVITY_REGS]; }; #endif /* __KERNEL__ */ #endif /* __KXTF9_H__ */