drivers/scsi/fdomain.h

Source file repositories/reference/linux-study-clean/drivers/scsi/fdomain.h

File Facts

System
Linux kernel
Corpus path
drivers/scsi/fdomain.h
Extension
.h
Size
5176 bytes
Lines
115
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

#define FDOMAIN_REGION_SIZE	0x10
#define FDOMAIN_BIOS_SIZE	0x2000

enum {
	in_arbitration	= 0x02,
	in_selection	= 0x04,
	in_other	= 0x08,
	disconnect	= 0x10,
	aborted		= 0x20,
	sent_ident	= 0x40,
};

/* (@) = not present on TMC1800, (#) = not present on TMC1800 and TMC18C50 */
#define REG_SCSI_DATA		0	/* R/W: SCSI Data (with ACK) */
#define REG_BSTAT		1	/* R: SCSI Bus Status */
#define		BSTAT_BSY	BIT(0)	 /* Busy */
#define		BSTAT_MSG	BIT(1)	 /* Message */
#define		BSTAT_IO	BIT(2)	 /* Input/Output */
#define		BSTAT_CMD	BIT(3)	 /* Command/Data */
#define		BSTAT_REQ	BIT(4)	 /* Request and Not Ack */
#define		BSTAT_SEL	BIT(5)	 /* Select */
#define		BSTAT_ACK	BIT(6)	 /* Acknowledge and Request */
#define		BSTAT_ATN	BIT(7)	 /* Attention */
#define REG_BCTL		1	/* W: SCSI Bus Control */
#define		BCTL_RST	BIT(0)	 /* Bus Reset */
#define		BCTL_SEL	BIT(1)	 /* Select */
#define		BCTL_BSY	BIT(2)	 /* Busy */
#define		BCTL_ATN	BIT(3)	 /* Attention */
#define		BCTL_IO		BIT(4)	 /* Input/Output */
#define		BCTL_CMD	BIT(5)	 /* Command/Data */
#define		BCTL_MSG	BIT(6)	 /* Message */
#define		BCTL_BUSEN	BIT(7)	 /* Enable bus drivers */
#define REG_ASTAT		2	/* R: Adapter Status 1 */
#define		ASTAT_IRQ	BIT(0)	 /* Interrupt active */
#define		ASTAT_ARB	BIT(1)	 /* Arbitration complete */
#define		ASTAT_PARERR	BIT(2)	 /* Parity error */
#define		ASTAT_RST	BIT(3)	 /* SCSI reset occurred */
#define		ASTAT_FIFODIR	BIT(4)	 /* FIFO direction */
#define		ASTAT_FIFOEN	BIT(5)	 /* FIFO enabled */
#define		ASTAT_PAREN	BIT(6)	 /* Parity enabled */
#define		ASTAT_BUSEN	BIT(7)	 /* Bus drivers enabled */
#define REG_ICTL		2	/* W: Interrupt Control */
#define		ICTL_FIFO_MASK	0x0f	 /* FIFO threshold, 1/16 FIFO size */
#define		ICTL_FIFO	BIT(4)	 /* Int. on FIFO count */
#define		ICTL_ARB	BIT(5)	 /* Int. on Arbitration complete */
#define		ICTL_SEL	BIT(6)	 /* Int. on SCSI Select */
#define		ICTL_REQ	BIT(7)	 /* Int. on SCSI Request */
#define REG_FSTAT		3	/* R: Adapter Status 2 (FIFO) - (@) */
#define		FSTAT_ONOTEMPTY	BIT(0)	 /* Output FIFO not empty */
#define		FSTAT_INOTEMPTY	BIT(1)	 /* Input FIFO not empty */
#define		FSTAT_NOTEMPTY	BIT(2)	 /* Main FIFO not empty */
#define		FSTAT_NOTFULL	BIT(3)	 /* Main FIFO not full */
#define REG_MCTL		3	/* W: SCSI Data Mode Control */
#define		MCTL_ACK_MASK	0x0f	 /* Acknowledge period */
#define		MCTL_ACTDEASS	BIT(4)	 /* Active deassert of REQ and ACK */
#define		MCTL_TARGET	BIT(5)	 /* Enable target mode */
#define		MCTL_FASTSYNC	BIT(6)	 /* Enable Fast Synchronous */
#define		MCTL_SYNC	BIT(7)	 /* Enable Synchronous */
#define REG_INTCOND		4	/* R: Interrupt Condition - (@) */
#define		IRQ_FIFO	BIT(1)	 /* FIFO interrupt */
#define		IRQ_REQ		BIT(2)	 /* SCSI Request interrupt */
#define		IRQ_SEL		BIT(3)	 /* SCSI Select interrupt */
#define		IRQ_ARB		BIT(4)	 /* SCSI Arbitration interrupt */
#define		IRQ_RST		BIT(5)	 /* SCSI Reset interrupt */
#define		IRQ_FORCED	BIT(6)	 /* Forced interrupt */
#define		IRQ_TIMEOUT	BIT(7)	 /* Bus timeout */
#define REG_ACTL		4	/* W: Adapter Control 1 */
#define		ACTL_RESET	BIT(0)	 /* Reset FIFO, parity, reset int. */
#define		ACTL_FIRQ	BIT(1)	 /* Set Forced interrupt */
#define		ACTL_ARB	BIT(2)	 /* Initiate Bus Arbitration */
#define		ACTL_PAREN	BIT(3)	 /* Enable SCSI Parity */
#define		ACTL_IRQEN	BIT(4)	 /* Enable interrupts */
#define		ACTL_CLRFIRQ	BIT(5)	 /* Clear Forced interrupt */
#define		ACTL_FIFOWR	BIT(6)	 /* FIFO Direction (1=write) */
#define		ACTL_FIFOEN	BIT(7)	 /* Enable FIFO */
#define REG_ID_LSB		5	/* R: ID Code (LSB) */
#define REG_ACTL2		5	/* Adapter Control 2 - (@) */
#define		ACTL2_RAMOVRLY	BIT(0)	 /* Enable RAM overlay */
#define		ACTL2_SLEEP	BIT(7)	 /* Sleep mode */
#define REG_ID_MSB		6	/* R: ID Code (MSB) */
#define REG_LOOPBACK		7	/* R/W: Loopback */
#define REG_SCSI_DATA_NOACK	8	/* R/W: SCSI Data (no ACK) */
#define REG_ASTAT3		9	/* R: Adapter Status 3 */
#define		ASTAT3_ACTDEASS	BIT(0)	 /* Active deassert enabled */
#define		ASTAT3_RAMOVRLY	BIT(1)	 /* RAM overlay enabled */
#define		ASTAT3_TARGERR	BIT(2)	 /* Target error */
#define		ASTAT3_IRQEN	BIT(3)	 /* Interrupts enabled */
#define		ASTAT3_IRQMASK	0xf0	 /* Enabled interrupts mask */
#define REG_CFG1		10	/* R: Configuration Register 1 */
#define		CFG1_BUS	BIT(0)	 /* 0 = ISA */

Annotation

Implementation Notes