mirror of
				https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
				synced 2025-10-31 20:06:46 +00:00 
			
		
		
		
	 1da177e4c3
			
		
	
	
		1da177e4c3
		
	
	
	
	
		
			
			Initial git repository build. I'm not bothering with the full history, even though we have it. We can create a separate "historical" git archive of that later if we want to, and in the meantime it's about 3.2GB when imported into git - space that would just make the early git days unnecessarily complicated, when we don't have a lot of good infrastructure for it. Let it rip!
		
			
				
	
	
		
			64 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* 	pg.h (c) 1998  Grant R. Guenther <grant@torque.net>
 | |
|  		       Under the terms of the GNU General Public License
 | |
| 
 | |
| 
 | |
| 	pg.h defines the user interface to the generic ATAPI packet
 | |
|         command driver for parallel port ATAPI devices (pg). The
 | |
| 	driver is loosely modelled after the generic SCSI driver, sg,
 | |
| 	although the actual interface is different.
 | |
| 
 | |
| 	The pg driver provides a simple character device interface for
 | |
|         sending ATAPI commands to a device.  With the exception of the
 | |
| 	ATAPI reset operation, all operations are performed by a pair
 | |
|         of read and write operations to the appropriate /dev/pgN device.
 | |
| 	A write operation delivers a command and any outbound data in
 | |
|         a single buffer.  Normally, the write will succeed unless the
 | |
|         device is offline or malfunctioning, or there is already another
 | |
| 	command pending.  If the write succeeds, it should be followed
 | |
|         immediately by a read operation, to obtain any returned data and
 | |
|         status information.  A read will fail if there is no operation
 | |
|         in progress.
 | |
| 
 | |
| 	As a special case, the device can be reset with a write operation,
 | |
|         and in this case, no following read is expected, or permitted.
 | |
| 
 | |
| 	There are no ioctl() operations.  Any single operation
 | |
| 	may transfer at most PG_MAX_DATA bytes.  Note that the driver must
 | |
|         copy the data through an internal buffer.  In keeping with all
 | |
| 	current ATAPI devices, command packets are assumed to be exactly
 | |
| 	12 bytes in length.
 | |
| 
 | |
| 	To permit future changes to this interface, the headers in the
 | |
| 	read and write buffers contain a single character "magic" flag.
 | |
|         Currently this flag must be the character "P".
 | |
| 
 | |
| */
 | |
| 
 | |
| #define PG_MAGIC	'P'
 | |
| #define PG_RESET	'Z'
 | |
| #define PG_COMMAND	'C'
 | |
| 
 | |
| #define PG_MAX_DATA	32768
 | |
| 
 | |
| struct pg_write_hdr {
 | |
| 
 | |
| 	char	magic;		/* == PG_MAGIC */
 | |
| 	char	func;		/* PG_RESET or PG_COMMAND */
 | |
| 	int     dlen;		/* number of bytes expected to transfer */
 | |
| 	int     timeout;	/* number of seconds before timeout */
 | |
| 	char	packet[12];	/* packet command */
 | |
| 
 | |
| };
 | |
| 
 | |
| struct pg_read_hdr {
 | |
| 
 | |
| 	char	magic;		/* == PG_MAGIC */
 | |
| 	char	scsi;		/* "scsi" status == sense key */
 | |
| 	int	dlen;		/* size of device transfer request */
 | |
| 	int     duration;	/* time in seconds command took */
 | |
| 	char    pad[12];	/* not used */
 | |
| 
 | |
| };
 | |
| 
 | |
| /* end of pg.h */
 |