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.
- 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.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/types.h
Detected Declarations
struct mailboxstruct chainstruct ccbfunction any2scsi
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
- Immediate include surface: `linux/types.h`.
- Detected declarations: `struct mailbox`, `struct chain`, `struct ccb`, `function any2scsi`.
- Atlas domain: Driver Families / drivers/scsi.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.