drivers/scsi/aic7xxx/aic7xxx.seq
Source file repositories/reference/linux-study-clean/drivers/scsi/aic7xxx/aic7xxx.seq
File Facts
- System
- Linux kernel
- Corpus path
drivers/scsi/aic7xxx/aic7xxx.seq- Extension
.seq- Size
- 70500 bytes
- Lines
- 2400
- Domain
- Driver Families
- Bucket
- drivers/scsi
- Inferred role
- Driver Families: drivers/scsi
- Status
- atlas-only
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
aic7xxx.regscsi_message.h
Detected Declarations
function ATNfunction messagesfunction SCSI
Annotated Snippet
if ((ahc->flags & AHC_INITIATORROLE) != 0) {
test SSTAT0, TARGET jz initiator_reselect;
}
mvi CLRSINT0, CLRSELDI;
/*
* We've just been selected. Assert BSY and
* setup the phase for receiving messages
* from the target.
*/
mvi SCSISIGO, P_MESGOUT|BSYO;
/*
* Setup the DMA for sending the identify and
* command information.
*/
mvi SEQ_FLAGS, CMDPHASE_PENDING;
mov A, TQINPOS;
if ((ahc->features & AHC_CMD_CHAN) != 0) {
mvi DINDEX, CCHADDR;
mvi SHARED_DATA_ADDR call set_32byte_addr;
mvi CCSCBCTL, CCSCBRESET;
} else {
mvi DINDEX, HADDR;
mvi SHARED_DATA_ADDR call set_32byte_addr;
mvi DFCNTRL, FIFORESET;
}
/* Initiator that selected us */
and SAVED_SCSIID, SELID_MASK, SELID;
/* The Target ID we were selected at */
if ((ahc->features & AHC_MULTI_TID) != 0) {
and A, OID, TARGIDIN;
} else if ((ahc->features & AHC_ULTRA2) != 0) {
and A, OID, SCSIID_ULTRA2;
} else {
and A, OID, SCSIID;
}
or SAVED_SCSIID, A;
if ((ahc->features & AHC_TWIN) != 0) {
test SBLKCTL, SELBUSB jz . + 2;
or SAVED_SCSIID, TWIN_CHNLB;
}
if ((ahc->features & AHC_CMD_CHAN) != 0) {
mov CCSCBRAM, SAVED_SCSIID;
} else {
mov DFDAT, SAVED_SCSIID;
}
/*
* If ATN isn't asserted, the target isn't interested
* in talking to us. Go directly to bus free.
* XXX SCSI-1 may require us to assume lun 0 if
* ATN is false.
*/
test SCSISIGI, ATNI jz target_busfree;
/*
* Watch ATN closely now as we pull in messages from the
* initiator. We follow the guidlines from section 6.5
* of the SCSI-2 spec for what messages are allowed when.
*/
call target_inb;
/*
* Our first message must be one of IDENTIFY, ABORT, or
* BUS_DEVICE_RESET.
*/
test DINDEX, MSG_IDENTIFYFLAG jz host_target_message_loop;
Annotation
- Immediate include surface: `aic7xxx.reg`, `scsi_message.h`.
- Detected declarations: `function ATN`, `function messages`, `function SCSI`.
- Atlas domain: Driver Families / drivers/scsi.
- Implementation status: atlas-only.
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.