Commit 1697c6a6 authored by Ondrej Zary's avatar Ondrej Zary Committed by Martin K. Petersen

scsi: fdomain: Add register definitions

Add register bit definitions from documentation to header file and use them
instead of magic constants. No changes to generated binary.
Signed-off-by: default avatarOndrej Zary <linux@zary.sk>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent aa343c69
This diff is collapsed.
...@@ -12,34 +12,95 @@ enum { ...@@ -12,34 +12,95 @@ enum {
sent_ident = 0x40, sent_ident = 0x40,
}; };
enum in_port_type { /* (@) = not present on TMC1800, (#) = not present on TMC1800 and TMC18C50 */
Read_SCSI_Data = 0, #define REG_SCSI_DATA 0 /* R/W: SCSI Data (with ACK) */
SCSI_Status = 1, #define REG_BSTAT 1 /* R: SCSI Bus Status */
TMC_Status = 2, #define BSTAT_BSY BIT(0) /* Busy */
FIFO_Status = 3, /* tmc18c50/tmc18c30 only */ #define BSTAT_MSG BIT(1) /* Message */
Interrupt_Cond = 4, /* tmc18c50/tmc18c30 only */ #define BSTAT_IO BIT(2) /* Input/Output */
LSB_ID_Code = 5, #define BSTAT_CMD BIT(3) /* Command/Data */
MSB_ID_Code = 6, #define BSTAT_REQ BIT(4) /* Request and Not Ack */
Read_Loopback = 7, #define BSTAT_SEL BIT(5) /* Select */
SCSI_Data_NoACK = 8, #define BSTAT_ACK BIT(6) /* Acknowledge and Request */
Interrupt_Status = 9, #define BSTAT_ATN BIT(7) /* Attention */
Configuration1 = 10, #define REG_BCTL 1 /* W: SCSI Bus Control */
Configuration2 = 11, /* tmc18c50/tmc18c30 only */ #define BCTL_RST BIT(0) /* Bus Reset */
Read_FIFO = 12, #define BCTL_SEL BIT(1) /* Select */
FIFO_Data_Count = 14 #define BCTL_BSY BIT(2) /* Busy */
}; #define BCTL_ATN BIT(3) /* Attention */
#define BCTL_IO BIT(4) /* Input/Output */
enum out_port_type { #define BCTL_CMD BIT(5) /* Command/Data */
Write_SCSI_Data = 0, #define BCTL_MSG BIT(6) /* Message */
SCSI_Cntl = 1, #define BCTL_BUSEN BIT(7) /* Enable bus drivers */
Interrupt_Cntl = 2, #define REG_ASTAT 2 /* R: Adapter Status 1 */
SCSI_Mode_Cntl = 3, #define ASTAT_IRQ BIT(0) /* Interrupt active */
TMC_Cntl = 4, #define ASTAT_ARB BIT(1) /* Arbitration complete */
Memory_Cntl = 5, /* tmc18c50/tmc18c30 only */ #define ASTAT_PARERR BIT(2) /* Parity error */
Write_Loopback = 7, #define ASTAT_RST BIT(3) /* SCSI reset occurred */
IO_Control = 11, /* tmc18c30 only */ #define ASTAT_FIFODIR BIT(4) /* FIFO direction */
Write_FIFO = 12 #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 */
#define CFG1_IRQ_MASK 0x0e /* IRQ jumpers */
#define CFG1_IO_MASK 0x30 /* I/O base jumpers */
#define CFG1_BIOS_MASK 0xc0 /* 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 #ifdef CONFIG_PM_SLEEP
static const struct dev_pm_ops fdomain_pm_ops; static const struct dev_pm_ops fdomain_pm_ops;
......
...@@ -131,7 +131,7 @@ static int fdomain_isa_match(struct device *dev, unsigned int ndev) ...@@ -131,7 +131,7 @@ static int fdomain_isa_match(struct device *dev, unsigned int ndev)
if (!request_region(base, FDOMAIN_REGION_SIZE, "fdomain_isa")) if (!request_region(base, FDOMAIN_REGION_SIZE, "fdomain_isa"))
return 0; return 0;
irq = irqs[(inb(base + Configuration1) & 0x0e) >> 1]; irq = irqs[(inb(base + REG_CFG1) & 0x0e) >> 1];
if (sig) if (sig)
...@@ -164,7 +164,7 @@ static int fdomain_isa_param_match(struct device *dev, unsigned int ndev) ...@@ -164,7 +164,7 @@ static int fdomain_isa_param_match(struct device *dev, unsigned int ndev)
} }
if (irq_ <= 0) if (irq_ <= 0)
irq_ = irqs[(inb(io[ndev] + Configuration1) & 0x0e) >> 1]; irq_ = irqs[(inb(io[ndev] + REG_CFG1) & 0x0e) >> 1];
sh = fdomain_create(io[ndev], irq_, scsi_id[ndev], dev); sh = fdomain_create(io[ndev], irq_, scsi_id[ndev], dev);
if (!sh) { if (!sh) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment