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