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.

Dependency Surface

Detected Declarations

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

Implementation Notes