xref: /netbsd-src/sys/dev/ppbus/ppbus_var.h (revision 95e1ffb15694e54f29f8baaa4232152b703c2a5a)
1*95e1ffb1Schristos /* $NetBSD: ppbus_var.h,v 1.5 2005/12/11 12:23:28 christos Exp $ */
2f7820334Sbjh21 
3e23cd1a7Sjdolecek #ifndef __PPBUS_VAR_H
4e23cd1a7Sjdolecek #define __PPBUS_VAR_H
5e23cd1a7Sjdolecek 
6e23cd1a7Sjdolecek /* PPBUS mode masks. */
7e23cd1a7Sjdolecek #define PPBUS_COMPATIBLE	0x01	/* Centronics compatible mode */
8e23cd1a7Sjdolecek #define PPBUS_NIBBLE		0x02	/* reverse 4 bit mode */
9e23cd1a7Sjdolecek #define PPBUS_PS2		0x04	/* PS/2 byte mode */
10e23cd1a7Sjdolecek #define PPBUS_EPP		0x08	/* EPP mode, 32 bit */
11e23cd1a7Sjdolecek #define PPBUS_ECP		0x10	/* ECP mode */
12e23cd1a7Sjdolecek #define PPBUS_FAST		0x20	/* Fast Centronics mode */
13e23cd1a7Sjdolecek /* mode aliases */
14e23cd1a7Sjdolecek #define PPBUS_SPP		PPBUS_NIBBLE | PPBUS_PS2 /* Won't work! */
15e23cd1a7Sjdolecek #define PPBUS_BYTE		PPBUS_PS2
16e23cd1a7Sjdolecek #define PPBUS_MASK		0x3f
17e23cd1a7Sjdolecek #define PPBUS_OPTIONS_MASK	0xc0
18e23cd1a7Sjdolecek /* Useful macros for this field */
19e23cd1a7Sjdolecek #define PPBUS_IS_EPP(mode) ((mode) & PPBUS_EPP)
20e23cd1a7Sjdolecek #define PPBUS_IN_EPP_MODE(bus) (PPBUS_IS_EPP(ppbus_get_mode(bus)))
21e23cd1a7Sjdolecek #define PPBUS_IN_NIBBLE_MODE(bus) (ppbus_get_mode(bus) & PPBUS_NIBBLE)
22e23cd1a7Sjdolecek #define PPBUS_IN_PS2_MODE(bus) (ppbus_get_mode(bus) & PPBUS_PS2)
23e23cd1a7Sjdolecek 
24e23cd1a7Sjdolecek /* PPBUS capabilities */
25e23cd1a7Sjdolecek #define PPBUS_HAS_INTR		0x01	/* Interrupt available */
26e23cd1a7Sjdolecek #define PPBUS_HAS_DMA		0x02	/* DMA available */
27e23cd1a7Sjdolecek #define PPBUS_HAS_FIFO		0x04	/* FIFO available */
28e23cd1a7Sjdolecek #define PPBUS_HAS_PS2		0x08	/* PS2 mode capable */
29e23cd1a7Sjdolecek #define PPBUS_HAS_ECP		0x10	/* ECP mode available */
30e23cd1a7Sjdolecek #define PPBUS_HAS_EPP		0x20	/* EPP mode available */
31e23cd1a7Sjdolecek 
32e23cd1a7Sjdolecek /* IEEE flag in soft config */
33e23cd1a7Sjdolecek #define PPBUS_DISABLE_IEEE	0x00
34e23cd1a7Sjdolecek #define PPBUS_ENABLE_IEEE	0x01
35e23cd1a7Sjdolecek 
36e23cd1a7Sjdolecek /* List of IVARS available to ppbus device drivers */
37e23cd1a7Sjdolecek /* #define PPBUS_IVAR_MODE 0 */
38e23cd1a7Sjdolecek #define PPBUS_IVAR_DMA		1
39e23cd1a7Sjdolecek #define PPBUS_IVAR_INTR		2
40e23cd1a7Sjdolecek #define PPBUS_IVAR_EPP_PROTO    3
41e23cd1a7Sjdolecek #define PPBUS_IVAR_IEEE		4
42e23cd1a7Sjdolecek /* Needed by callback's implemented using callout */
43e23cd1a7Sjdolecek #define PPBUS_IVAR_IRQSTAT	5
44e23cd1a7Sjdolecek #define PPBUS_IVAR_DMASTAT	6
45e23cd1a7Sjdolecek /* other fields are reserved to the ppbus internals */
46e23cd1a7Sjdolecek 
47e23cd1a7Sjdolecek /* EPP protocol versions */
48e23cd1a7Sjdolecek #define PPBUS_EPP_1_9           0x0                     /* default */
49e23cd1a7Sjdolecek #define PPBUS_EPP_1_7           0x1
50e23cd1a7Sjdolecek 
51e23cd1a7Sjdolecek /* Parallel Port Bus sleep/wakeup queue. */
52e23cd1a7Sjdolecek #define PPBUSPRI		(PZERO+8)
53e23cd1a7Sjdolecek 
549e77fbccSjdolecek #endif /* __PPBUS_VAR_H */
55