1*19cddadbSmiod /* $OpenBSD: sunmsvar.h,v 1.1 2009/05/20 18:22:33 miod Exp $ */ 2*19cddadbSmiod 3*19cddadbSmiod /* 4*19cddadbSmiod * Copyright (c) 2002, 2009, Miodrag Vallat 5*19cddadbSmiod * All rights reserved. 6*19cddadbSmiod * 7*19cddadbSmiod * Redistribution and use in source and binary forms, with or without 8*19cddadbSmiod * modification, are permitted provided that the following conditions 9*19cddadbSmiod * are met: 10*19cddadbSmiod * 1. Redistributions of source code must retain the above copyright 11*19cddadbSmiod * notice, this list of conditions and the following disclaimer. 12*19cddadbSmiod * 2. Redistributions in binary form must reproduce the above copyright 13*19cddadbSmiod * notice, this list of conditions and the following disclaimer in the 14*19cddadbSmiod * documentation and/or other materials provided with the distribution. 15*19cddadbSmiod * 16*19cddadbSmiod * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 17*19cddadbSmiod * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 18*19cddadbSmiod * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 19*19cddadbSmiod * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 20*19cddadbSmiod * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 21*19cddadbSmiod * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22*19cddadbSmiod * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23*19cddadbSmiod * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24*19cddadbSmiod * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 25*19cddadbSmiod * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26*19cddadbSmiod */ 27*19cddadbSmiod 28*19cddadbSmiod struct sunms_softc { 29*19cddadbSmiod struct device sc_dev; 30*19cddadbSmiod 31*19cddadbSmiod /* 32*19cddadbSmiod * State of input translator 33*19cddadbSmiod */ 34*19cddadbSmiod uint sc_state; /* current FSM state */ 35*19cddadbSmiod #define STATE_RATE_CHANGE 0 /* baud rate change pending */ 36*19cddadbSmiod #define STATE_PROBING 1 /* checking packets after speed change */ 37*19cddadbSmiod #define STATE_DECODING 2 /* normal operation */ 38*19cddadbSmiod uint sc_brk; /* breaks in a row */ 39*19cddadbSmiod 40*19cddadbSmiod int sc_pktlen; /* packet length */ 41*19cddadbSmiod int sc_byteno; /* current packet position */ 42*19cddadbSmiod int sc_mb; /* mouse button state */ 43*19cddadbSmiod int sc_dx; /* delta-x */ 44*19cddadbSmiod int sc_dy; /* delta-y */ 45*19cddadbSmiod 46*19cddadbSmiod uint sc_bps; /* current link speed */ 47*19cddadbSmiod struct timeval sc_lastbpschange; 48*19cddadbSmiod 49*19cddadbSmiod struct timeout sc_abort_tmo; 50*19cddadbSmiod 51*19cddadbSmiod struct device *sc_wsmousedev; 52*19cddadbSmiod 53*19cddadbSmiod void (*sc_speed_change)(void *, uint); 54*19cddadbSmiod }; 55*19cddadbSmiod 56*19cddadbSmiod #define INIT_SPEED 9600 57*19cddadbSmiod 58*19cddadbSmiod void sunms_attach(struct sunms_softc *, const struct wsmouse_accessops *); 59*19cddadbSmiod int sunms_ioctl(void *, u_long, caddr_t, int, struct proc *); 60*19cddadbSmiod 61*19cddadbSmiod void sunms_abort_input(void *); 62*19cddadbSmiod void sunms_input(struct sunms_softc *, int c); 63*19cddadbSmiod void sunms_speed_change(struct sunms_softc *); 64