1 /* $Id: advansys.h,v 1.10 1996/01/15 04:51:06 bobf Exp bobf $ */
2 /*
3 * advansys.h - Linux Host Driver for AdvanSys SCSI Adapters
4 *
5 * Copyright (c) 1995-1996 Advanced System Products, Inc.
6 *
7 * This driver may be modified and freely distributed provided that
8 * the above copyright message and this comment are included in the
9 * distribution. The latest version of this driver is available at
10 * the AdvanSys FTP and BBS sites listed below.
11 *
12 * Please send questions, comments, and bug reports to:
13 * bobf@advansys.com (Bob Frey)
14 */
15
16 #ifndef _ADVANSYS_H
17 #define _ADVANSYS_H
18
19 /* The driver can be used in Linux 1.2.X or 1.3.X. */
20 #if !defined(LINUX_1_2) && !defined(LINUX_1_3)
21 #ifndef LINUX_VERSION_CODE
22 #include <linux/version.h>
23 #endif /* LINUX_VERSION_CODE */
24 #if LINUX_VERSION_CODE > 65536 + 3 * 256
25 #define LINUX_1_3
26 #else /* LINUX_VERSION_CODE */
27 #define LINUX_1_2
28 #endif /* LINUX_VERSION_CODE */
29 #endif /* !defined(LINUX_1_2) && !defined(LINUX_1_3) */
30
31 /*
32 * Scsi_Host_Template function prototypes.
33 */
34 int advansys_detect(Scsi_Host_Template *);
35 int advansys_release(struct Scsi_Host *);
36 const char *advansys_info(struct Scsi_Host *);
37 int advansys_command(Scsi_Cmnd *);
38 int advansys_queuecommand(Scsi_Cmnd *, void (* done)(Scsi_Cmnd *));
39 int advansys_abort(Scsi_Cmnd *);
40 int advansys_reset(Scsi_Cmnd *);
41 #ifdef LINUX_1_2
42 int advansys_biosparam(Disk *, int, int[]);
43 #else /* LINUX_1_3 */
44 int advansys_biosparam(Disk *, kdev_t, int[]);
45 extern struct proc_dir_entry proc_scsi_advansys;
46 int advansys_proc_info(char *, char **, off_t, int, int, int);
47 #endif /* LINUX_1_3 */
48
49 /* init/main.c setup function */
50 void advansys_setup(char *, int *);
51
52 /*
53 * AdvanSys Host Driver Scsi_Host_Template (struct SHT) from hosts.h.
54 */
55 #ifdef LINUX_1_2
56 #define ADVANSYS { \
57 NULL, /* struct SHT *next */ \
58 NULL, /* int *usage_count */ \
59 "advansys", /* char *name */ \
60 advansys_detect, /* int (*detect)(struct SHT *) */ \
61 advansys_release, /* int (*release)(struct Scsi_Host *) */ \
62 advansys_info, /* const char *(*info)(struct Scsi_Host *) */ \
63 advansys_command, /* int (*command)(Scsi_Cmnd *) */ \
64 advansys_queuecommand, \
65 /* int (*queuecommand)(Scsi_Cmnd *, void (*done)(Scsi_Cmnd *)) */ \
66 advansys_abort, /* int (*abort)(Scsi_Cmnd *) */ \
67 advansys_reset, /* int (*reset)(Scsi_Cmnd *) */ \
68 NULL, /* int (*slave_attach)(int, int) */ \
69 advansys_biosparam, /* int (* bios_param)(Disk *, int, int []) */ \
70 /* \
71 * The following fields are set per adapter in advansys_detect(). \
72 */ \
73 0, /* int can_queue */ \
74 0, /* int this_id */ \
75 0, /* short unsigned int sg_tablesize */ \
76 0, /* short cmd_per_lun */ \
77 0, /* unsigned char present */ \
78 /* \
79 * Because the driver may control an ISA adapter 'unchecked_isa_dma' \
80 * must be set. The flag will be cleared in advansys_detect for non-ISA \
81 * adapters. Refer to the comment in scsi_module.c for more information. \
82 */ \
83 1, /* unsigned unchecked_isa_dma:1 */ \
84 /* \
85 * All adapters controlled by this driver are capable of large \
86 * scatter-gather lists. This apparently obviates any performance
87 * gain provided by setting 'use_clustering'. \
88 */ \
89 DISABLE_CLUSTERING, /* unsigned use_clustering:1 */ \
90 }
91 #else /* LINUX_1_3 */
92 #define ADVANSYS { \
93 NULL, /* struct SHT *next */ \
94 NULL, /* long *usage_count */ \
95 &proc_scsi_advansys, /* struct proc_dir_entry *proc_dir */ \
96 advansys_proc_info, \
97 /* int (*proc_info)(char *, char **, off_t, int, int, int) */ \
98 "advansys", /* const char *name */ \
99 advansys_detect, /* int (*detect)(struct SHT *) */ \
100 advansys_release, /* int (*release)(struct Scsi_Host *) */ \
101 advansys_info, /* const char *(*info)(struct Scsi_Host *) */ \
102 advansys_command, /* int (*command)(Scsi_Cmnd *) */ \
103 advansys_queuecommand, \
104 /* int (*queuecommand)(Scsi_Cmnd *, void (*done)(Scsi_Cmnd *)) */ \
105 advansys_abort, /* int (*abort)(Scsi_Cmnd *) */ \
106 advansys_reset, /* int (*reset)(Scsi_Cmnd *) */ \
107 NULL, /* int (*slave_attach)(int, int) */ \
108 advansys_biosparam, /* int (* bios_param)(Disk *, kdev_t, int []) */ \
109 /* \
110 * The following fields are set per adapter in advansys_detect(). \
111 */ \
112 0, /* int can_queue */ \
113 0, /* int this_id */ \
114 0, /* short unsigned int sg_tablesize */ \
115 0, /* short cmd_per_lun */ \
116 0, /* unsigned char present */ \
117 /* \
118 * Because the driver may control an ISA adapter 'unchecked_isa_dma' \
119 * must be set. The flag will be cleared in advansys_detect for non-ISA \
120 * adapters. Refer to the comment in scsi_module.c for more information. \
121 */ \
122 1, /* unsigned unchecked_isa_dma:1 */ \
123 /* \
124 * All adapters controlled by this driver are capable of large \
125 * scatter-gather lists. This apparently obviates any performance
126 * gain provided by setting 'use_clustering'. \
127 */ \
128 DISABLE_CLUSTERING, /* unsigned use_clustering:1 */ \
129 }
130 #endif /* LINUX_1_3 */
131 #endif /* _ADVANSYS_H */