|
|
1.1 root 1: /* $Id: advansys.h,v 1.1 1999/04/26 05:54:08 tb Exp $ */
2:
3: /*
4: * advansys.h - Linux Host Driver for AdvanSys SCSI Adapters
5: *
6: * Copyright (c) 1995-1998 Advanced System Products, Inc.
7: * All Rights Reserved.
8: *
9: * Redistribution and use in source and binary forms, with or without
10: * modification, are permitted provided that redistributions of source
11: * code retain the above copyright notice and this comment without
12: * modification.
13: *
14: * There is an AdvanSys Linux WWW page at:
15: * http://www.advansys.com/linux.html
16: *
17: * The latest version of the AdvanSys driver is available at:
18: * ftp://ftp.advansys.com/pub/linux
19: *
20: * Please send questions, comments, bug reports to:
21: * [email protected] (Bob Frey)
22: */
23:
24: #ifndef _ADVANSYS_H
25: #define _ADVANSYS_H
26:
27: /* Convert Linux Version, Patch-level, Sub-level to LINUX_VERSION_CODE. */
28: #define ASC_LINUX_VERSION(V, P, S) (((V) * 65536) + ((P) * 256) + (S))
29:
30: #ifndef LINUX_VERSION_CODE
31: #include <linux/version.h>
32: #endif /* LINUX_VERSION_CODE */
33:
34: /*
35: * Scsi_Host_Template function prototypes.
36: */
37: int advansys_detect(Scsi_Host_Template *);
38: int advansys_release(struct Scsi_Host *);
39: const char *advansys_info(struct Scsi_Host *);
40: int advansys_command(Scsi_Cmnd *);
41: int advansys_queuecommand(Scsi_Cmnd *, void (* done)(Scsi_Cmnd *));
42: int advansys_abort(Scsi_Cmnd *);
43: #if LINUX_VERSION_CODE < ASC_LINUX_VERSION(1,3,89)
44: int advansys_reset(Scsi_Cmnd *);
45: #else /* version >= v1.3.89 */
46: int advansys_reset(Scsi_Cmnd *, unsigned int);
47: #endif /* version >= v1.3.89 */
48: #if LINUX_VERSION_CODE < ASC_LINUX_VERSION(1,3,0)
49: int advansys_biosparam(Disk *, int, int[]);
50: #else /* version >= v1.3.0 */
51: int advansys_biosparam(Disk *, kdev_t, int[]);
52: extern struct proc_dir_entry proc_scsi_advansys;
53: int advansys_proc_info(char *, char **, off_t, int, int, int);
54: #endif /* version >= v1.3.0 */
55:
56: /* init/main.c setup function */
57: void advansys_setup(char *, int *);
58:
59: /*
60: * AdvanSys Host Driver Scsi_Host_Template (struct SHT) from hosts.h.
61: */
62: #if LINUX_VERSION_CODE < ASC_LINUX_VERSION(1,3,0)
63: #define ADVANSYS { \
64: NULL, /* struct SHT *next */ \
65: NULL, /* int *usage_count */ \
66: "advansys", /* char *name */ \
67: advansys_detect, /* int (*detect)(struct SHT *) */ \
68: advansys_release, /* int (*release)(struct Scsi_Host *) */ \
69: advansys_info, /* const char *(*info)(struct Scsi_Host *) */ \
70: advansys_command, /* int (*command)(Scsi_Cmnd *) */ \
71: advansys_queuecommand, \
72: /* int (*queuecommand)(Scsi_Cmnd *, void (*done)(Scsi_Cmnd *)) */ \
73: advansys_abort, /* int (*abort)(Scsi_Cmnd *) */ \
74: advansys_reset, /* int (*reset)(Scsi_Cmnd *) */ \
75: NULL, /* int (*slave_attach)(int, int) */ \
76: advansys_biosparam, /* int (* bios_param)(Disk *, int, int []) */ \
77: /* \
78: * The following fields are set per adapter in advansys_detect(). \
79: */ \
80: 0, /* int can_queue */ \
81: 0, /* int this_id */ \
82: 0, /* short unsigned int sg_tablesize */ \
83: 0, /* short cmd_per_lun */ \
84: 0, /* unsigned char present */ \
85: /* \
86: * Because the driver may control an ISA adapter 'unchecked_isa_dma' \
87: * must be set. The flag will be cleared in advansys_detect for non-ISA \
88: * adapters. Refer to the comment in scsi_module.c for more information. \
89: */ \
90: 1, /* unsigned unchecked_isa_dma:1 */ \
91: /* \
92: * All adapters controlled by this driver are capable of large \
93: * scatter-gather lists. According to the mid-level SCSI documentation \
94: * this obviates any performance gain provided by setting \
95: * 'use_clustering'. But empirically while CPU utilization is increased \
96: * by enabling clustering, I/O throughput increases as well. \
97: */ \
98: ENABLE_CLUSTERING, /* unsigned use_clustering:1 */ \
99: }
100: #elif LINUX_VERSION_CODE < ASC_LINUX_VERSION(2,1,75)
101: #define ADVANSYS { \
102: NULL, /* struct SHT *next */ \
103: NULL, \
104: /* version < v2.1.23 long *usage_count */ \
105: /* version >= v2.1.23 struct module * */ \
106: &proc_scsi_advansys, /* struct proc_dir_entry *proc_dir */ \
107: advansys_proc_info, \
108: /* int (*proc_info)(char *, char **, off_t, int, int, int) */ \
109: "advansys", /* const char *name */ \
110: advansys_detect, /* int (*detect)(struct SHT *) */ \
111: advansys_release, /* int (*release)(struct Scsi_Host *) */ \
112: advansys_info, /* const char *(*info)(struct Scsi_Host *) */ \
113: advansys_command, /* int (*command)(Scsi_Cmnd *) */ \
114: advansys_queuecommand, \
115: /* int (*queuecommand)(Scsi_Cmnd *, void (*done)(Scsi_Cmnd *)) */ \
116: advansys_abort, /* int (*abort)(Scsi_Cmnd *) */ \
117: advansys_reset, \
118: /* version < v1.3.89 int (*reset)(Scsi_Cmnd *) */ \
119: /* version >= v1.3.89 int (*reset)(Scsi_Cmnd *, unsigned int) */ \
120: NULL, /* int (*slave_attach)(int, int) */ \
121: advansys_biosparam, /* int (* bios_param)(Disk *, kdev_t, int []) */ \
122: /* \
123: * The following fields are set per adapter in advansys_detect(). \
124: */ \
125: 0, /* int can_queue */ \
126: 0, /* int this_id */ \
127: 0, /* short unsigned int sg_tablesize */ \
128: 0, /* short cmd_per_lun */ \
129: 0, /* unsigned char present */ \
130: /* \
131: * Because the driver may control an ISA adapter 'unchecked_isa_dma' \
132: * must be set. The flag will be cleared in advansys_detect for non-ISA \
133: * adapters. Refer to the comment in scsi_module.c for more information. \
134: */ \
135: 1, /* unsigned unchecked_isa_dma:1 */ \
136: /* \
137: * All adapters controlled by this driver are capable of large \
138: * scatter-gather lists. According to the mid-level SCSI documentation \
139: * this obviates any performance gain provided by setting \
140: * 'use_clustering'. But empirically while CPU utilization is increased \
141: * by enabling clustering, I/O throughput increases as well. \
142: */ \
143: ENABLE_CLUSTERING, /* unsigned use_clustering:1 */ \
144: }
145: #else /* version >= v2.1.75 */
146: #define ADVANSYS { \
147: proc_dir: &proc_scsi_advansys, \
148: proc_info: advansys_proc_info, \
149: name: "advansys", \
150: detect: advansys_detect, \
151: release: advansys_release, \
152: info: advansys_info, \
153: command: advansys_command, \
154: queuecommand: advansys_queuecommand, \
155: abort: advansys_abort, \
156: reset: advansys_reset, \
157: bios_param: advansys_biosparam, \
158: /* \
159: * Because the driver may control an ISA adapter 'unchecked_isa_dma' \
160: * must be set. The flag will be cleared in advansys_detect for non-ISA \
161: * adapters. Refer to the comment in scsi_module.c for more information. \
162: */ \
163: unchecked_isa_dma: 1, \
164: /* \
165: * All adapters controlled by this driver are capable of large \
166: * scatter-gather lists. According to the mid-level SCSI documentation \
167: * this obviates any performance gain provided by setting \
168: * 'use_clustering'. But empirically while CPU utilization is increased \
169: * by enabling clustering, I/O throughput increases as well. \
170: */ \
171: use_clustering: ENABLE_CLUSTERING, \
172: }
173: #endif /* version >= v2.1.75 */
174: #endif /* _ADVANSYS_H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.