diff options
author | Alexey Dobriyan <adobriyan@gmail.com> | 2006-03-08 00:14:35 -0800 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.il.steeleye.com> | 2006-03-12 09:18:15 -0600 |
commit | 5c04a7b8981f2855869bf04c881553135445d701 (patch) | |
tree | 536192a7b3e15523e0a0aecbd629be27404f2b10 /drivers/scsi/FlashPoint.c | |
parent | 13e6851aa1e8f7db0e9f0cc8567394a9fe451357 (diff) |
[SCSI] drivers/scsi/FlashPoint.c: Lindent
It's much, much more readable now.
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi/FlashPoint.c')
-rw-r--r-- | drivers/scsi/FlashPoint.c | 9190 |
1 files changed, 4490 insertions, 4700 deletions
diff --git a/drivers/scsi/FlashPoint.c b/drivers/scsi/FlashPoint.c index 37ee2cb60d2..ce49fbcafbb 100644 --- a/drivers/scsi/FlashPoint.c +++ b/drivers/scsi/FlashPoint.c @@ -15,74 +15,47 @@ */ - #include <linux/config.h> - #ifndef CONFIG_SCSI_OMIT_FLASHPOINT - #define MAX_CARDS 8 #undef BUSTYPE_PCI - - - - - - - - #define CRCMASK 0xA001 - - #define FAILURE 0xFFFFFFFFL - - - - - - - - - -#define BIT(x) ((unsigned char)(1<<(x))) /* single-bit mask in bit position x */ -#define BITW(x) ((unsigned short)(1<<(x))) /* single-bit mask in bit position x */ - - +#define BIT(x) ((unsigned char)(1<<(x))) /* single-bit mask in bit position x */ +#define BITW(x) ((unsigned short)(1<<(x))) /* single-bit mask in bit position x */ struct sccb; -typedef void (*CALL_BK_FN)(struct sccb *); - +typedef void (*CALL_BK_FN) (struct sccb *); struct sccb_mgr_info { - unsigned long si_baseaddr; - unsigned char si_present; - unsigned char si_intvect; - unsigned char si_id; - unsigned char si_lun; - unsigned short si_fw_revision; - unsigned short si_per_targ_init_sync; - unsigned short si_per_targ_fast_nego; - unsigned short si_per_targ_ultra_nego; - unsigned short si_per_targ_no_disc; - unsigned short si_per_targ_wide_nego; - unsigned short si_flags; - unsigned char si_card_family; - unsigned char si_bustype; - unsigned char si_card_model[3]; - unsigned char si_relative_cardnum; - unsigned char si_reserved[4]; - unsigned long si_OS_reserved; - unsigned char si_XlatInfo[4]; - unsigned long si_reserved2[5]; - unsigned long si_secondary_range; + unsigned long si_baseaddr; + unsigned char si_present; + unsigned char si_intvect; + unsigned char si_id; + unsigned char si_lun; + unsigned short si_fw_revision; + unsigned short si_per_targ_init_sync; + unsigned short si_per_targ_fast_nego; + unsigned short si_per_targ_ultra_nego; + unsigned short si_per_targ_no_disc; + unsigned short si_per_targ_wide_nego; + unsigned short si_flags; + unsigned char si_card_family; + unsigned char si_bustype; + unsigned char si_card_model[3]; + unsigned char si_relative_cardnum; + unsigned char si_reserved[4]; + unsigned long si_OS_reserved; + unsigned char si_XlatInfo[4]; + unsigned long si_reserved2[5]; + unsigned long si_secondary_range; }; - - #define SCSI_PARITY_ENA 0x0001 #define LOW_BYTE_TERM 0x0010 #define HIGH_BYTE_TERM 0x0020 @@ -95,97 +68,82 @@ struct sccb_mgr_info { #define FLAG_SCAM_ENABLED 0x0080 #define FLAG_SCAM_LEVEL2 0x0100 - - - #define HARPOON_FAMILY 0x02 - - /* SCCB struct used for both SCCB and UCB manager compiles! * The UCB Manager treats the SCCB as it's 'native hardware structure' */ - #pragma pack(1) struct sccb { - unsigned char OperationCode; - unsigned char ControlByte; - unsigned char CdbLength; - unsigned char RequestSenseLength; - unsigned long DataLength; - unsigned long DataPointer; - unsigned char CcbRes[2]; - unsigned char HostStatus; - unsigned char TargetStatus; - unsigned char TargID; - unsigned char Lun; - unsigned char Cdb[12]; - unsigned char CcbRes1; - unsigned char Reserved1; - unsigned long Reserved2; - unsigned long SensePointer; - - - CALL_BK_FN SccbCallback; /* VOID (*SccbCallback)(); */ - unsigned long SccbIOPort; /* Identifies board base port */ - unsigned char SccbStatus; - unsigned char SCCBRes2; - unsigned short SccbOSFlags; - - - unsigned long Sccb_XferCnt; /* actual transfer count */ - unsigned long Sccb_ATC; - unsigned long SccbVirtDataPtr; /* virtual addr for OS/2 */ - unsigned long Sccb_res1; - unsigned short Sccb_MGRFlags; - unsigned short Sccb_sgseg; - unsigned char Sccb_scsimsg; /* identify msg for selection */ - unsigned char Sccb_tag; - unsigned char Sccb_scsistat; - unsigned char Sccb_idmsg; /* image of last msg in */ - struct sccb * Sccb_forwardlink; - struct sccb * Sccb_backlink; - unsigned long Sccb_savedATC; - unsigned char Save_Cdb[6]; - unsigned char Save_CdbLen; - unsigned char Sccb_XferState; - unsigned long Sccb_SGoffset; - }; - + unsigned char OperationCode; + unsigned char ControlByte; + unsigned char CdbLength; + unsigned char RequestSenseLength; + unsigned long DataLength; + unsigned long DataPointer; + unsigned char CcbRes[2]; + unsigned char HostStatus; + unsigned char TargetStatus; + unsigned char TargID; + unsigned char Lun; + unsigned char Cdb[12]; + unsigned char CcbRes1; + unsigned char Reserved1; + unsigned long Reserved2; + unsigned long SensePointer; + + CALL_BK_FN SccbCallback; /* VOID (*SccbCallback)(); */ + unsigned long SccbIOPort; /* Identifies board base port */ + unsigned char SccbStatus; + unsigned char SCCBRes2; + unsigned short SccbOSFlags; + + unsigned long Sccb_XferCnt; /* actual transfer count */ + unsigned long Sccb_ATC; + unsigned long SccbVirtDataPtr; /* virtual addr for OS/2 */ + unsigned long Sccb_res1; + unsigned short Sccb_MGRFlags; + unsigned short Sccb_sgseg; + unsigned char Sccb_scsimsg; /* identify msg for selection */ + unsigned char Sccb_tag; + unsigned char Sccb_scsistat; + unsigned char Sccb_idmsg; /* image of last msg in */ + struct sccb *Sccb_forwardlink; + struct sccb *Sccb_backlink; + unsigned long Sccb_savedATC; + unsigned char Save_Cdb[6]; + unsigned char Save_CdbLen; + unsigned char Sccb_XferState; + unsigned long Sccb_SGoffset; +}; #pragma pack() - - #define SCATTER_GATHER_COMMAND 0x02 #define RESIDUAL_COMMAND 0x03 #define RESIDUAL_SG_COMMAND 0x04 #define RESET_COMMAND 0x81 +#define F_USE_CMD_Q 0x20 /*Inidcates TAGGED command. */ +#define TAG_TYPE_MASK 0xC0 /*Type of tag msg to send. */ +#define SCCB_DATA_XFER_OUT 0x10 /* Write */ +#define SCCB_DATA_XFER_IN 0x08 /* Read */ -#define F_USE_CMD_Q 0x20 /*Inidcates TAGGED command. */ -#define TAG_TYPE_MASK 0xC0 /*Type of tag msg to send. */ -#define SCCB_DATA_XFER_OUT 0x10 /* Write */ -#define SCCB_DATA_XFER_IN 0x08 /* Read */ - +#define NO_AUTO_REQUEST_SENSE 0x01 /* No Request Sense Buffer */ -#define NO_AUTO_REQUEST_SENSE 0x01 /* No Request Sense Buffer */ - - -#define BUS_FREE_ST 0 +#define BUS_FREE_ST 0 #define SELECT_ST 1 -#define SELECT_BDR_ST 2 /* Select w\ Bus Device Reset */ -#define SELECT_SN_ST 3 /* Select w\ Sync Nego */ -#define SELECT_WN_ST 4 /* Select w\ Wide Data Nego */ -#define SELECT_Q_ST 5 /* Select w\ Tagged Q'ing */ +#define SELECT_BDR_ST 2 /* Select w\ Bus Device Reset */ +#define SELECT_SN_ST 3 /* Select w\ Sync Nego */ +#define SELECT_WN_ST 4 /* Select w\ Wide Data Nego */ +#define SELECT_Q_ST 5 /* Select w\ Tagged Q'ing */ #define COMMAND_ST 6 #define DATA_OUT_ST 7 #define DATA_IN_ST 8 #define DISCONNECT_ST 9 #define ABORT_ST 11 - #define F_HOST_XFER_DIR 0x01 #define F_ALL_XFERRED 0x02 #define F_SG_XFER 0x04 @@ -193,49 +151,37 @@ struct sccb { #define F_ODD_BALL_CNT 0x10 #define F_NO_DATA_YET 0x80 - #define F_STATUSLOADED 0x01 #define F_DEV_SELECTED 0x04 - -#define SCCB_COMPLETE 0x00 /* SCCB completed without error */ +#define SCCB_COMPLETE 0x00 /* SCCB completed without error */ #define SCCB_DATA_UNDER_RUN 0x0C -#define SCCB_SELECTION_TIMEOUT 0x11 /* Set SCSI selection timed out */ +#define SCCB_SELECTION_TIMEOUT 0x11 /* Set SCSI selection timed out */ #define SCCB_DATA_OVER_RUN 0x12 -#define SCCB_PHASE_SEQUENCE_FAIL 0x14 /* Target bus phase sequence failure */ - -#define SCCB_GROSS_FW_ERR 0x27 /* Major problem! */ -#define SCCB_BM_ERR 0x30 /* BusMaster error. */ -#define SCCB_PARITY_ERR 0x34 /* SCSI parity error */ - - - +#define SCCB_PHASE_SEQUENCE_FAIL 0x14 /* Target bus phase sequence failure */ +#define SCCB_GROSS_FW_ERR 0x27 /* Major problem! */ +#define SCCB_BM_ERR 0x30 /* BusMaster error. */ +#define SCCB_PARITY_ERR 0x34 /* SCSI parity error */ #define SCCB_IN_PROCESS 0x00 #define SCCB_SUCCESS 0x01 #define SCCB_ABORT 0x02 #define SCCB_ERROR 0x04 - - #define ORION_FW_REV 3110 +#define QUEUE_DEPTH 254+1 /*1 for Normal disconnect 32 for Q'ing. */ - -#define QUEUE_DEPTH 254+1 /*1 for Normal disconnect 32 for Q'ing. */ - -#define MAX_MB_CARDS 4 /* Max. no of cards suppoerted on Mother Board */ - +#define MAX_MB_CARDS 4 /* Max. no of cards suppoerted on Mother Board */ #define MAX_SCSI_TAR 16 #define MAX_LUN 32 #define LUN_MASK 0x1f -#define SG_BUF_CNT 16 /*Number of prefetched elements. */ - -#define SG_ELEMENT_SIZE 8 /*Eight byte per element. */ +#define SG_BUF_CNT 16 /*Number of prefetched elements. */ +#define SG_ELEMENT_SIZE 8 /*Eight byte per element. */ #define RD_HARPOON(ioport) inb((u32)ioport) #define RDW_HARPOON(ioport) inw((u32)ioport) @@ -244,7 +190,6 @@ struct sccb { #define WRW_HARPOON(ioport,val) outw((u16)val, (u32)ioport) #define WR_HARP32(ioport,offset,data) outl(data, (u32)(ioport + offset)) - #define TAR_SYNC_MASK (BIT(7)+BIT(6)) #define SYNC_TRYING BIT(6) #define SYNC_SUPPORTED (BIT(7)+BIT(6)) @@ -259,7 +204,6 @@ struct sccb { #define TAR_ALLOW_DISC BIT(0) - #define EE_SYNC_MASK (BIT(0)+BIT(1)) #define EE_SYNC_5MB BIT(0) #define EE_SYNC_10MB BIT(1) @@ -267,62 +211,55 @@ struct sccb { #define EE_WIDE_SCSI BIT(7) - - - struct sccb_mgr_tar_info { - struct sccb * TarSelQ_Head; - struct sccb * TarSelQ_Tail; - unsigned char TarLUN_CA; /*Contingent Allgiance */ - unsigned char TarTagQ_Cnt; - unsigned char TarSelQ_Cnt; - unsigned char TarStatus; - unsigned char TarEEValue; - unsigned char TarSyncCtrl; - unsigned char TarReserved[2]; /* for alignment */ - unsigned char LunDiscQ_Idx[MAX_LUN]; - unsigned char TarLUNBusy[MAX_LUN]; + struct sccb *TarSelQ_Head; + struct sccb *TarSelQ_Tail; + unsigned char TarLUN_CA; /*Contingent Allgiance */ + unsigned char TarTagQ_Cnt; + unsigned char TarSelQ_Cnt; + unsigned char TarStatus; + unsigned char TarEEValue; + unsigned char TarSyncCtrl; + unsigned char TarReserved[2]; /* for alignment */ + unsigned char LunDiscQ_Idx[MAX_LUN]; + unsigned char TarLUNBusy[MAX_LUN]; }; struct nvram_info { - unsigned char niModel; /* Model No. of card */ - unsigned char niCardNo; /* Card no. */ - unsigned long niBaseAddr; /* Port Address of card */ - unsigned char niSysConf; /* Adapter Configuration byte - Byte 16 of eeprom map */ - unsigned char niScsiConf; /* SCSI Configuration byte - Byte 17 of eeprom map */ - unsigned char niScamConf; /* SCAM Configuration byte - Byte 20 of eeprom map */ - unsigned char niAdapId; /* Host Adapter ID - Byte 24 of eerpom map */ - unsigned char niSyncTbl[MAX_SCSI_TAR / 2]; /* Sync/Wide byte of targets */ - unsigned char niScamTbl[MAX_SCSI_TAR][4]; /* Compressed Scam name string of Targets */ + unsigned char niModel; /* Model No. of card */ + unsigned char niCardNo; /* Card no. */ + unsigned long niBaseAddr; /* Port Address of card */ + unsigned char niSysConf; /* Adapter Configuration byte - Byte 16 of eeprom map */ + unsigned char niScsiConf; /* SCSI Configuration byte - Byte 17 of eeprom map */ + unsigned char niScamConf; /* SCAM Configuration byte - Byte 20 of eeprom map */ + unsigned char niAdapId; /* Host Adapter ID - Byte 24 of eerpom map */ + unsigned char niSyncTbl[MAX_SCSI_TAR / 2]; /* Sync/Wide byte of targets */ + unsigned char niScamTbl[MAX_SCSI_TAR][4]; /* Compressed Scam name string of Targets */ }; - #define MODEL_LT 1 #define MODEL_DL 2 #define MODEL_LW 3 #define MODEL_DW 4 - struct sccb_card { - struct sccb * currentSCCB; - struct sccb_mgr_info * cardInfo; - - unsigned long ioPort; - - unsigned short cmdCounter; - unsigned char discQCount; - unsigned char tagQ_Lst; - unsigned char cardIndex; - unsigned char scanIndex; - unsigned char globalFlags; - unsigned char ourId; - struct nvram_info * pNvRamInfo; - struct sccb * discQ_Tbl[QUEUE_DEPTH]; - -}; + struct sccb *currentSCCB; + struct sccb_mgr_info *cardInfo; + unsigned long ioPort; + unsigned short cmdCounter; + unsigned char discQCount; + unsigned char tagQ_Lst; + unsigned char cardIndex; + unsigned char scanIndex; + unsigned char globalFlags; + unsigned char ourId; + struct nvram_info *pNvRamInfo; + struct sccb *discQ_Tbl[QUEUE_DEPTH]; + +}; #define F_TAG_STARTED 0x01 #define F_CONLUN_IO 0x02 @@ -333,12 +270,10 @@ struct sccb_card { #define F_NEW_SCCB_CMD 0x40 #define F_UPDATE_EEPROM 0x80 - #define ID_STRING_LENGTH 32 -#define TYPE_CODE0 0x63 /*Level2 Mstr (bits 7-6), */ +#define TYPE_CODE0 0x63 /*Level2 Mstr (bits 7-6), */ - -#define SLV_TYPE_CODE0 0xA3 /*Priority Bit set (bits 7-6), */ +#define SLV_TYPE_CODE0 0xA3 /*Priority Bit set (bits 7-6), */ #define ASSIGN_ID 0x00 #define SET_P_FLAG 0x01 @@ -351,23 +286,21 @@ struct sccb_card { #define MISC_CODE 0x14 #define CLR_P_FLAG 0x18 - - #define INIT_SELTD 0x01 #define LEVEL2_TAR 0x02 - -enum scam_id_st { ID0,ID1,ID2,ID3,ID4,ID5,ID6,ID7,ID8,ID9,ID10,ID11,ID12, - ID13,ID14,ID15,ID_UNUSED,ID_UNASSIGNED,ID_ASSIGNED,LEGACY, - CLR_PRIORITY,NO_ID_AVAIL }; +enum scam_id_st { ID0, ID1, ID2, ID3, ID4, ID5, ID6, ID7, ID8, ID9, ID10, ID11, + ID12, + ID13, ID14, ID15, ID_UNUSED, ID_UNASSIGNED, ID_ASSIGNED, LEGACY, + CLR_PRIORITY, NO_ID_AVAIL +}; typedef struct SCCBscam_info { - unsigned char id_string[ID_STRING_LENGTH]; - enum scam_id_st state; - -} SCCBSCAM_INFO; + unsigned char id_string[ID_STRING_LENGTH]; + enum scam_id_st state; +} SCCBSCAM_INFO; #define SCSI_REQUEST_SENSE 0x03 #define SCSI_READ 0x08 @@ -377,15 +310,10 @@ typedef struct SCCBscam_info { #define SCSI_WRITE_EXTENDED 0x2A #define SCSI_WRITE_AND_VERIFY 0x2E - - #define SSGOOD 0x00 #define SSCHECK 0x02 #define SSQ_FULL 0x28 - - - #define SMCMD_COMP 0x00 #define SMEXT 0x01 #define SMSAVE_DATA_PTR 0x02 @@ -403,26 +331,17 @@ typedef struct SCCBscam_info { #define SMIDENT 0x80 #define DISC_PRIV 0x40 - #define SMSYNC 0x01 #define SMWDTR 0x03 #define SM8BIT 0x00 #define SM16BIT 0x01 -#define SMIGNORWR 0x23 /* Ignore Wide Residue */ - - - - - - - +#define SMIGNORWR 0x23 /* Ignore Wide Residue */ #define SIX_BYTE_CMD 0x06 #define TWELVE_BYTE_CMD 0x0C #define ASYNC 0x00 -#define MAX_OFFSET 0x0F /* Maxbyteoffset for Sync Xfers */ - +#define MAX_OFFSET 0x0F /* Maxbyteoffset for Sync Xfers */ #define EEPROM_WD_CNT 256 @@ -437,7 +356,6 @@ typedef struct SCCBscam_info { #define SCAM_CONFIG 20 #define ADAPTER_SCSI_ID 24 - #define IGNORE_B_SCAN 32 #define SEND_START_ENA 34 #define DEVICE_ENABLE 36 @@ -452,478 +370,385 @@ typedef struct SCCBscam_info { #define SYNC_RATE_TBLcd 50 #define SYNC_RATE_TBLef 52 +#define EE_SCAMBASE 256 +#define SCAM_ENABLED BIT(2) +#define SCAM_LEVEL2 BIT(3) -#define EE_SCAMBASE 256 - - - - #define SCAM_ENABLED BIT(2) - #define SCAM_LEVEL2 BIT(3) - - - #define RENEGO_ENA BITW(10) - #define CONNIO_ENA BITW(11) - #define GREEN_PC_ENA BITW(12) - +#define RENEGO_ENA BITW(10) +#define CONNIO_ENA BITW(11) +#define GREEN_PC_ENA BITW(12) - #define AUTO_RATE_00 00 - #define AUTO_RATE_05 01 - #define AUTO_RATE_10 02 - #define AUTO_RATE_20 03 +#define AUTO_RATE_00 00 +#define AUTO_RATE_05 01 +#define AUTO_RATE_10 02 +#define AUTO_RATE_20 03 - #define WIDE_NEGO_BIT BIT(7) - #define DISC_ENABLE_BIT BIT(6) +#define WIDE_NEGO_BIT BIT(7) +#define DISC_ENABLE_BIT BIT(6) +#define hp_vendor_id_0 0x00 /* LSB */ +#define ORION_VEND_0 0x4B +#define hp_vendor_id_1 0x01 /* MSB */ +#define ORION_VEND_1 0x10 - #define hp_vendor_id_0 0x00 /* LSB */ - #define ORION_VEND_0 0x4B - - #define hp_vendor_id_1 0x01 /* MSB */ - #define ORION_VEND_1 0x10 +#define hp_device_id_0 0x02 /* LSB */ +#define ORION_DEV_0 0x30 - #define hp_device_id_0 0x02 /* LSB */ - #define ORION_DEV_0 0x30 - - #define hp_device_id_1 0x03 /* MSB */ - #define ORION_DEV_1 0x81 +#define hp_device_id_1 0x03 /* MSB */ +#define ORION_DEV_1 0x81 /* Sub Vendor ID and Sub Device ID only available in - Harpoon Version 2 and higher */ - - #define hp_sub_device_id_0 0x06 /* LSB */ - - - - #define hp_semaphore 0x0C - #define SCCB_MGR_ACTIVE BIT(0) - #define TICKLE_ME BIT(1) - #define SCCB_MGR_PRESENT BIT(3) - #define BIOS_IN_USE BIT(4) - - - - #define hp_sys_ctrl 0x0F - - #define STOP_CLK BIT(0) /*Turn off BusMaster Clock */ - #define DRVR_RST BIT(1) /*Firmware Reset to 80C15 chip */ - #define HALT_MACH BIT(3) /*Halt State Machine */ - #define HARD_ABORT BIT(4) /*Hard Abort */ - - - - - - - - - - #define hp_host_blk_cnt 0x13 - - #define XFER_BLK64 0x06 /* 1 1 0 64 byte per block*/ - - #define BM_THRESHOLD 0x40 /* PCI mode can only xfer 16 bytes*/ - - - - #define hp_int_mask 0x17 - - #define INT_CMD_COMPL BIT(0) /* DMA command complete */ - #define INT_EXT_STATUS BIT(1) /* Extended Status Set */ + Harpoon Version 2 and higher */ +#define hp_sub_device_id_0 0x06 /* LSB */ - #define hp_xfer_cnt_lo 0x18 - #define hp_xfer_cnt_hi 0x1A - #define hp_xfer_cmd 0x1B +#define hp_semaphore 0x0C +#define SCCB_MGR_ACTIVE BIT(0) +#define TICKLE_ME BIT(1) +#define SCCB_MGR_PRESENT BIT(3) +#define BIOS_IN_USE BIT(4) - #define XFER_HOST_DMA 0x00 /* 0 0 0 Transfer Host -> DMA */ - #define XFER_DMA_HOST 0x01 /* 0 0 1 Transfer DMA -> Host */ +#define hp_sys_ctrl 0x0F +#define STOP_CLK BIT(0) /*Turn off BusMaster Clock */ +#define DRVR_RST BIT(1) /*Firmware Reset to 80C15 chip */ +#define HALT_MACH BIT(3) /*Halt State Machine */ +#define HARD_ABORT BIT(4) /*Hard Abort */ - #define XFER_HOST_AUTO 0x00 /* 0 0 Auto Transfer Size */ +#define hp_host_blk_cnt 0x13 - #define XFER_DMA_8BIT 0x20 /* 0 1 8 BIT Transfer Size */ +#define XFER_BLK64 0x06 /* 1 1 0 64 byte per block */ - #define DISABLE_INT BIT(7) /*Do not interrupt at end of cmd. */ +#define BM_THRESHOLD 0x40 /* PCI mode can only xfer 16 bytes */ - #define HOST_WRT_CMD ((DISABLE_INT + XFER_HOST_DMA + XFER_HOST_AUTO + XFER_DMA_8BIT)) - #define HOST_RD_CMD ((DISABLE_INT + XFER_DMA_HOST + XFER_HOST_AUTO + XFER_DMA_8BIT)) +#define hp_int_mask 0x17 - #define hp_host_addr_lo 0x1C - #define hp_host_addr_hmi 0x1E +#define INT_CMD_COMPL BIT(0) /* DMA command complete */ +#define INT_EXT_STATUS BIT(1) /* Extended Status Set */ - #define hp_ee_ctrl 0x22 +#define hp_xfer_cnt_lo 0x18 +#define hp_xfer_cnt_hi 0x1A +#define hp_xfer_cmd 0x1B - #define EXT_ARB_ACK BIT(7) - #define SCSI_TERM_ENA_H BIT(6) /* SCSI high byte terminator */ - #define SEE_MS BIT(5) - #define SEE_CS BIT(3) - #define SEE_CLK BIT(2) - #define SEE_DO BIT(1) - #define SEE_DI BIT(0) +#define XFER_HOST_DMA 0x00 /* 0 0 0 Transfer Host -> DMA */ +#define XFER_DMA_HOST 0x01 /* 0 0 1 Transfer DMA -> Host */ - #define EE_READ 0x06 - #define EE_WRITE 0x05 - #define EWEN 0x04 - #define EWEN_ADDR 0x03C0 - #define EWDS 0x04 - #define EWDS_ADDR 0x0000 +#define XFER_HOST_AUTO 0x00 /* 0 0 Auto Transfer Size */ +#define XFER_DMA_8BIT 0x20 /* 0 1 8 BIT Transfer Size */ +#define DISABLE_INT BIT(7) /*Do not interrupt at end of cmd. */ +#define HOST_WRT_CMD ((DISABLE_INT + XFER_HOST_DMA + XFER_HOST_AUTO + XFER_DMA_8BIT)) +#define HOST_RD_CMD ((DISABLE_INT + XFER_DMA_HOST + XFER_HOST_AUTO + XFER_DMA_8BIT)) +#define hp_host_addr_lo 0x1C +#define hp_host_addr_hmi 0x1E +#define hp_ee_ctrl 0x22 +#define EXT_ARB_ACK BIT(7) +#define SCSI_TERM_ENA_H BIT(6) /* SCSI high byte terminator */ +#define SEE_MS BIT(5) +#define SEE_CS BIT(3) +#define SEE_CLK BIT(2) +#define SEE_DO BIT(1) +#define SEE_DI BIT(0) - #define hp_bm_ctrl 0x26 +#define EE_READ 0x06 +#define EE_WRITE 0x05 +#define EWEN 0x04 +#define EWEN_ADDR 0x03C0 +#define EWDS 0x04 +#define EWDS_ADDR 0x0000 - #define SCSI_TERM_ENA_L BIT(0) /*Enable/Disable external terminators */ - #define FLUSH_XFER_CNTR BIT(1) /*Flush transfer counter */ - #define FORCE1_XFER BIT(5) /*Always xfer one byte in byte mode */ - #define FAST_SINGLE BIT(6) /*?? */ +#define hp_bm_ctrl 0x26 - #define BMCTRL_DEFAULT (FORCE1_XFER|FAST_SINGLE|SCSI_TERM_ENA_L) +#define SCSI_TERM_ENA_L BIT(0) /*Enable/Disable external terminators */ +#define FLUSH_XFER_CNTR BIT(1) /*Flush transfer counter */ +#define FORCE1_XFER BIT(5) /*Always xfer one byte in byte mode */ +#define FAST_SINGLE BIT(6) /*?? */ +#define BMCTRL_DEFAULT (FORCE1_XFER|FAST_SINGLE|SCSI_TERM_ENA_L) - #define hp_sg_addr 0x28 - #define hp_page_ctrl 0x29 +#define hp_sg_addr 0x28 +#define hp_page_ctrl 0x29 - #define SCATTER_EN BIT(0) - #define SGRAM_ARAM BIT(1) - #define G_INT_DISABLE BIT(3) /* Enable/Disable all Interrupts */ - #define NARROW_SCSI_CARD BIT(4) /* NARROW/WIDE SCSI config pin */ +#define SCATTER_EN BIT(0) +#define SGRAM_ARAM BIT(1) +#define G_INT_DISABLE BIT(3) /* Enable/Disable all Interrupts */ +#define NARROW_SCSI_CARD BIT(4) /* NARROW/WIDE SCSI config pin */ +#define hp_pci_stat_cfg 0x2D +#define REC_MASTER_ABORT BIT(5) /*received Master abort */ +#define hp_rev_num 0x33 - #define hp_pci_stat_cfg 0x2D +#define hp_stack_data 0x34 +#define hp_stack_addr 0x35 - #define REC_MASTER_ABORT BIT(5) /*received Master abort */ +#define hp_ext_status 0x36 - - - - - - - - #define hp_rev_num 0x33 - - - #define hp_stack_data 0x34 - #define hp_stack_addr 0x35 - - #define hp_ext_status 0x36 - - #define BM_FORCE_OFF BIT(0) /*Bus Master is forced to get off */ - #define PCI_TGT_ABORT BIT(0) /*PCI bus master transaction aborted */ - #define PCI_DEV_TMOUT BIT(1) /*PCI Device Time out */ - #define CMD_ABORTED BIT(4) /*Command aborted */ - #define BM_PARITY_ERR BIT(5) /*parity error on data received */ - #define PIO_OVERRUN BIT(6) /*Slave data overrun */ - #define BM_CMD_BUSY BIT(7) /*Bus master transfer command busy */ - #define BAD_EXT_STATUS (BM_FORCE_OFF | PCI_DEV_TMOUT | CMD_ABORTED | \ +#define BM_FORCE_OFF BIT(0) /*Bus Master is forced to get off */ +#define PCI_TGT_ABORT BIT(0) /*PCI bus master transaction aborted */ +#define PCI_DEV_TMOUT BIT(1) /*PCI Device Time out */ +#define CMD_ABORTED BIT(4) /*Command aborted */ +#define BM_PARITY_ERR BIT(5) /*parity error on data received */ +#define PIO_OVERRUN BIT(6) /*Slave data overrun */ +#define BM_CMD_BUSY BIT(7) /*Bus master transfer command busy */ +#define BAD_EXT_STATUS (BM_FORCE_OFF | PCI_DEV_TMOUT | CMD_ABORTED | \ BM_PARITY_ERR | PIO_OVERRUN) - #define hp_int_status 0x37 - - #define EXT_STATUS_ON BIT(1) /*Extended status is valid */ - #define SCSI_INTERRUPT BIT(2) /*Global indication of a SCSI int. */ - #define INT_ASSERTED BIT(5) /* */ - - - #define hp_fifo_cnt 0x38 - - - - - #define hp_intena 0x40 - - #define RESET BITW(7) - #define PROG_HLT BITW(6) - #define PARITY BITW(5) - #define FIFO BITW(4) - #define SEL BITW(3) - #define SCAM_SEL BITW(2) - #define RSEL BITW(1) - #define TIMEOUT BITW(0) - #define BUS_FREE BITW(15) - #define XFER_CNT_0 BITW(14) - #define PHASE BITW(13) - #define IUNKWN BITW(12) - #define ICMD_COMP BITW(11) - #define ITICKLE BITW(10) - #define IDO_STRT BITW(9) - #define ITAR_DISC BITW(8) - #define AUTO_INT (BITW(12)+BITW(11)+BITW(10)+BITW(9)+BITW(8)) - #define CLR_ALL_INT 0xFFFF - #define CLR_ALL_INT_1 0xFF00 - - #define hp_intstat 0x42 - - #define hp_scsisig 0x44 - - #define SCSI_SEL BIT(7) - #define SCSI_BSY BIT(6) - #define SCSI_REQ BIT(5) - #define SCSI_ACK BIT(4) - #define SCSI_ATN BIT(3) - #define SCSI_CD BIT(2) - #define SCSI_MSG BIT(1) - #define SCSI_IOBIT BIT(0) - - #define S_SCSI_PHZ (BIT(2)+BIT(1)+BIT(0)) - #define S_MSGO_PH (BIT(2)+BIT(1) ) - #define S_MSGI_PH (BIT(2)+BIT(1)+BIT(0)) - #define S_DATAI_PH ( BIT(0)) - #define S_DATAO_PH 0x00 - #define S_ILL_PH ( BIT(1) ) - - #define hp_scsictrl_0 0x45 +#define hp_int_status 0x37 + +#define EXT_STATUS_ON BIT(1) /*Extended status is valid */ +#define SCSI_INTERRUPT BIT(2) /*Global indication of a SCSI int. */ +#define INT_ASSERTED BIT(5) /* */ + +#define hp_fifo_cnt 0x38 + +#define hp_intena 0x40 + +#define RESET BITW(7) +#define PROG_HLT BITW(6) +#define PARITY BITW(5) +#define FIFO BITW(4) +#define SEL BITW(3) +#define SCAM_SEL BITW(2) +#define RSEL BITW(1) +#define TIMEOUT BITW(0) +#define BUS_FREE BITW(15) +#define XFER_CNT_0 BITW(14) +#define PHASE BITW(13) +#define IUNKWN BITW(12) +#define ICMD_COMP BITW(11) +#define ITICKLE BITW(10) +#define IDO_STRT BITW(9) +#define ITAR_DISC BITW(8) +#define AUTO_INT (BITW(12)+BITW(11)+BITW(10)+BITW(9)+BITW(8)) +#define CLR_ALL_INT 0xFFFF +#define CLR_ALL_INT_1 0xFF00 + +#define hp_intstat 0x42 + +#define hp_scsisig 0x44 + +#define SCSI_SEL BIT(7) +#define SCSI_BSY BIT(6) +#define SCSI_REQ BIT(5) +#define SCSI_ACK BIT(4) +#define SCSI_ATN BIT(3) +#define SCSI_CD BIT(2) +#define SCSI_MSG BIT(1) +#define SCSI_IOBIT BIT(0) + +#define S_SCSI_PHZ (BIT(2)+BIT(1)+BIT(0)) +#define S_MSGO_PH (BIT(2)+BIT(1) ) +#define S_MSGI_PH (BIT(2)+BIT(1)+BIT(0)) +#define S_DATAI_PH ( BIT(0)) +#define S_DATAO_PH 0x00 +#define S_ILL_PH ( BIT(1) ) + +#define hp_scsictrl_0 0x45 + +#define SEL_TAR BIT(6) +#define ENA_ATN BIT(4) +#define ENA_RESEL BIT(2) +#define SCSI_RST BIT(1) +#define ENA_SCAM_SEL BIT(0) - #define SEL_TAR BIT(6) - #define ENA_ATN BIT(4) - #define ENA_RESEL BIT(2) - #define SCSI_RST BIT(1) - #define ENA_SCAM_SEL BIT(0) +#define hp_portctrl_0 0x46 +#define SCSI_PORT BIT(7) +#define SCSI_INBIT BIT(6) +#define DMA_PORT BIT(5) +#define DMA_RD BIT(4) +#define HOST_PORT BIT(3) +#define HOST_WRT BIT(2) +#define SCSI_BUS_EN BIT(1) +#define START_TO BIT(0) +#define hp_scsireset 0x47 - #define hp_portctrl_0 0x46 +#define SCSI_INI BIT(6) +#define SCAM_EN BIT(5) +#define DMA_RESET BIT(3) +#define HPSCSI_RESET BIT(2) +#define PROG_RESET BIT(1) +#define FIFO_CLR BIT(0) - #define SCSI_PORT BIT(7) - #define SCSI_INBIT BIT(6) - #define DMA_PORT BIT(5) - #define DMA_RD BIT(4) - #define HOST_PORT BIT(3) - #define HOST_WRT BIT(2) - #define SCSI_BUS_EN BIT(1) - #define START_TO BIT(0) +#define hp_xfercnt_0 0x48 +#define hp_xfercnt_2 0x4A - #define hp_scsireset 0x47 +#define hp_fifodata_0 0x4C +#define hp_addstat 0x4E - #define SCSI_INI BIT(6) - #define SCAM_EN BIT(5) - #define DMA_RESET BIT(3) - #define HPSCSI_RESET BIT(2) - #define PROG_RESET BIT(1) - #define FIFO_CLR BIT(0) +#define SCAM_TIMER BIT(7) +#define SCSI_MODE8 BIT(3) +#define SCSI_PAR_ERR BIT(0) - #define hp_xfercnt_0 0x48 - #define hp_xfercnt_2 0x4A +#define hp_prgmcnt_0 0x4F - #define hp_fifodata_0 0x4C - #define hp_addstat 0x4E +#define hp_selfid_0 0x50 +#define hp_selfid_1 0x51 +#define hp_arb_id 0x52 - #define SCAM_TIMER BIT(7) - #define SCSI_MODE8 BIT(3) - #define SCSI_PAR_ERR BIT(0) +#define hp_select_id 0x53 - #define hp_prgmcnt_0 0x4F +#define hp_synctarg_base 0x54 +#define hp_synctarg_12 0x54 +#define hp_synctarg_13 0x55 +#define hp_synctarg_14 0x56 +#define hp_synctarg_15 0x57 +#define hp_synctarg_8 0x58 +#define hp_synctarg_9 0x59 +#define hp_synctarg_10 0x5A +#define hp_synctarg_11 0x5B - #define hp_selfid_0 0x50 - #define hp_selfid_1 0x51 - #define hp_arb_id 0x52 +#define hp_synctarg_4 0x5C +#define hp_synctarg_5 0x5D +#define hp_synctarg_6 0x5E +#define hp_synctarg_7 0x5F +#define hp_synctarg_0 0x60 +#define hp_synctarg_1 0x61 +#define hp_synctarg_2 0x62 +#define hp_synctarg_3 0x63 - #define hp_select_id 0x53 +#define NARROW_SCSI BIT(4) +#define DEFAULT_OFFSET 0x0F +#define hp_autostart_0 0x64 +#define hp_autostart_1 0x65 +#define hp_autostart_3 0x67 - #define hp_synctarg_base 0x54 - #define hp_synctarg_12 0x54 - #define hp_synctarg_13 0x55 - #define hp_synctarg_14 0x56 - #define hp_synctarg_15 0x57 +#define AUTO_IMMED BIT(5) +#define SELECT BIT(6) +#define END_DATA (BIT(7)+BIT(6)) - #define hp_synctarg_8 0x58 - #define hp_synctarg_9 0x59 - #define hp_synctarg_10 0x5A - #define hp_synctarg_11 0x5B +#define hp_gp_reg_0 0x68 +#define hp_gp_reg_1 0x69 +#define hp_gp_reg_3 0x6B - #define hp_synctarg_4 0x5C - #define hp_synctarg_5 0x5D - #define hp_synctarg_6 0x5E - #define hp_synctarg_7 0x5F +#define hp_seltimeout 0x6C - #define hp_synctarg_0 0x60 - #define hp_synctarg_1 0x61 - #define hp_synctarg_2 0x62 - #define hp_synctarg_3 0x63 +#define TO_4ms 0x67 /* 3.9959ms */ - #define NARROW_SCSI BIT(4) - #define DEFAULT_OFFSET 0x0F +#define TO_5ms 0x03 /* 4.9152ms */ +#define TO_10ms 0x07 /* 11.xxxms */ +#define TO_250ms 0x99 /* 250.68ms */ +#define TO_290ms 0xB1 /* 289.99ms */ - #define hp_autostart_0 0x64 - #define hp_autostart_1 0x65 - #define hp_autostart_3 0x67 +#define hp_clkctrl_0 0x6D +#define PWR_DWN BIT(6) +#define ACTdeassert BIT(4) +#define CLK_40MHZ (BIT(1) + BIT(0)) +#define CLKCTRL_DEFAULT (ACTdeassert | CLK_40MHZ) - #define AUTO_IMMED BIT(5) - #define SELECT BIT(6) - #define END_DATA (BIT(7)+BIT(6)) +#define hp_fiforead 0x6E +#define hp_fifowrite 0x6F - #define hp_gp_reg_0 0x68 - #define hp_gp_reg_1 0x69 - #define hp_gp_reg_3 0x6B +#define hp_offsetctr 0x70 +#define hp_xferstat 0x71 - #define hp_seltimeout 0x6C +#define FIFO_EMPTY BIT(6) +#define hp_portctrl_1 0x72 - #define TO_4ms 0x67 /* 3.9959ms */ +#define CHK_SCSI_P BIT(3) +#define HOST_MODE8 BIT(0) - #define TO_5ms 0x03 /* 4.9152ms */ - #define TO_10ms 0x07 /* 11.xxxms */ - #define TO_250ms 0x99 /* 250.68ms */ - #define TO_290ms 0xB1 /* 289.99ms */ +#define hp_xfer_pad 0x73 - #define hp_clkctrl_0 0x6D +#define ID_UNLOCK BIT(3) - #define PWR_DWN BIT(6) - #define ACTdeassert BIT(4) - #define CLK_40MHZ (BIT(1) + BIT(0)) +#define hp_scsidata_0 0x74 |