1 /* $NetBSD: lptvar.h,v 1.5 2008/04/28 20:23:54 martin Exp $ */ 2 3 /*- 4 * Copyright (c) 1999, 2002 The NetBSD Foundation, Inc. 5 * All rights reserved. 6 * 7 * This code is derived from software contributed to The NetBSD Foundation 8 * by Steve C. Woodford. 9 * 10 * Redistribution and use in source and binary forms, with or without 11 * modification, are permitted provided that the following conditions 12 * are met: 13 * 1. Redistributions of source code must retain the above copyright 14 * notice, this list of conditions and the following disclaimer. 15 * 2. Redistributions in binary form must reproduce the above copyright 16 * notice, this list of conditions and the following disclaimer in the 17 * documentation and/or other materials provided with the distribution. 18 * 19 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 20 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 21 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 23 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29 * POSSIBILITY OF SUCH DAMAGE. 30 */ 31 32 /* 33 * Common front-end for mvme68k/mvme88k parallel printer ports 34 */ 35 36 #ifndef __mvme_lptvar_h 37 #define __mvme_lptvar_h 38 39 #include <sys/callout.h> 40 41 struct lpt_funcs; 42 43 44 struct lpt_softc { 45 device_t sc_dev; 46 struct callout sc_wakeup_ch; 47 struct lpt_funcs *sc_funcs; 48 void *sc_arg; 49 size_t sc_count; 50 struct buf *sc_inbuf; 51 u_char *sc_cp; 52 int sc_spinmax; 53 u_char sc_state; 54 #define LPT_OPEN 0x01 /* device is open */ 55 #define LPT_OBUSY 0x02 /* printer is busy doing output */ 56 #define LPT_INIT 0x04 /* waiting to initialize for open */ 57 u_char sc_flags; 58 #define LPT_FAST_STROBE 0x10 /* Select 1.6uS strobe pulse */ 59 #define LPT_AUTOLF 0x20 /* automatic LF on CR */ 60 #define LPT_NOPRIME 0x40 /* don't prime on open */ 61 #define LPT_NOINTR 0x80 /* do not use interrupt */ 62 63 /* Back-end specific stuff */ 64 bus_space_tag_t sc_bust; 65 bus_space_handle_t sc_bush; 66 int sc_ipl; 67 u_char sc_icr; 68 u_char sc_laststatus; 69 struct evcnt sc_evcnt; 70 }; 71 72 73 struct lpt_funcs { 74 void (*lf_open)(struct lpt_softc *, int); 75 void (*lf_close)(struct lpt_softc *); 76 void (*lf_iprime)(struct lpt_softc *); 77 void (*lf_speed)(struct lpt_softc *, int); 78 int (*lf_notrdy)(struct lpt_softc *, int); 79 void (*lf_wrdata)(struct lpt_softc *, u_char); 80 }; 81 82 #define LPT_STROBE_FAST 0 83 #define LPT_STROBE_SLOW 1 84 85 extern void lpt_attach_subr(struct lpt_softc *); 86 extern int lpt_intr(struct lpt_softc *); 87 88 #endif /* __mvme_lptvar_h */ 89