2005-04-17 02:20:36 +04:00
/*
* ALPS touchpad PS / 2 mouse driver
*
* Copyright ( c ) 2003 Peter Osterlund < petero2 @ telia . com >
* Copyright ( c ) 2005 Vojtech Pavlik < vojtech @ suse . cz >
*
* This program is free software ; you can redistribute it and / or modify it
* under the terms of the GNU General Public License version 2 as published by
* the Free Software Foundation .
*/
# ifndef _ALPS_H
# define _ALPS_H
2011-11-08 07:53:24 +04:00
# define ALPS_PROTO_V1 0
# define ALPS_PROTO_V2 1
2011-11-08 07:53:36 +04:00
# define ALPS_PROTO_V3 2
# define ALPS_PROTO_V4 3
2011-11-08 07:53:24 +04:00
2005-04-17 02:20:36 +04:00
struct alps_model_info {
unsigned char signature [ 3 ] ;
2011-11-08 07:53:36 +04:00
unsigned char command_mode_resp ; /* v3/v4 only */
2011-11-08 07:53:24 +04:00
unsigned char proto_version ;
2005-04-17 02:20:36 +04:00
unsigned char byte0 , mask0 ;
unsigned char flags ;
} ;
2011-11-08 07:53:36 +04:00
struct alps_nibble_commands {
int command ;
unsigned char data ;
} ;
2005-04-17 02:20:36 +04:00
struct alps_data {
2005-09-15 11:01:44 +04:00
struct input_dev * dev2 ; /* Relative device */
2005-04-17 02:20:36 +04:00
char phys [ 32 ] ; /* Phys */
2006-09-11 05:54:39 +04:00
const struct alps_model_info * i ; /* Info */
2011-11-08 07:53:36 +04:00
const struct alps_nibble_commands * nibble_commands ;
int addr_command ; /* Command to set register address */
2005-04-17 02:20:36 +04:00
int prev_fin ; /* Finger bit from previous packet */
2011-11-08 07:53:36 +04:00
int multi_packet ; /* Multi-packet data in progress */
2011-11-08 07:54:13 +04:00
unsigned char multi_data [ 6 ] ; /* Saved multi-packet data */
2011-11-08 07:53:36 +04:00
u8 quirks ;
2009-12-15 19:39:50 +03:00
struct timer_list timer ;
2005-04-17 02:20:36 +04:00
} ;
2011-11-08 07:53:36 +04:00
# define ALPS_QUIRK_TRACKSTICK_BUTTONS 1 /* trakcstick buttons in trackstick packet */
2007-03-10 09:39:54 +03:00
# ifdef CONFIG_MOUSE_PS2_ALPS
2009-09-10 06:13:20 +04:00
int alps_detect ( struct psmouse * psmouse , bool set_properties ) ;
2007-03-10 09:39:54 +03:00
int alps_init ( struct psmouse * psmouse ) ;
# else
2009-09-10 06:13:20 +04:00
inline int alps_detect ( struct psmouse * psmouse , bool set_properties )
2007-03-10 09:39:54 +03:00
{
return - ENOSYS ;
}
inline int alps_init ( struct psmouse * psmouse )
{
return - ENOSYS ;
}
# endif /* CONFIG_MOUSE_PS2_ALPS */
2005-04-17 02:20:36 +04:00
# endif