linux/drivers/input/mouse/trackpoint.h

/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * IBM TrackPoint PS/2 mouse driver
 *
 * Stephen Evanchik <[email protected]>
 */

#ifndef _TRACKPOINT_H
#define _TRACKPOINT_H

/*
 * These constants are from the TrackPoint System
 * Engineering documentation Version 4 from IBM Watson
 * research:
 *	http://wwwcssrv.almaden.ibm.com/trackpoint/download.html
 */

#define TP_COMMAND

#define TP_READ_ID

/*
 * Valid first byte responses to the "Read Secondary ID" (0xE1) command.
 * 0x01 was the original IBM trackpoint, others implement very limited
 * subset of trackpoint features.
 */
#define TP_VARIANT_IBM
#define TP_VARIANT_ALPS
#define TP_VARIANT_ELAN
#define TP_VARIANT_NXP
#define TP_VARIANT_JYT_SYNAPTICS
#define TP_VARIANT_SYNAPTICS

/*
 * Commands
 */
#define TP_RECALIB
#define TP_POWER_DOWN
#define TP_EXT_DEV
#define TP_EXT_BTN
#define TP_POR
#define TP_POR_RESULTS
#define TP_DISABLE_EXT
#define TP_ENABLE_EXT

/*
 * Mode manipulation
 */
#define TP_SET_SOFT_TRANS
#define TP_CANCEL_SOFT_TRANS
#define TP_SET_HARD_TRANS


/*
 * Register oriented commands/properties
 */
#define TP_WRITE_MEM
#define TP_READ_MEM

/*
* RAM Locations for properties
 */
#define TP_SENS
#define TP_MB
#define TP_INERTIA
#define TP_SPEED
#define TP_REACH
#define TP_DRAGHYS
					/* (how hard it is to drag */
					/* with Z-axis pressed) */

#define TP_MINDRAG
					/* to trigger dragging */

#define TP_THRESH
#define TP_UP_THRESH
#define TP_Z_TIME
#define TP_JENKS_CURV
#define TP_DRIFT_TIME
					/* must last (x*107ms) for drift */
					/* correction to occur */

/*
 * Toggling Flag bits
 */
#define TP_TOGGLE

#define TP_TOGGLE_MB
#define TP_MASK_MB
#define TP_TOGGLE_EXT_DEV
#define TP_MASK_EXT_DEV
#define TP_TOGGLE_DRIFT
#define TP_MASK_DRIFT
#define TP_TOGGLE_BURST
#define TP_MASK_BURST
#define TP_TOGGLE_PTSON
#define TP_MASK_PTSON
#define TP_TOGGLE_HARD_TRANS
#define TP_MASK_HARD_TRANS
#define TP_TOGGLE_TWOHAND
#define TP_MASK_TWOHAND
#define TP_TOGGLE_STICKY_TWO
#define TP_MASK_STICKY_TWO
#define TP_TOGGLE_SKIPBACK
#define TP_MASK_SKIPBACK
#define TP_TOGGLE_SOURCE_TAG
#define TP_MASK_SOURCE_TAG
#define TP_TOGGLE_EXT_TAG
#define TP_MASK_EXT_TAG


/* Power on Self Test Results */
#define TP_POR_SUCCESS

/*
 * Default power on values
 */
#define TP_DEF_SENS
#define TP_DEF_INERTIA
#define TP_DEF_SPEED
#define TP_DEF_REACH

#define TP_DEF_DRAGHYS
#define TP_DEF_MINDRAG

#define TP_DEF_THRESH
#define TP_DEF_UP_THRESH
#define TP_DEF_Z_TIME
#define TP_DEF_JENKS_CURV
#define TP_DEF_DRIFT_TIME

/* Toggles */
#define TP_DEF_MB
#define TP_DEF_PTSON
#define TP_DEF_SKIPBACK
#define TP_DEF_EXT_DEV
#define TP_DEF_TWOHAND
#define TP_DEF_SOURCE_TAG

#define MAKE_PS2_CMD(params, results, cmd)

struct trackpoint_data {};

int trackpoint_detect(struct psmouse *psmouse, bool set_properties);

#endif /* _TRACKPOINT_H */