1*f80ad8b4SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ 2*f80ad8b4SAndroid Build Coastguard Worker /* 3*f80ad8b4SAndroid Build Coastguard Worker * linux/include/linux/ppdev.h 4*f80ad8b4SAndroid Build Coastguard Worker * 5*f80ad8b4SAndroid Build Coastguard Worker * User-space parallel port device driver (header file). 6*f80ad8b4SAndroid Build Coastguard Worker * 7*f80ad8b4SAndroid Build Coastguard Worker * Copyright (C) 1998-9 Tim Waugh <[email protected]> 8*f80ad8b4SAndroid Build Coastguard Worker * 9*f80ad8b4SAndroid Build Coastguard Worker * This program is free software; you can redistribute it and/or 10*f80ad8b4SAndroid Build Coastguard Worker * modify it under the terms of the GNU General Public License 11*f80ad8b4SAndroid Build Coastguard Worker * as published by the Free Software Foundation; either version 12*f80ad8b4SAndroid Build Coastguard Worker * 2 of the License, or (at your option) any later version. 13*f80ad8b4SAndroid Build Coastguard Worker * 14*f80ad8b4SAndroid Build Coastguard Worker * Added PPGETTIME/PPSETTIME, Fred Barnes, 1999 15*f80ad8b4SAndroid Build Coastguard Worker * Added PPGETMODES/PPGETMODE/PPGETPHASE, Fred Barnes <[email protected]>, 03/01/2001 16*f80ad8b4SAndroid Build Coastguard Worker */ 17*f80ad8b4SAndroid Build Coastguard Worker 18*f80ad8b4SAndroid Build Coastguard Worker #ifndef _UAPI_LINUX_PPDEV_H 19*f80ad8b4SAndroid Build Coastguard Worker #define _UAPI_LINUX_PPDEV_H 20*f80ad8b4SAndroid Build Coastguard Worker 21*f80ad8b4SAndroid Build Coastguard Worker #define PP_IOCTL 'p' 22*f80ad8b4SAndroid Build Coastguard Worker 23*f80ad8b4SAndroid Build Coastguard Worker /* Set mode for read/write (e.g. IEEE1284_MODE_EPP) */ 24*f80ad8b4SAndroid Build Coastguard Worker #define PPSETMODE _IOW(PP_IOCTL, 0x80, int) 25*f80ad8b4SAndroid Build Coastguard Worker 26*f80ad8b4SAndroid Build Coastguard Worker /* Read status */ 27*f80ad8b4SAndroid Build Coastguard Worker #define PPRSTATUS _IOR(PP_IOCTL, 0x81, unsigned char) 28*f80ad8b4SAndroid Build Coastguard Worker #define PPWSTATUS OBSOLETE__IOW(PP_IOCTL, 0x82, unsigned char) 29*f80ad8b4SAndroid Build Coastguard Worker 30*f80ad8b4SAndroid Build Coastguard Worker /* Read/write control */ 31*f80ad8b4SAndroid Build Coastguard Worker #define PPRCONTROL _IOR(PP_IOCTL, 0x83, unsigned char) 32*f80ad8b4SAndroid Build Coastguard Worker #define PPWCONTROL _IOW(PP_IOCTL, 0x84, unsigned char) 33*f80ad8b4SAndroid Build Coastguard Worker 34*f80ad8b4SAndroid Build Coastguard Worker struct ppdev_frob_struct { 35*f80ad8b4SAndroid Build Coastguard Worker unsigned char mask; 36*f80ad8b4SAndroid Build Coastguard Worker unsigned char val; 37*f80ad8b4SAndroid Build Coastguard Worker }; 38*f80ad8b4SAndroid Build Coastguard Worker #define PPFCONTROL _IOW(PP_IOCTL, 0x8e, struct ppdev_frob_struct) 39*f80ad8b4SAndroid Build Coastguard Worker 40*f80ad8b4SAndroid Build Coastguard Worker /* Read/write data */ 41*f80ad8b4SAndroid Build Coastguard Worker #define PPRDATA _IOR(PP_IOCTL, 0x85, unsigned char) 42*f80ad8b4SAndroid Build Coastguard Worker #define PPWDATA _IOW(PP_IOCTL, 0x86, unsigned char) 43*f80ad8b4SAndroid Build Coastguard Worker 44*f80ad8b4SAndroid Build Coastguard Worker /* Read/write econtrol (not used) */ 45*f80ad8b4SAndroid Build Coastguard Worker #define PPRECONTROL OBSOLETE__IOR(PP_IOCTL, 0x87, unsigned char) 46*f80ad8b4SAndroid Build Coastguard Worker #define PPWECONTROL OBSOLETE__IOW(PP_IOCTL, 0x88, unsigned char) 47*f80ad8b4SAndroid Build Coastguard Worker 48*f80ad8b4SAndroid Build Coastguard Worker /* Read/write FIFO (not used) */ 49*f80ad8b4SAndroid Build Coastguard Worker #define PPRFIFO OBSOLETE__IOR(PP_IOCTL, 0x89, unsigned char) 50*f80ad8b4SAndroid Build Coastguard Worker #define PPWFIFO OBSOLETE__IOW(PP_IOCTL, 0x8a, unsigned char) 51*f80ad8b4SAndroid Build Coastguard Worker 52*f80ad8b4SAndroid Build Coastguard Worker /* Claim the port to start using it */ 53*f80ad8b4SAndroid Build Coastguard Worker #define PPCLAIM _IO(PP_IOCTL, 0x8b) 54*f80ad8b4SAndroid Build Coastguard Worker 55*f80ad8b4SAndroid Build Coastguard Worker /* Release the port when you aren't using it */ 56*f80ad8b4SAndroid Build Coastguard Worker #define PPRELEASE _IO(PP_IOCTL, 0x8c) 57*f80ad8b4SAndroid Build Coastguard Worker 58*f80ad8b4SAndroid Build Coastguard Worker /* Yield the port (release it if another driver is waiting, 59*f80ad8b4SAndroid Build Coastguard Worker * then reclaim) */ 60*f80ad8b4SAndroid Build Coastguard Worker #define PPYIELD _IO(PP_IOCTL, 0x8d) 61*f80ad8b4SAndroid Build Coastguard Worker 62*f80ad8b4SAndroid Build Coastguard Worker /* Register device exclusively (must be before PPCLAIM). */ 63*f80ad8b4SAndroid Build Coastguard Worker #define PPEXCL _IO(PP_IOCTL, 0x8f) 64*f80ad8b4SAndroid Build Coastguard Worker 65*f80ad8b4SAndroid Build Coastguard Worker /* Data line direction: non-zero for input mode. */ 66*f80ad8b4SAndroid Build Coastguard Worker #define PPDATADIR _IOW(PP_IOCTL, 0x90, int) 67*f80ad8b4SAndroid Build Coastguard Worker 68*f80ad8b4SAndroid Build Coastguard Worker /* Negotiate a particular IEEE 1284 mode. */ 69*f80ad8b4SAndroid Build Coastguard Worker #define PPNEGOT _IOW(PP_IOCTL, 0x91, int) 70*f80ad8b4SAndroid Build Coastguard Worker 71*f80ad8b4SAndroid Build Coastguard Worker /* Set control lines when an interrupt occurs. */ 72*f80ad8b4SAndroid Build Coastguard Worker #define PPWCTLONIRQ _IOW(PP_IOCTL, 0x92, unsigned char) 73*f80ad8b4SAndroid Build Coastguard Worker 74*f80ad8b4SAndroid Build Coastguard Worker /* Clear (and return) interrupt count. */ 75*f80ad8b4SAndroid Build Coastguard Worker #define PPCLRIRQ _IOR(PP_IOCTL, 0x93, int) 76*f80ad8b4SAndroid Build Coastguard Worker 77*f80ad8b4SAndroid Build Coastguard Worker /* Set the IEEE 1284 phase that we're in (e.g. IEEE1284_PH_FWD_IDLE) */ 78*f80ad8b4SAndroid Build Coastguard Worker #define PPSETPHASE _IOW(PP_IOCTL, 0x94, int) 79*f80ad8b4SAndroid Build Coastguard Worker 80*f80ad8b4SAndroid Build Coastguard Worker /* Set and get port timeout (struct timeval's) */ 81*f80ad8b4SAndroid Build Coastguard Worker #define PPGETTIME _IOR(PP_IOCTL, 0x95, struct timeval) 82*f80ad8b4SAndroid Build Coastguard Worker #define PPSETTIME _IOW(PP_IOCTL, 0x96, struct timeval) 83*f80ad8b4SAndroid Build Coastguard Worker 84*f80ad8b4SAndroid Build Coastguard Worker /* Get available modes (what the hardware can do) */ 85*f80ad8b4SAndroid Build Coastguard Worker #define PPGETMODES _IOR(PP_IOCTL, 0x97, unsigned int) 86*f80ad8b4SAndroid Build Coastguard Worker 87*f80ad8b4SAndroid Build Coastguard Worker /* Get the current mode and phaze */ 88*f80ad8b4SAndroid Build Coastguard Worker #define PPGETMODE _IOR(PP_IOCTL, 0x98, int) 89*f80ad8b4SAndroid Build Coastguard Worker #define PPGETPHASE _IOR(PP_IOCTL, 0x99, int) 90*f80ad8b4SAndroid Build Coastguard Worker 91*f80ad8b4SAndroid Build Coastguard Worker /* get/set flags */ 92*f80ad8b4SAndroid Build Coastguard Worker #define PPGETFLAGS _IOR(PP_IOCTL, 0x9a, int) 93*f80ad8b4SAndroid Build Coastguard Worker #define PPSETFLAGS _IOW(PP_IOCTL, 0x9b, int) 94*f80ad8b4SAndroid Build Coastguard Worker 95*f80ad8b4SAndroid Build Coastguard Worker /* flags visible to the world */ 96*f80ad8b4SAndroid Build Coastguard Worker #define PP_FASTWRITE (1<<2) 97*f80ad8b4SAndroid Build Coastguard Worker #define PP_FASTREAD (1<<3) 98*f80ad8b4SAndroid Build Coastguard Worker #define PP_W91284PIC (1<<4) 99*f80ad8b4SAndroid Build Coastguard Worker 100*f80ad8b4SAndroid Build Coastguard Worker /* only masks user-visible flags */ 101*f80ad8b4SAndroid Build Coastguard Worker #define PP_FLAGMASK (PP_FASTWRITE | PP_FASTREAD | PP_W91284PIC) 102*f80ad8b4SAndroid Build Coastguard Worker 103*f80ad8b4SAndroid Build Coastguard Worker #endif /* _UAPI_LINUX_PPDEV_H */ 104