1 #ifndef A3000_H 2 #define A3000_H 3 4 /* $Id: a3000.h,v 1.4 1997/01/19 23:07:10 davem Exp $ 5 * 6 * Header file for the Amiga 3000 built-in SCSI controller for Linux 7 * 8 * Written and (C) 1993, Hamish Macdonald, see a3000.c for more info 9 * 10 */ 11 12 #include <linux/types.h> 13 14 int a3000_detect(Scsi_Host_Template *); 15 int a3000_release(struct Scsi_Host *); 16 const char *wd33c93_info(void); 17 int wd33c93_queuecommand(Scsi_Cmnd *, void (*done)(Scsi_Cmnd *)); 18 int wd33c93_abort(Scsi_Cmnd *); 19 int 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 _A3000_SCSI { proc_name: "A3000", \ 34 proc_info: NULL, \ 35 name: "Amiga 3000 built-in SCSI", \ 36 detect: a3000_detect, \ 37 release: a3000_release, \ 38 queuecommand: wd33c93_queuecommand, \ 39 abort: wd33c93_abort, \ 40 reset: wd33c93_reset, \ 41 can_queue: CAN_QUEUE, \ 42 this_id: 7, \ 43 sg_tablesize: SG_ALL, \ 44 cmd_per_lun: CMD_PER_LUN, \ 45 use_clustering: ENABLE_CLUSTERING } 46 47 /* 48 * if the transfer address ANDed with this results in a non-zero 49 * result, then we can't use DMA. 50 */ 51 #define A3000_XFER_MASK (0x00000003) 52 53 typedef struct { 54 unsigned char pad1[2]; 55 volatile unsigned short DAWR; 56 volatile unsigned int WTC; 57 unsigned char pad2[2]; 58 volatile unsigned short CNTR; 59 volatile unsigned long ACR; 60 unsigned char pad3[2]; 61 volatile unsigned short ST_DMA; 62 unsigned char pad4[2]; 63 volatile unsigned short FLUSH; 64 unsigned char pad5[2]; 65 volatile unsigned short CINT; 66 unsigned char pad6[2]; 67 volatile unsigned short ISTR; 68 unsigned char pad7[30]; 69 volatile unsigned short SP_DMA; 70 unsigned char pad8; 71 volatile unsigned char SASR; 72 unsigned char pad9; 73 volatile unsigned char SCMD; 74 } a3000_scsiregs; 75 76 #define DAWR_A3000 (3) 77 78 /* CNTR bits. */ 79 #define CNTR_TCEN (1<<5) 80 #define CNTR_PREST (1<<4) 81 #define CNTR_PDMD (1<<3) 82 #define CNTR_INTEN (1<<2) 83 #define CNTR_DDIR (1<<1) 84 #define CNTR_IO_DX (1<<0) 85 86 /* ISTR bits. */ 87 #define ISTR_INTX (1<<8) 88 #define ISTR_INT_F (1<<7) 89 #define ISTR_INTS (1<<6) 90 #define ISTR_E_INT (1<<5) 91 #define ISTR_INT_P (1<<4) 92 #define ISTR_UE_INT (1<<3) 93 #define ISTR_OE_INT (1<<2) 94 #define ISTR_FF_FLG (1<<1) 95 #define ISTR_FE_FLG (1<<0) 96 97 #endif /* A3000_H */ 98