drivers/scsi/myrb.h
Source file repositories/reference/linux-study-clean/drivers/scsi/myrb.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/scsi/myrb.h- Extension
.h- Size
- 30913 bytes
- Lines
- 958
- 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
- No C-style include directives detected by the generator.
Detected Declarations
struct myrb_enquirystruct myrb_enquiry2struct myrb_ldev_infostruct myrb_log_entrystruct myrb_pdev_statestruct myrb_rbld_progressstruct myrb_bgi_statusstruct myrb_error_entrystruct myrb_config2struct myrb_dcdbstruct myrb_sgestruct myrb_stat_mboxstruct myrb_cmdblkstruct myrb_hbastruct myrb_privdataenum myrb_cmd_opcodeenum myrb_devstateenum myrb_raidlevelenum DAC960_LA_reg_offsetenum DAC960_PG_reg_offsetenum DAC960_PD_reg_offset
Annotated Snippet
struct myrb_enquiry {
unsigned char ldev_count; /* Byte 0 */
unsigned int rsvd1:24; /* Bytes 1-3 */
unsigned int ldev_sizes[32]; /* Bytes 4-131 */
unsigned short flash_age; /* Bytes 132-133 */
struct {
unsigned char deferred:1; /* Byte 134 Bit 0 */
unsigned char low_bat:1; /* Byte 134 Bit 1 */
unsigned char rsvd2:6; /* Byte 134 Bits 2-7 */
} status;
unsigned char rsvd3:8; /* Byte 135 */
unsigned char fw_minor_version; /* Byte 136 */
unsigned char fw_major_version; /* Byte 137 */
enum {
MYRB_NO_STDBY_RBLD_OR_CHECK_IN_PROGRESS = 0x00,
MYRB_STDBY_RBLD_IN_PROGRESS = 0x01,
MYRB_BG_RBLD_IN_PROGRESS = 0x02,
MYRB_BG_CHECK_IN_PROGRESS = 0x03,
MYRB_STDBY_RBLD_COMPLETED_WITH_ERROR = 0xFF,
MYRB_BG_RBLD_OR_CHECK_FAILED_DRIVE_FAILED = 0xF0,
MYRB_BG_RBLD_OR_CHECK_FAILED_LDEV_FAILED = 0xF1,
MYRB_BG_RBLD_OR_CHECK_FAILED_OTHER = 0xF2,
MYRB_BG_RBLD_OR_CHECK_SUCCESS_TERMINATED = 0xF3
} __packed rbld; /* Byte 138 */
unsigned char max_tcq; /* Byte 139 */
unsigned char ldev_offline; /* Byte 140 */
unsigned char rsvd4:8; /* Byte 141 */
unsigned short ev_seq; /* Bytes 142-143 */
unsigned char ldev_critical; /* Byte 144 */
unsigned int rsvd5:24; /* Bytes 145-147 */
unsigned char pdev_dead; /* Byte 148 */
unsigned char rsvd6:8; /* Byte 149 */
unsigned char rbld_count; /* Byte 150 */
struct {
unsigned char rsvd7:3; /* Byte 151 Bits 0-2 */
unsigned char bbu_present:1; /* Byte 151 Bit 3 */
unsigned char rsvd8:4; /* Byte 151 Bits 4-7 */
} misc;
struct {
unsigned char target;
unsigned char channel;
} dead_drives[21]; /* Bytes 152-194 */
unsigned char rsvd9[62]; /* Bytes 195-255 */
} __packed;
/*
* DAC960 V1 Firmware Enquiry2 Command reply structure.
*/
struct myrb_enquiry2 {
struct {
enum {
DAC960_V1_P_PD_PU = 0x01,
DAC960_V1_PL = 0x02,
DAC960_V1_PG = 0x10,
DAC960_V1_PJ = 0x11,
DAC960_V1_PR = 0x12,
DAC960_V1_PT = 0x13,
DAC960_V1_PTL0 = 0x14,
DAC960_V1_PRL = 0x15,
DAC960_V1_PTL1 = 0x16,
DAC960_V1_1164P = 0x20
} __packed sub_model; /* Byte 0 */
unsigned char actual_channels; /* Byte 1 */
enum {
MYRB_5_CHANNEL_BOARD = 0x01,
MYRB_3_CHANNEL_BOARD = 0x02,
MYRB_2_CHANNEL_BOARD = 0x03,
MYRB_3_CHANNEL_ASIC_DAC = 0x04
} __packed model; /* Byte 2 */
enum {
MYRB_EISA_CONTROLLER = 0x01,
MYRB_MCA_CONTROLLER = 0x02,
MYRB_PCI_CONTROLLER = 0x03,
MYRB_SCSI_TO_SCSI = 0x08
} __packed controller; /* Byte 3 */
} hw; /* Bytes 0-3 */
/* MajorVersion.MinorVersion-FirmwareType-TurnID */
struct {
unsigned char major_version; /* Byte 4 */
unsigned char minor_version; /* Byte 5 */
unsigned char turn_id; /* Byte 6 */
char firmware_type; /* Byte 7 */
} fw; /* Bytes 4-7 */
unsigned int rsvd1; /* Byte 8-11 */
unsigned char cfg_chan; /* Byte 12 */
unsigned char cur_chan; /* Byte 13 */
unsigned char max_targets; /* Byte 14 */
unsigned char max_tcq; /* Byte 15 */
unsigned char max_ldev; /* Byte 16 */
unsigned char max_arms; /* Byte 17 */
Annotation
- Detected declarations: `struct myrb_enquiry`, `struct myrb_enquiry2`, `struct myrb_ldev_info`, `struct myrb_log_entry`, `struct myrb_pdev_state`, `struct myrb_rbld_progress`, `struct myrb_bgi_status`, `struct myrb_error_entry`, `struct myrb_config2`, `struct myrb_dcdb`.
- 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.