xref: /illumos-gate/usr/src/uts/common/sys/ecppio.h (revision b02947bf393d39f68e6c7fa8ccb98688f7f9c407)
1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License, Version 1.0 only
6  * (the "License").  You may not use this file except in compliance
7  * with the License.
8  *
9  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10  * or http://www.opensolaris.org/os/licensing.
11  * See the License for the specific language governing permissions
12  * and limitations under the License.
13  *
14  * When distributing Covered Code, include this CDDL HEADER in each
15  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16  * If applicable, add the following below this CDDL HEADER, with the
17  * fields enclosed by brackets "[]" replaced with your own identifying
18  * information: Portions Copyright [yyyy] [name of copyright owner]
19  *
20  * CDDL HEADER END
21  */
22 /*
23  * Copyright (c) 1992-1995,1997-2000 by Sun Microsystems, Inc.
24  * All rights reserved.
25  */
26 
27 #ifndef	_SYS_ECPPIO_H
28 #define	_SYS_ECPPIO_H
29 
30 #ifdef	__cplusplus
31 extern "C" {
32 #endif
33 
34 #include <sys/bpp_io.h>
35 #include <sys/ecppsys.h>
36 #include <sys/note.h>
37 
38 #define	ECPPIOC_SETREGS		_IOW('p', 73, struct ecpp_regs)
39 #define	ECPPIOC_GETREGS		_IOR('p', 74, struct ecpp_regs)
40 #define	ECPPIOC_SETPORT		_IOW('p', 77, uchar_t)
41 #define	ECPPIOC_GETPORT		_IOR('p', 78, uchar_t)
42 #define	ECPPIOC_SETDATA		_IOW('p', 79, uchar_t)
43 #define	ECPPIOC_GETDATA		_IOR('p', 80, uchar_t)
44 
45 #define	ECPP_MAX_TIMEOUT 	604800	/* one week */
46 #define	ECPP_W_TIMEOUT_DEFAULT	60	/* 60 seconds */
47 
48 struct ecpp_regs {
49 	uint8_t	dsr;	/* status reg */
50 	uint8_t	dcr;	/* control reg */
51 };
52 
53 _NOTE(SCHEME_PROTECTS_DATA("unique per call", ecpp_regs))
54 
55 /* Values for dsr field */
56 #define	ECPP_EPP_TMOUT		0x01
57 #define	ECPP_DSR_reserved1	0x02
58 #define	ECPP_IRQ_ST		0x04
59 #define	ECPP_nERR		0x08
60 #define	ECPP_SLCT		0x10
61 #define	ECPP_PE			0x20
62 #define	ECPP_nACK		0x40
63 #define	ECPP_nBUSY		0x80
64 
65 /*  Values for the dcr field */
66 #define	ECPP_STB		0x01
67 #define	ECPP_AFX		0x02
68 #define	ECPP_nINIT		0x04
69 #define	ECPP_SLCTIN		0x08
70 #define	ECPP_INTR_EN		0x10	/* 1=enable */
71 #define	ECPP_REV_DIR		0x20	/* 1=reverse dir */
72 #define	ECPP_DCR_reserved6	0x40
73 #define	ECPP_DCR_reserved7	0x80
74 #define	ECPP_DCR_SET		(ECPP_DCR_reserved6 | ECPP_DCR_reserved7)
75 
76 /* port types */
77 #define	ECPP_PORT_DMA		0x1	/* default */
78 #define	ECPP_PORT_PIO		0x2
79 #define	ECPP_PORT_TDMA		0x3	/* test fifo */
80 
81 /* these bits are not modified by ECPPIOC_SETREGS/GETREGS */
82 #define	ECPP_SETREGS_DSR_MASK	\
83 			(ECPP_EPP_TMOUT | ECPP_DSR_reserved1 | ECPP_IRQ_ST)
84 #define	ECPP_SETREGS_DCR_MASK	\
85 			(ECPP_INTR_EN | ECPP_REV_DIR | ECPP_DCR_SET)
86 
87 #ifdef	__cplusplus
88 }
89 #endif
90 
91 #endif	/* _SYS_ECPPIO_H */
92