drivers/scsi/aha1542.h

Source file repositories/reference/linux-study-clean/drivers/scsi/aha1542.h

File Facts

System
Linux kernel
Corpus path
drivers/scsi/aha1542.h
Extension
.h
Size
3782 bytes
Lines
109
Domain
Driver Families
Bucket
drivers/scsi
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

struct mailbox {
	u8 status;	/* Command/Status */
	u8 ccbptr[3];	/* msb, .., lsb */
};

/* This is used with scatter-gather */
struct chain {
	u8 datalen[3];	/* Size of this part of chain */
	u8 dataptr[3];	/* Location of data */
};

/* These belong in scsi.h also */
static inline void any2scsi(u8 *p, u32 v)
{
	p[0] = v >> 16;
	p[1] = v >> 8;
	p[2] = v;
}

#define scsi2int(up) ( (((long)*(up)) << 16) + (((long)(up)[1]) << 8) + ((long)(up)[2]) )

#define xscsi2int(up) ( (((long)(up)[0]) << 24) + (((long)(up)[1]) << 16) \
		      + (((long)(up)[2]) <<  8) +  ((long)(up)[3]) )

#define MAX_CDB 12
#define MAX_SENSE 14

/* Command Control Block (CCB), 5.3 */
struct ccb {
	u8 op;		/* Command Control Block Operation Code: */
			/* 0x00: SCSI Initiator CCB, 0x01: SCSI Target CCB, */
			/* 0x02: SCSI Initiator CCB with Scatter/Gather, */
			/* 0x81: SCSI Bus Device Reset CCB */
	u8 idlun;	/* Address and Direction Control: */
			/* Bits 7-5: op=0, 2: Target ID, op=1: Initiator ID */
			/* Bit	4: Outbound data transfer, length is checked */
			/* Bit	3:  Inbound data transfer, length is checked */
			/* Bits 2-0: Logical Unit Number */
	u8 cdblen;	/* SCSI Command Length */
	u8 rsalen;	/* Request Sense Allocation Length/Disable Auto Sense */
	u8 datalen[3];	/* Data Length  (MSB, ..., LSB) */
	u8 dataptr[3];	/* Data Pointer (MSB, ..., LSB) */
	u8 linkptr[3];	/* Link Pointer (MSB, ..., LSB) */
	u8 commlinkid;	/* Command Linking Identifier */
	u8 hastat;	/* Host  Adapter Status (HASTAT) */
	u8 tarstat;	/* Target Device Status (TARSTAT) */
	u8 reserved[2];
	u8 cdb[MAX_CDB + MAX_SENSE];	/* SCSI Command Descriptor Block */
					/* followed by the Auto Sense data */
};

#define AHA1542_REGION_SIZE 4
#define AHA1542_MAILBOXES 8

#endif /* _AHA1542_H_ */

Annotation

Implementation Notes