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