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