/* SPDX-License-Identifier: GPL-2.0 */
#define FDOMAIN_REGION_SIZE 0 x10
#define FDOMAIN_BIOS_SIZE 0 x2000
enum {
in_arbitration = 0 x02,
in_selection = 0 x04,
in_other = 0 x08,
disconnect = 0 x10,
aborted = 0 x20,
sent_ident = 0 x40,
};
/* (@) = 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 0 x0f /* 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 0 x0f /* 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 0 xf0 /* Enabled interrupts mask */
#define REG_CFG1 10 /* R: Configuration Register 1 */
#define CFG1_BUS BIT(0 ) /* 0 = ISA */
#define CFG1_IRQ_MASK 0 x0e /* IRQ jumpers */
#define CFG1_IO_MASK 0 x30 /* I/O base jumpers */
#define CFG1_BIOS_MASK 0 xc0 /* BIOS base jumpers */
#define REG_CFG2 11 /* R/W: Configuration Register 2 (@) */
#define CFG2_ROMDIS BIT(0 ) /* ROM disabled */
#define CFG2_RAMDIS BIT(1 ) /* RAM disabled */
#define CFG2_IRQEDGE BIT(2 ) /* Edge-triggered interrupts */
#define CFG2_NOWS BIT(3 ) /* No wait states */
#define CFG2_32BIT BIT(7 ) /* 32-bit mode */
#define REG_FIFO 12 /* R/W: FIFO */
#define REG_FIFO_COUNT 14 /* R: FIFO Data Count */
#ifdef CONFIG_PM_SLEEP
static const struct dev_pm_ops __maybe_unused fdomain_pm_ops;
#define FDOMAIN_PM_OPS (&fdomain_pm_ops)
#else
#define FDOMAIN_PM_OPS NULL
#endif /* CONFIG_PM_SLEEP */
struct Scsi_Host *fdomain_create(int base, int irq, int this_id,
struct device *dev);
int fdomain_destroy(struct Scsi_Host *sh);
Messung V0.5 in Prozent C=90 H=91 G=90
¤ Dauer der Verarbeitung: 0.9 Sekunden
(vorverarbeitet am 2026-06-07)
¤
*© Formatika GbR, Deutschland