2005-04-16 15:20:36 -07: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-07 19:53:24 -08:00
# define ALPS_PROTO_V1 0
# define ALPS_PROTO_V2 1
2011-11-07 19:53:36 -08:00
# define ALPS_PROTO_V3 2
# define ALPS_PROTO_V4 3
2011-11-07 19:53:24 -08:00
2005-04-16 15:20:36 -07:00
struct alps_model_info {
unsigned char signature [ 3 ] ;
2011-11-07 19:53:36 -08:00
unsigned char command_mode_resp ; /* v3/v4 only */
2011-11-07 19:53:24 -08:00
unsigned char proto_version ;
2005-04-16 15:20:36 -07:00
unsigned char byte0 , mask0 ;
unsigned char flags ;
} ;
2011-11-07 19:53:36 -08:00
struct alps_nibble_commands {
int command ;
unsigned char data ;
} ;
2005-04-16 15:20:36 -07:00
struct alps_data {
2005-09-15 02:01:44 -05:00
struct input_dev * dev2 ; /* Relative device */
2005-04-16 15:20:36 -07:00
char phys [ 32 ] ; /* Phys */
2006-09-10 21:54:39 -04:00
const struct alps_model_info * i ; /* Info */
2011-11-07 19:53:36 -08:00
const struct alps_nibble_commands * nibble_commands ;
int addr_command ; /* Command to set register address */
2005-04-16 15:20:36 -07:00
int prev_fin ; /* Finger bit from previous packet */
2011-11-07 19:53:36 -08:00
int multi_packet ; /* Multi-packet data in progress */
u8 quirks ;
2009-12-15 08:39:50 -08:00
struct timer_list timer ;
2005-04-16 15:20:36 -07:00
} ;
2011-11-07 19:53:36 -08:00
# define ALPS_QUIRK_TRACKSTICK_BUTTONS 1 /* trakcstick buttons in trackstick packet */
2007-03-10 01:39:54 -05:00
# ifdef CONFIG_MOUSE_PS2_ALPS
2009-09-09 19:13:20 -07:00
int alps_detect ( struct psmouse * psmouse , bool set_properties ) ;
2007-03-10 01:39:54 -05:00
int alps_init ( struct psmouse * psmouse ) ;
# else
2009-09-09 19:13:20 -07:00
inline int alps_detect ( struct psmouse * psmouse , bool set_properties )
2007-03-10 01:39:54 -05:00
{
return - ENOSYS ;
}
inline int alps_init ( struct psmouse * psmouse )
{
return - ENOSYS ;
}
# endif /* CONFIG_MOUSE_PS2_ALPS */
2005-04-16 15:20:36 -07:00
# endif