drivers/scsi/sym53c8xx_2/sym_hipd.h
Source file repositories/reference/linux-study-clean/drivers/scsi/sym53c8xx_2/sym_hipd.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/scsi/sym53c8xx_2/sym_hipd.h- Extension
.h- Size
- 33668 bytes
- Lines
- 1214
- 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.
- Touches IRQ or DMA behavior; this matters for the representative real-device path.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/gfp.h
Detected Declarations
struct sym_transstruct sym_tcbhstruct sym_tcbstruct sym_lcbhstruct sym_lcbstruct sym_actscrstruct sym_pmcstruct sym_ccbhstruct sym_dsbstruct sym_ccbstruct sym_hcbfunction Copyrightfunction sym_build_sgefunction __sym_mfree_dmafunction sym_m_free_dma_mem_cluster
Annotated Snippet
struct sym_trans {
u8 period;
u8 offset;
unsigned int width:1;
unsigned int iu:1;
unsigned int dt:1;
unsigned int qas:1;
unsigned int check_nego:1;
unsigned int renego:2;
};
/*
* Global TCB HEADER.
*
* Due to lack of indirect addressing on earlier NCR chips,
* this substructure is copied from the TCB to a global
* address after selection.
* For SYMBIOS chips that support LOAD/STORE this copy is
* not needed and thus not performed.
*/
struct sym_tcbh {
/*
* Scripts bus addresses of LUN table accessed from scripts.
* LUN #0 is a special case, since multi-lun devices are rare,
* and we we want to speed-up the general case and not waste
* resources.
*/
u32 luntbl_sa; /* bus address of this table */
u32 lun0_sa; /* bus address of LCB #0 */
/*
* Actual SYNC/WIDE IO registers value for this target.
* 'sval', 'wval' and 'uval' are read from SCRIPTS and
* so have alignment constraints.
*/
/*0*/ u_char uval; /* -> SCNTL4 register */
/*1*/ u_char sval; /* -> SXFER io register */
/*2*/ u_char filler1;
/*3*/ u_char wval; /* -> SCNTL3 io register */
};
/*
* Target Control Block
*/
struct sym_tcb {
/*
* TCB header.
* Assumed at offset 0.
*/
/*0*/ struct sym_tcbh head;
/*
* LUN table used by the SCRIPTS processor.
* An array of bus addresses is used on reselection.
*/
u32 *luntbl; /* LCBs bus address table */
int nlcb; /* Number of valid LCBs (including LUN #0) */
/*
* LUN table used by the C code.
*/
struct sym_lcb *lun0p; /* LCB of LUN #0 (usual case) */
#if SYM_CONF_MAX_LUN > 1
struct sym_lcb **lunmp; /* Other LCBs [1..MAX_LUN] */
#endif
#ifdef SYM_HAVE_STCB
/*
* O/S specific data structure.
*/
struct sym_stcb s;
#endif
/* Transfer goal */
struct sym_trans tgoal;
/* Last printed transfer speed */
struct sym_trans tprint;
/*
* Keep track of the CCB used for the negotiation in order
* to ensure that only 1 negotiation is queued at a time.
*/
struct sym_ccb * nego_cp; /* CCB used for the nego */
/*
* Set when we want to reset the device.
*/
u_char to_reset;
/*
Annotation
- Immediate include surface: `linux/gfp.h`.
- Detected declarations: `struct sym_trans`, `struct sym_tcbh`, `struct sym_tcb`, `struct sym_lcbh`, `struct sym_lcb`, `struct sym_actscr`, `struct sym_pmc`, `struct sym_ccbh`, `struct sym_dsb`, `struct sym_ccb`.
- Atlas domain: Driver Families / drivers/scsi.
- Implementation status: source implementation candidate.
- IRQ or DMA behavior appears here, which is relevant to the selected PCIe/NVMe device path.
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.