1/* $NetBSD: msvar.h,v 1.8 2008/03/29 19:15:36 tsutsui Exp $ */ 2 3/* 4 * Copyright (c) 1992, 1993 5 * The Regents of the University of California. All rights reserved. 6 * 7 * This software was developed by the Computer Systems Engineering group 8 * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and 9 * contributed to Berkeley. 10 * 11 * All advertising materials mentioning features or use of this software 12 * must display the following acknowledgement: 13 * This product includes software developed by the University of 14 * California, Lawrence Berkeley Laboratory. 15 * 16 * Redistribution and use in source and binary forms, with or without 17 * modification, are permitted provided that the following conditions 18 * are met: 19 * 1. Redistributions of source code must retain the above copyright 20 * notice, this list of conditions and the following disclaimer. 21 * 2. Redistributions in binary form must reproduce the above copyright 22 * notice, this list of conditions and the following disclaimer in the 23 * documentation and/or other materials provided with the distribution. 24 * 3. Neither the name of the University nor the names of its contributors 25 * may be used to endorse or promote products derived from this software 26 * without specific prior written permission. 27 * 28 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 29 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 30 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 31 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 32 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 33 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 34 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 35 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 36 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 37 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 38 * SUCH DAMAGE. 39 * 40 * @(#)ms.c 8.1 (Berkeley) 6/11/93 41 */ 42 43/* 44 * How many input characters we can buffer. 45 * The port-specific var.h may override this. 46 * Note: must be a power of two! 47 */ 48#define MS_RX_RING_SIZE 256 49#define MS_RX_RING_MASK (MS_RX_RING_SIZE-1) 50/* 51 * Output buffer. Only need a few chars. 52 */ 53#define MS_TX_RING_SIZE 16 54#define MS_TX_RING_MASK (MS_TX_RING_SIZE-1) 55/* 56 * mouse serial line speed defaults to 1200 bps. 57 */ 58#define MS_DEFAULT_BPS 1200 59 60/* 61 * Mouse state. A Mouse Systems mouse is a fairly simple device, 62 * producing five-byte blobs of the form: 63 * 64 * b dx dy dx dy 65 * 66 * where b is the button state, encoded as 0x80|(~buttons)---there are 67 * three buttons (4=left, 2=middle, 1=right)---and dx,dy are X and Y 68 * delta values, none of which have are in [0x80..0x87]. (This lets 69 * us sync up with the mouse after an error.) 70 */ 71struct ms_softc { 72 device_t ms_dev; /* required first: base device */ 73 union { 74 void *msu_priv; 75 struct zs_chanstate *msu_cs; 76 } ms_u; 77#define ms_priv ms_u.msu_priv 78#define ms_cs ms_u.msu_cs 79 80 /* 81 * The deviopen and deviclose routines are provided 82 * by the lower level driver and used as a back door 83 * when opening and closing the internal device. 84 */ 85 int (*ms_deviopen) (device_t, int); 86 int (*ms_deviclose) (device_t, int); 87 88 /* Flags to communicate with ms_softintr() */ 89 volatile int ms_intr_flags; 90#define INTR_RX_OVERRUN 1 91#define INTR_TX_EMPTY 2 92#define INTR_ST_CHECK 4 93 94 /* 95 * The receive ring buffer. 96 */ 97 u_int ms_rbget; /* ring buffer `get' index */ 98 volatile u_int ms_rbput; /* ring buffer `put' index */ 99 u_short ms_rbuf[MS_RX_RING_SIZE]; /* rr1, data pairs */ 100 101 /* 102 * State of input translator 103 */ 104 short ms_byteno; /* input byte number, for decode */ 105 char ms_mb; /* mouse button state */ 106 char ms_ub; /* user button state */ 107 int ms_dx; /* delta-x */ 108 int ms_dy; /* delta-y */ 109 110 /* 111 * State of upper interface. 112 */ 113 volatile int ms_ready; /* event queue is ready */ 114 struct evvar ms_events; /* event queue state */ 115 116 device_t ms_wsmousedev; 117}; 118 119/* front-end call back for mouse input */ 120void ms_input(struct ms_softc *, int c); 121