1*53ee8cc1Swenshuai.xi /* $Id: parport.h,v 1.1 1998/05/17 10:57:52 andrea Exp andrea $ */ 2*53ee8cc1Swenshuai.xi 3*53ee8cc1Swenshuai.xi /* 4*53ee8cc1Swenshuai.xi * Any part of this program may be used in documents licensed under 5*53ee8cc1Swenshuai.xi * the GNU Free Documentation License, Version 1.1 or any later version 6*53ee8cc1Swenshuai.xi * published by the Free Software Foundation. 7*53ee8cc1Swenshuai.xi */ 8*53ee8cc1Swenshuai.xi 9*53ee8cc1Swenshuai.xi #ifndef _PARPORT_H_ 10*53ee8cc1Swenshuai.xi #define _PARPORT_H_ 11*53ee8cc1Swenshuai.xi 12*53ee8cc1Swenshuai.xi /* Start off with user-visible constants */ 13*53ee8cc1Swenshuai.xi 14*53ee8cc1Swenshuai.xi /* Maximum of 16 ports per machine */ 15*53ee8cc1Swenshuai.xi #define PARPORT_MAX 16 16*53ee8cc1Swenshuai.xi 17*53ee8cc1Swenshuai.xi /* Magic numbers */ 18*53ee8cc1Swenshuai.xi #define PARPORT_IRQ_NONE -1 19*53ee8cc1Swenshuai.xi #define PARPORT_DMA_NONE -1 20*53ee8cc1Swenshuai.xi #define PARPORT_IRQ_AUTO -2 21*53ee8cc1Swenshuai.xi #define PARPORT_DMA_AUTO -2 22*53ee8cc1Swenshuai.xi #define PARPORT_DMA_NOFIFO -3 23*53ee8cc1Swenshuai.xi #define PARPORT_DISABLE -2 24*53ee8cc1Swenshuai.xi #define PARPORT_IRQ_PROBEONLY -3 25*53ee8cc1Swenshuai.xi #define PARPORT_IOHI_AUTO -1 26*53ee8cc1Swenshuai.xi 27*53ee8cc1Swenshuai.xi #define PARPORT_CONTROL_STROBE 0x1 28*53ee8cc1Swenshuai.xi #define PARPORT_CONTROL_AUTOFD 0x2 29*53ee8cc1Swenshuai.xi #define PARPORT_CONTROL_INIT 0x4 30*53ee8cc1Swenshuai.xi #define PARPORT_CONTROL_SELECT 0x8 31*53ee8cc1Swenshuai.xi 32*53ee8cc1Swenshuai.xi #define PARPORT_STATUS_ERROR 0x8 33*53ee8cc1Swenshuai.xi #define PARPORT_STATUS_SELECT 0x10 34*53ee8cc1Swenshuai.xi #define PARPORT_STATUS_PAPEROUT 0x20 35*53ee8cc1Swenshuai.xi #define PARPORT_STATUS_ACK 0x40 36*53ee8cc1Swenshuai.xi #define PARPORT_STATUS_BUSY 0x80 37*53ee8cc1Swenshuai.xi 38*53ee8cc1Swenshuai.xi /* Type classes for Plug-and-Play probe. */ 39*53ee8cc1Swenshuai.xi typedef enum { 40*53ee8cc1Swenshuai.xi PARPORT_CLASS_LEGACY = 0, /* Non-IEEE1284 device */ 41*53ee8cc1Swenshuai.xi PARPORT_CLASS_PRINTER, 42*53ee8cc1Swenshuai.xi PARPORT_CLASS_MODEM, 43*53ee8cc1Swenshuai.xi PARPORT_CLASS_NET, 44*53ee8cc1Swenshuai.xi PARPORT_CLASS_HDC, /* Hard disk controller */ 45*53ee8cc1Swenshuai.xi PARPORT_CLASS_PCMCIA, 46*53ee8cc1Swenshuai.xi PARPORT_CLASS_MEDIA, /* Multimedia device */ 47*53ee8cc1Swenshuai.xi PARPORT_CLASS_FDC, /* Floppy disk controller */ 48*53ee8cc1Swenshuai.xi PARPORT_CLASS_PORTS, 49*53ee8cc1Swenshuai.xi PARPORT_CLASS_SCANNER, 50*53ee8cc1Swenshuai.xi PARPORT_CLASS_DIGCAM, 51*53ee8cc1Swenshuai.xi PARPORT_CLASS_OTHER, /* Anything else */ 52*53ee8cc1Swenshuai.xi PARPORT_CLASS_UNSPEC, /* No CLS field in ID */ 53*53ee8cc1Swenshuai.xi PARPORT_CLASS_SCSIADAPTER 54*53ee8cc1Swenshuai.xi } parport_device_class; 55*53ee8cc1Swenshuai.xi 56*53ee8cc1Swenshuai.xi /* The "modes" entry in parport is a bit field representing the 57*53ee8cc1Swenshuai.xi capabilities of the hardware. */ 58*53ee8cc1Swenshuai.xi #define PARPORT_MODE_PCSPP (1<<0) /* IBM PC registers available. */ 59*53ee8cc1Swenshuai.xi #define PARPORT_MODE_TRISTATE (1<<1) /* Can tristate. */ 60*53ee8cc1Swenshuai.xi #define PARPORT_MODE_EPP (1<<2) /* Hardware EPP. */ 61*53ee8cc1Swenshuai.xi #define PARPORT_MODE_ECP (1<<3) /* Hardware ECP. */ 62*53ee8cc1Swenshuai.xi #define PARPORT_MODE_COMPAT (1<<4) /* Hardware 'printer protocol'. */ 63*53ee8cc1Swenshuai.xi #define PARPORT_MODE_DMA (1<<5) /* Hardware can DMA. */ 64*53ee8cc1Swenshuai.xi #define PARPORT_MODE_SAFEININT (1<<6) /* SPP registers accessible in IRQ. */ 65*53ee8cc1Swenshuai.xi 66*53ee8cc1Swenshuai.xi /* IEEE1284 modes: 67*53ee8cc1Swenshuai.xi Nibble mode, byte mode, ECP, ECPRLE and EPP are their own 68*53ee8cc1Swenshuai.xi 'extensibility request' values. Others are special. 69*53ee8cc1Swenshuai.xi 'Real' ECP modes must have the IEEE1284_MODE_ECP bit set. */ 70*53ee8cc1Swenshuai.xi #define IEEE1284_MODE_NIBBLE 0 71*53ee8cc1Swenshuai.xi #define IEEE1284_MODE_BYTE (1<<0) 72*53ee8cc1Swenshuai.xi #define IEEE1284_MODE_COMPAT (1<<8) 73*53ee8cc1Swenshuai.xi #define IEEE1284_MODE_BECP (1<<9) /* Bounded ECP mode */ 74*53ee8cc1Swenshuai.xi #define IEEE1284_MODE_ECP (1<<4) 75*53ee8cc1Swenshuai.xi #define IEEE1284_MODE_ECPRLE (IEEE1284_MODE_ECP | (1<<5)) 76*53ee8cc1Swenshuai.xi #define IEEE1284_MODE_ECPSWE (1<<10) /* Software-emulated */ 77*53ee8cc1Swenshuai.xi #define IEEE1284_MODE_EPP (1<<6) 78*53ee8cc1Swenshuai.xi #define IEEE1284_MODE_EPPSL (1<<11) /* EPP 1.7 */ 79*53ee8cc1Swenshuai.xi #define IEEE1284_MODE_EPPSWE (1<<12) /* Software-emulated */ 80*53ee8cc1Swenshuai.xi #define IEEE1284_DEVICEID (1<<2) /* This is a flag */ 81*53ee8cc1Swenshuai.xi #define IEEE1284_EXT_LINK (1<<14) /* This flag causes the 82*53ee8cc1Swenshuai.xi * extensibility link to 83*53ee8cc1Swenshuai.xi * be requested, using 84*53ee8cc1Swenshuai.xi * bits 0-6. */ 85*53ee8cc1Swenshuai.xi 86*53ee8cc1Swenshuai.xi /* For the benefit of parport_read/write, you can use these with 87*53ee8cc1Swenshuai.xi * parport_negotiate to use address operations. They have no effect 88*53ee8cc1Swenshuai.xi * other than to make parport_read/write use address transfers. */ 89*53ee8cc1Swenshuai.xi #define IEEE1284_ADDR (1<<13) /* This is a flag */ 90*53ee8cc1Swenshuai.xi #define IEEE1284_DATA 0 /* So is this */ 91*53ee8cc1Swenshuai.xi 92*53ee8cc1Swenshuai.xi /* Flags for block transfer operations. */ 93*53ee8cc1Swenshuai.xi #define PARPORT_EPP_FAST (1<<0) /* Unreliable counts. */ 94*53ee8cc1Swenshuai.xi #define PARPORT_W91284PIC (1<<1) /* have a Warp9 w91284pic in the device */ 95*53ee8cc1Swenshuai.xi 96*53ee8cc1Swenshuai.xi /* The rest is for the kernel only */ 97*53ee8cc1Swenshuai.xi #endif /* _PARPORT_H_ */ 98