| Tai-hwa Liang | fc69f4a | 2009-05-10 18:15:39 -0700 | [diff] [blame] | 1 | /*- | 
|  | 2 | * Finger Sensing Pad PS/2 mouse driver. | 
|  | 3 | * | 
|  | 4 | * Copyright (C) 2005-2007 Asia Vital Components Co., Ltd. | 
|  | 5 | * Copyright (C) 2005-2009 Tai-hwa Liang, Sentelic Corporation. | 
|  | 6 | * | 
|  | 7 | *   This program is free software; you can redistribute it and/or | 
|  | 8 | *   modify it under the terms of the GNU General Public License | 
|  | 9 | *   as published by the Free Software Foundation; either version 2 | 
|  | 10 | *   of the License, or (at your option) any later version. | 
|  | 11 | * | 
|  | 12 | *   This program is distributed in the hope that it will be useful, | 
|  | 13 | *   but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | 14 | *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
|  | 15 | *   GNU General Public License for more details. | 
|  | 16 | * | 
|  | 17 | *   You should have received a copy of the GNU General Public License | 
|  | 18 | *   along with this program; if not, write to the Free Software | 
|  | 19 | *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 
|  | 20 | */ | 
|  | 21 |  | 
|  | 22 | #ifndef	__SENTELIC_H | 
|  | 23 | #define	__SENTELIC_H | 
|  | 24 |  | 
|  | 25 | /* Finger-sensing Pad information registers */ | 
|  | 26 | #define	FSP_REG_DEVICE_ID	0x00 | 
|  | 27 | #define	FSP_REG_VERSION		0x01 | 
|  | 28 | #define	FSP_REG_REVISION	0x04 | 
|  | 29 | #define	FSP_REG_TMOD_STATUS1	0x0B | 
|  | 30 | #define	FSP_BIT_NO_ROTATION	BIT(3) | 
|  | 31 | #define	FSP_REG_PAGE_CTRL	0x0F | 
|  | 32 |  | 
|  | 33 | /* Finger-sensing Pad control registers */ | 
|  | 34 | #define	FSP_REG_SYSCTL1		0x10 | 
|  | 35 | #define	FSP_BIT_EN_REG_CLK	BIT(5) | 
|  | 36 | #define	FSP_REG_OPC_QDOWN	0x31 | 
|  | 37 | #define	FSP_BIT_EN_OPC_TAG	BIT(7) | 
|  | 38 | #define	FSP_REG_OPTZ_XLO	0x34 | 
|  | 39 | #define	FSP_REG_OPTZ_XHI	0x35 | 
|  | 40 | #define	FSP_REG_OPTZ_YLO	0x36 | 
|  | 41 | #define	FSP_REG_OPTZ_YHI	0x37 | 
|  | 42 | #define	FSP_REG_SYSCTL5		0x40 | 
|  | 43 | #define	FSP_BIT_90_DEGREE	BIT(0) | 
|  | 44 | #define	FSP_BIT_EN_MSID6	BIT(1) | 
|  | 45 | #define	FSP_BIT_EN_MSID7	BIT(2) | 
|  | 46 | #define	FSP_BIT_EN_MSID8	BIT(3) | 
|  | 47 | #define	FSP_BIT_EN_AUTO_MSID8	BIT(5) | 
|  | 48 | #define	FSP_BIT_EN_PKT_G0	BIT(6) | 
|  | 49 |  | 
|  | 50 | #define	FSP_REG_ONPAD_CTL	0x43 | 
|  | 51 | #define	FSP_BIT_ONPAD_ENABLE	BIT(0) | 
|  | 52 | #define	FSP_BIT_ONPAD_FBBB	BIT(1) | 
|  | 53 | #define	FSP_BIT_FIX_VSCR	BIT(3) | 
|  | 54 | #define	FSP_BIT_FIX_HSCR	BIT(5) | 
|  | 55 | #define	FSP_BIT_DRAG_LOCK	BIT(6) | 
|  | 56 |  | 
|  | 57 | /* Finger-sensing Pad packet formating related definitions */ | 
|  | 58 |  | 
|  | 59 | /* absolute packet type */ | 
|  | 60 | #define	FSP_PKT_TYPE_NORMAL	(0x00) | 
|  | 61 | #define	FSP_PKT_TYPE_ABS	(0x01) | 
|  | 62 | #define	FSP_PKT_TYPE_NOTIFY	(0x02) | 
|  | 63 | #define	FSP_PKT_TYPE_NORMAL_OPC	(0x03) | 
|  | 64 | #define	FSP_PKT_TYPE_SHIFT	(6) | 
|  | 65 |  | 
|  | 66 | #ifdef __KERNEL__ | 
|  | 67 |  | 
|  | 68 | struct fsp_data { | 
|  | 69 | unsigned char	ver;		/* hardware version */ | 
|  | 70 | unsigned char	rev;		/* hardware revison */ | 
|  | 71 | unsigned char	buttons;	/* Number of buttons */ | 
|  | 72 | unsigned int	flags; | 
|  | 73 | #define	FSPDRV_FLAG_EN_OPC	(0x001)	/* enable on-pad clicking */ | 
|  | 74 |  | 
|  | 75 | bool		vscroll;	/* Vertical scroll zone enabled */ | 
|  | 76 | bool		hscroll;	/* Horizontal scroll zone enabled */ | 
|  | 77 |  | 
|  | 78 | unsigned char	last_reg;	/* Last register we requested read from */ | 
|  | 79 | unsigned char	last_val; | 
|  | 80 | }; | 
|  | 81 |  | 
|  | 82 | #ifdef CONFIG_MOUSE_PS2_SENTELIC | 
| Dmitry Torokhov | b7802c5 | 2009-09-09 19:13:20 -0700 | [diff] [blame] | 83 | extern int fsp_detect(struct psmouse *psmouse, bool set_properties); | 
| Tai-hwa Liang | fc69f4a | 2009-05-10 18:15:39 -0700 | [diff] [blame] | 84 | extern int fsp_init(struct psmouse *psmouse); | 
|  | 85 | #else | 
| Dmitry Torokhov | b7802c5 | 2009-09-09 19:13:20 -0700 | [diff] [blame] | 86 | inline int fsp_detect(struct psmouse *psmouse, bool set_properties) | 
| Tai-hwa Liang | fc69f4a | 2009-05-10 18:15:39 -0700 | [diff] [blame] | 87 | { | 
|  | 88 | return -ENOSYS; | 
|  | 89 | } | 
|  | 90 | inline int fsp_init(struct psmouse *psmouse) | 
|  | 91 | { | 
|  | 92 | return -ENOSYS; | 
|  | 93 | } | 
|  | 94 | #endif | 
|  | 95 |  | 
|  | 96 | #endif	/* __KERNEL__ */ | 
|  | 97 |  | 
|  | 98 | #endif	/* !__SENTELIC_H */ |