#ifndef _LINUX_BUSMOUSE_H #define _LINUX_BUSMOUSE_H /* * linux/include/linux/busmouse.h: header file for Logitech Bus Mouse driver * by James Banks * * based on information gleamed from various mouse drivers on the net * * Heavily modified by David giller (rafetmad@oxy.edu) * * Minor modifications for Linux 0.96c-pl1 by Nathan Laredo * gt7080a@prism.gatech.edu (13JUL92) * * Microsoft BusMouse support by Teemu Rantanen (tvr@cs.hut.fi) (02AUG92) * * Microsoft Bus Mouse support modified by Derrick Cole (cole@concert.net) * 8/28/92 * * Microsoft Bus Mouse support folded into 0.97pl4 code * by Peter Cervasio (pete%q106fm.uucp@wupost.wustl.edu) (08SEP92) * Changes: Logitech and Microsoft support in the same kernel. * Defined new constants in busmouse.h for MS mice. * Added int mse_busmouse_type to distinguish busmouse types * Added a couple of new functions to handle differences in using * MS vs. Logitech (where the int variable wasn't appropriate). * */ #define MOUSE_IRQ 5 #define LOGITECH_BUSMOUSE 0 /* Minor device # for Logitech */ #define MICROSOFT_BUSMOUSE 2 /* Minor device # for Microsoft */ /*--------- LOGITECH BUSMOUSE ITEMS -------------*/ #define LOGIBM_BASE 0x23c #define MSE_DATA_PORT 0x23c #define MSE_SIGNATURE_PORT 0x23d #define MSE_CONTROL_PORT 0x23e #define MSE_INTERRUPT_PORT 0x23e #define MSE_CONFIG_PORT 0x23f #define LOGIBM_EXTENT 0x4 #define MSE_ENABLE_INTERRUPTS 0x00 #define MSE_DISABLE_INTERRUPTS 0x10 #define MSE_READ_X_LOW 0x80 #define MSE_READ_X_HIGH 0xa0 #define MSE_READ_Y_LOW 0xc0 #define MSE_READ_Y_HIGH 0xe0 /* Magic number used to check if the mouse exists */ #define MSE_CONFIG_BYTE 0x91 #define MSE_DEFAULT_MODE 0x90 #define MSE_SIGNATURE_BYTE 0xa5 /* useful Logitech Mouse macros */ #define MSE_INT_OFF() outb(MSE_DISABLE_INTERRUPTS, MSE_CONTROL_PORT) #define MSE_INT_ON() outb(MSE_ENABLE_INTERRUPTS, MSE_CONTROL_PORT) /*--------- MICROSOFT BUSMOUSE ITEMS -------------*/ #define MSBM_BASE 0x23d #define MS_MSE_DATA_PORT 0x23d #define MS_MSE_SIGNATURE_PORT 0x23e #define MS_MSE_CONTROL_PORT 0x23c #define MS_MSE_CONFIG_PORT 0x23f #define MSBM_EXTENT 0x3 #define MS_MSE_ENABLE_INTERRUPTS 0x11 #define MS_MSE_DISABLE_INTERRUPTS 0x10 #define MS_MSE_READ_BUTTONS 0x00 #define MS_MSE_READ_X 0x01 #define MS_MSE_READ_Y 0x02 #define MS_MSE_START 0x80 #define MS_MSE_COMMAND_MODE 0x07 /* useful microsoft busmouse macros */ #define MS_MSE_INT_OFF() {outb(MS_MSE_COMMAND_MODE, MS_MSE_CONTROL_PORT); \ outb(MS_MSE_DISABLE_INTERRUPTS, MS_MSE_DATA_PORT);} #define MS_MSE_INT_ON() {outb(MS_MSE_COMMAND_MODE, MS_MSE_CONTROL_PORT); \ outb(MS_MSE_ENABLE_INTERRUPTS, MS_MSE_DATA_PORT);} struct mouse_status { unsigned char buttons; unsigned char latch_buttons; int dx; int dy; int present; int ready; int active; wait_queue_head_t wait; struct fasync_struct *fasyncptr; }; /* Function Prototypes */ #endif