1 /* $NetBSD: kbdvar.h,v 1.4 2001/08/31 04:44:56 simonb Exp $ */ 2 3 /* 4 * Copyright (c) 1996 Leo Weppelman. 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 1. Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * 2. Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 3. All advertising materials mentioning features or use of this software 16 * must display the following acknowledgement: 17 * This product includes software developed by Leo Weppelman. 18 * 4. The name of the author may not be used to endorse or promote products 19 * derived from this software without specific prior written permission 20 * 21 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 22 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 23 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 24 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 25 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 26 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 30 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 */ 32 33 #ifndef _KBDVAR_H 34 #define _KBDVAR_H 35 36 /* 37 * The ringbuffer is the interface between the hard and soft interrupt handler. 38 * The hard interrupt runs straight from the MFP interrupt. 39 */ 40 #define KBD_RING_SIZE 256 /* Sz of input ring buffer, must be power of 2 */ 41 #define KBD_RING_MASK 255 /* Modulo mask for above */ 42 43 struct kbd_softc { 44 int k_event_mode; /* if 1, collect events, */ 45 /* else pass to ite */ 46 struct evvar k_events; /* event queue state */ 47 u_char k_soft_cs; /* control-reg. copy */ 48 u_char k_package[20]; /* XXX package being build */ 49 u_char k_pkg_size; /* Size of the package */ 50 u_char k_pkg_idx; /* Running pkg assembly index */ 51 u_char k_pkg_type; /* Type of package */ 52 u_char *k_sendp; /* Output pointer */ 53 int k_send_cnt; /* Chars left for output */ 54 }; 55 56 /* 57 * Package types 58 */ 59 #define KBD_MEM_PKG 0 /* Memory read package */ 60 #define KBD_AMS_PKG 1 /* Absolute mouse package */ 61 #define KBD_RMS_PKG 2 /* Relative mouse package */ 62 #define KBD_CLK_PKG 3 /* Clock package */ 63 #define KBD_JOY0_PKG 4 /* Joystick-0 package */ 64 #define KBD_JOY1_PKG 5 /* Joystick-1 package */ 65 #define KBD_TIMEO_PKG 6 /* Timeout package */ 66 67 #ifdef _KERNEL 68 extern u_char kbd_modifier; 69 70 void kbd_bell_gparms __P((u_int *, u_int *, u_int *)); 71 void kbd_bell_sparms __P((u_int, u_int, u_int)); 72 void kbd_write __P((u_char *, int)); 73 int kbdgetcn __P((void)); 74 void kbdbell __P((void)); 75 void kbdenable __P((void)); 76 #endif /* _KERNEL */ 77 78 #endif /* _KBDVAR_H */ 79