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