1#ifndef A2091_H 2#define A2091_H 3 4/* $Id: a2091.h,v 1.1.1.1 2008/10/15 03:26:49 james26_jang Exp $ 5 * 6 * Header file for the Commodore A2091 Zorro II SCSI controller for Linux 7 * 8 * Written and (C) 1993, Hamish Macdonald, see a2091.c for more info 9 * 10 */ 11 12#include <linux/types.h> 13 14int a2091_detect(Scsi_Host_Template *); 15int a2091_release(struct Scsi_Host *); 16const char *wd33c93_info(void); 17int wd33c93_queuecommand(Scsi_Cmnd *, void (*done)(Scsi_Cmnd *)); 18int wd33c93_abort(Scsi_Cmnd *); 19int wd33c93_reset(Scsi_Cmnd *, unsigned int); 20 21#ifndef NULL 22#define NULL 0 23#endif 24 25#ifndef CMD_PER_LUN 26#define CMD_PER_LUN 2 27#endif 28 29#ifndef CAN_QUEUE 30#define CAN_QUEUE 16 31#endif 32 33#define A2091_SCSI { proc_name: "A2901", \ 34 name: "Commodore A2091/A590 SCSI", \ 35 detect: a2091_detect, \ 36 release: a2091_release, \ 37 queuecommand: wd33c93_queuecommand, \ 38 abort: wd33c93_abort, \ 39 reset: wd33c93_reset, \ 40 can_queue: CAN_QUEUE, \ 41 this_id: 7, \ 42 sg_tablesize: SG_ALL, \ 43 cmd_per_lun: CMD_PER_LUN, \ 44 use_clustering: DISABLE_CLUSTERING } 45 46/* 47 * if the transfer address ANDed with this results in a non-zero 48 * result, then we can't use DMA. 49 */ 50#define A2091_XFER_MASK (0xff000001) 51 52typedef struct { 53 unsigned char pad1[64]; 54 volatile unsigned short ISTR; 55 volatile unsigned short CNTR; 56 unsigned char pad2[60]; 57 volatile unsigned int WTC; 58 volatile unsigned long ACR; 59 unsigned char pad3[6]; 60 volatile unsigned short DAWR; 61 unsigned char pad4; 62 volatile unsigned char SASR; 63 unsigned char pad5; 64 volatile unsigned char SCMD; 65 unsigned char pad6[76]; 66 volatile unsigned short ST_DMA; 67 volatile unsigned short SP_DMA; 68 volatile unsigned short CINT; 69 unsigned char pad7[2]; 70 volatile unsigned short FLUSH; 71} a2091_scsiregs; 72 73#define DAWR_A2091 (3) 74 75/* CNTR bits. */ 76#define CNTR_TCEN (1<<7) 77#define CNTR_PREST (1<<6) 78#define CNTR_PDMD (1<<5) 79#define CNTR_INTEN (1<<4) 80#define CNTR_DDIR (1<<3) 81 82/* ISTR bits. */ 83#define ISTR_INTX (1<<8) 84#define ISTR_INT_F (1<<7) 85#define ISTR_INTS (1<<6) 86#define ISTR_E_INT (1<<5) 87#define ISTR_INT_P (1<<4) 88#define ISTR_UE_INT (1<<3) 89#define ISTR_OE_INT (1<<2) 90#define ISTR_FF_FLG (1<<1) 91#define ISTR_FE_FLG (1<<0) 92 93#endif /* A2091_H */ 94