drivers/scsi/pm8001/pm8001_hwi.h
Source file repositories/reference/linux-study-clean/drivers/scsi/pm8001/pm8001_hwi.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/scsi/pm8001/pm8001_hwi.h- Extension
.h- Size
- 31559 bytes
- Lines
- 1033
- 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/types.hscsi/libsas.h
Detected Declarations
struct mpi_msg_hdrstruct phy_start_reqstruct phy_stop_reqstruct set_dev_bits_fisstruct pio_setup_fisstruct sata_completion_respstruct hw_event_respstruct reg_dev_reqstruct dereg_dev_reqstruct dev_reg_respstruct local_phy_ctl_reqstruct local_phy_ctl_respstruct port_ctl_reqstruct hw_event_ack_reqstruct ssp_completion_respstruct sata_event_respstruct ssp_event_respstruct general_event_respstruct smp_reqstruct smp_completion_respstruct task_abort_reqstruct task_abort_respstruct sas_diag_start_end_reqstruct sas_diag_execute_reqstruct set_dev_state_reqstruct sas_re_initialization_reqstruct sata_start_reqstruct ssp_ini_tm_start_reqstruct ssp_info_unitstruct ssp_ini_io_start_reqstruct fw_flash_Update_reqstruct fw_flash_Update_respstruct get_nvm_data_reqstruct set_nvm_data_reqstruct get_nvm_data_respstruct sas_diag_start_end_respstruct sas_diag_execute_respstruct set_dev_state_resp
Annotated Snippet
struct mpi_msg_hdr{
__le32 header; /* Bits [11:0] - Message operation code */
/* Bits [15:12] - Message Category */
/* Bits [21:16] - Outboundqueue ID for the
operation completion message */
/* Bits [23:22] - Reserved */
/* Bits [28:24] - Buffer Count, indicates how
many buffer are allocated for the massage */
/* Bits [30:29] - Reserved */
/* Bits [31] - Message Valid bit */
} __attribute__((packed, aligned(4)));
/*
* brief the data structure of PHY Start Command
* use to describe enable the phy (64 bytes)
*/
struct phy_start_req {
__le32 tag;
__le32 ase_sh_lm_slr_phyid;
struct sas_identify_frame sas_identify;
u32 reserved[5];
} __attribute__((packed, aligned(4)));
/*
* brief the data structure of PHY Start Command
* use to disable the phy (64 bytes)
*/
struct phy_stop_req {
__le32 tag;
__le32 phy_id;
u32 reserved[13];
} __attribute__((packed, aligned(4)));
/* set device bits fis - device to host */
struct set_dev_bits_fis {
u8 fis_type; /* 0xA1*/
u8 n_i_pmport;
/* b7 : n Bit. Notification bit. If set device needs attention. */
/* b6 : i Bit. Interrupt Bit */
/* b5-b4: reserved2 */
/* b3-b0: PM Port */
u8 status;
u8 error;
u32 _r_a;
} __attribute__ ((packed));
/* PIO setup FIS - device to host */
struct pio_setup_fis {
u8 fis_type; /* 0x5f */
u8 i_d_pmPort;
/* b7 : reserved */
/* b6 : i bit. Interrupt bit */
/* b5 : d bit. data transfer direction. set to 1 for device to host
xfer */
/* b4 : reserved */
/* b3-b0: PM Port */
u8 status;
u8 error;
u8 lbal;
u8 lbam;
u8 lbah;
u8 device;
u8 lbal_exp;
u8 lbam_exp;
u8 lbah_exp;
u8 _r_a;
u8 sector_count;
u8 sector_count_exp;
u8 _r_b;
u8 e_status;
u8 _r_c[2];
u8 transfer_count;
} __attribute__ ((packed));
/*
* brief the data structure of SATA Completion Response
* use to describe the sata task response (64 bytes)
*/
struct sata_completion_resp {
__le32 tag;
__le32 status;
__le32 param;
u32 sata_resp[12];
} __attribute__((packed, aligned(4)));
/*
* brief the data structure of SAS HW Event Notification
Annotation
- Immediate include surface: `linux/types.h`, `scsi/libsas.h`.
- Detected declarations: `struct mpi_msg_hdr`, `struct phy_start_req`, `struct phy_stop_req`, `struct set_dev_bits_fis`, `struct pio_setup_fis`, `struct sata_completion_resp`, `struct hw_event_resp`, `struct reg_dev_req`, `struct dereg_dev_req`, `struct dev_reg_resp`.
- 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.