| /* |
| * 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__ */ |
| |