1 /* $NetBSD: kbdvar.h,v 1.9 2009/10/20 19:10:10 snj 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 * 16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 17 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 18 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 19 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 20 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 21 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 25 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 */ 27 28 #ifndef _KBDVAR_H 29 #define _KBDVAR_H 30 31 /* 32 * The ringbuffer is the interface between the hard and soft interrupt handler. 33 * The hard interrupt runs straight from the MFP interrupt. 34 */ 35 #define KBD_RING_SIZE 256 /* Sz of input ring buffer, must be power of 2 */ 36 #define KBD_RING_MASK 255 /* Modulo mask for above */ 37 38 struct kbd_softc { 39 int k_event_mode; /* if 1, collect events, */ 40 /* else pass to ite */ 41 struct evvar k_events; /* event queue state */ 42 uint8_t k_soft_cs; /* control-reg. copy */ 43 uint8_t k_package[20]; /* XXX package being build */ 44 uint8_t k_pkg_size; /* Size of the package */ 45 uint8_t k_pkg_idx; /* Running pkg assembly index */ 46 uint8_t k_pkg_type; /* Type of package */ 47 const uint8_t *k_sendp; /* Output pointer */ 48 int k_send_cnt; /* Chars left for output */ 49 #if NWSKBD>0 50 struct device *k_wskbddev; /* pointer to wskbd for sending strokes */ 51 int k_pollingmode; /* polling mode on? whatever it isss... */ 52 #endif 53 void *k_sicookie; /* softint(9) cookie */ 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 uint8_t kbd_modifier; 69 70 void kbd_bell_gparms(u_int *, u_int *, u_int *); 71 void kbd_bell_sparms(u_int, u_int, u_int); 72 void kbd_write(const uint8_t *, int); 73 int kbdgetcn(void); 74 void kbdbell(void); 75 void kbdenable(void); 76 #endif /* _KERNEL */ 77 78 #endif /* _KBDVAR_H */ 79