]>
Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | #ifndef _FTAPE_H |
2 | #define _FTAPE_H | |
3 | ||
4 | /* | |
5 | * Copyright (C) 1994-1996 Bas Laarhoven, | |
6 | * (C) 1996-1997 Claus-Justus Heine. | |
7 | ||
8 | This program is free software; you can redistribute it and/or modify | |
9 | it under the terms of the GNU General Public License as published by | |
10 | the Free Software Foundation; either version 2, or (at your option) | |
11 | any later version. | |
12 | ||
13 | This program is distributed in the hope that it will be useful, | |
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | GNU General Public License for more details. | |
17 | ||
18 | You should have received a copy of the GNU General Public License | |
19 | along with this program; see the file COPYING. If not, write to | |
20 | the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. | |
21 | ||
22 | * | |
23 | * $Source: /homes/cvs/ftape-stacked/include/linux/ftape.h,v $ | |
24 | * $Revision: 1.17.6.4 $ | |
25 | * $Date: 1997/11/25 01:52:54 $ | |
26 | * | |
27 | * This file contains global definitions, typedefs and macro's | |
28 | * for the QIC-40/80/3010/3020 floppy-tape driver for Linux. | |
29 | */ | |
30 | ||
31 | #define FTAPE_VERSION "ftape v3.04d 25/11/97" | |
32 | ||
33 | #ifdef __KERNEL__ | |
34 | #include <linux/interrupt.h> | |
35 | #include <linux/mm.h> | |
36 | #endif | |
37 | #include <linux/types.h> | |
38 | #include <linux/config.h> | |
39 | #include <linux/mtio.h> | |
40 | ||
41 | #define FT_SECTOR(x) (x+1) /* sector offset into real sector */ | |
42 | #define FT_SECTOR_SIZE 1024 | |
43 | #define FT_SECTORS_PER_SEGMENT 32 | |
44 | #define FT_ECC_SECTORS 3 | |
45 | #define FT_SEGMENT_SIZE ((FT_SECTORS_PER_SEGMENT - FT_ECC_SECTORS) * FT_SECTOR_SIZE) | |
46 | #define FT_BUFF_SIZE (FT_SECTORS_PER_SEGMENT * FT_SECTOR_SIZE) | |
47 | ||
48 | /* | |
49 | * bits of the minor device number that define drive selection | |
50 | * methods. Could be used one day to access multiple tape | |
51 | * drives on the same controller. | |
52 | */ | |
53 | #define FTAPE_SEL_A 0 | |
54 | #define FTAPE_SEL_B 1 | |
55 | #define FTAPE_SEL_C 2 | |
56 | #define FTAPE_SEL_D 3 | |
57 | #define FTAPE_SEL_MASK 3 | |
58 | #define FTAPE_SEL(unit) ((unit) & FTAPE_SEL_MASK) | |
59 | #define FTAPE_NO_REWIND 4 /* mask for minor nr */ | |
60 | ||
61 | /* the following two may be reported when MTIOCGET is requested ... */ | |
62 | typedef union { | |
63 | struct { | |
64 | __u8 error; | |
65 | __u8 command; | |
66 | } error; | |
67 | long space; | |
68 | } ft_drive_error; | |
69 | typedef union { | |
70 | struct { | |
71 | __u8 drive_status; | |
72 | __u8 drive_config; | |
73 | __u8 tape_status; | |
74 | } status; | |
75 | long space; | |
76 | } ft_drive_status; | |
77 | ||
78 | #ifdef __KERNEL__ | |
79 | ||
80 | #define FT_RQM_DELAY 12 | |
81 | #define FT_MILLISECOND 1 | |
82 | #define FT_SECOND 1000 | |
83 | #define FT_FOREVER -1 | |
84 | #ifndef HZ | |
85 | #error "HZ undefined." | |
86 | #endif | |
87 | #define FT_USPT (1000000/HZ) /* microseconds per tick */ | |
88 | ||
89 | /* This defines the number of retries that the driver will allow | |
90 | * before giving up (and letting a higher level handle the error). | |
91 | */ | |
92 | #ifdef TESTING | |
93 | #define FT_SOFT_RETRIES 1 /* number of low level retries */ | |
94 | #define FT_RETRIES_ON_ECC_ERROR 3 /* ecc error when correcting segment */ | |
95 | #else | |
96 | #define FT_SOFT_RETRIES 6 /* number of low level retries (triple) */ | |
97 | #define FT_RETRIES_ON_ECC_ERROR 3 /* ecc error when correcting segment */ | |
98 | #endif | |
99 | ||
100 | #ifndef THE_FTAPE_MAINTAINER | |
101 | #define THE_FTAPE_MAINTAINER "the ftape maintainer" | |
102 | #endif | |
103 | ||
104 | /* Initialize missing configuration parameters. | |
105 | */ | |
106 | #ifndef CONFIG_FT_NR_BUFFERS | |
107 | # define CONFIG_FT_NR_BUFFERS 3 | |
108 | #endif | |
109 | #ifndef CONFIG_FT_FDC_THR | |
110 | # define CONFIG_FT_FDC_THR 8 | |
111 | #endif | |
112 | #ifndef CONFIG_FT_FDC_MAX_RATE | |
113 | # define CONFIG_FT_FDC_MAX_RATE 2000 | |
114 | #endif | |
115 | #ifndef CONFIG_FT_FDC_BASE | |
116 | # define CONFIG_FT_FDC_BASE 0 | |
117 | #endif | |
118 | #ifndef CONFIG_FT_FDC_IRQ | |
119 | # define CONFIG_FT_FDC_IRQ 0 | |
120 | #endif | |
121 | #ifndef CONFIG_FT_FDC_DMA | |
122 | # define CONFIG_FT_FDC_DMA 0 | |
123 | #endif | |
124 | ||
125 | /* Turn some booleans into numbers. | |
126 | */ | |
127 | #ifdef CONFIG_FT_PROBE_FC10 | |
128 | # undef CONFIG_FT_PROBE_FC10 | |
129 | # define CONFIG_FT_PROBE_FC10 1 | |
130 | #else | |
131 | # define CONFIG_FT_PROBE_FC10 0 | |
132 | #endif | |
133 | #ifdef CONFIG_FT_MACH2 | |
134 | # undef CONFIG_FT_MACH2 | |
135 | # define CONFIG_FT_MACH2 1 | |
136 | #else | |
137 | # define CONFIG_FT_MACH2 0 | |
138 | #endif | |
139 | ||
140 | /* Insert default settings | |
141 | */ | |
142 | #if CONFIG_FT_PROBE_FC10 == 1 | |
143 | # if CONFIG_FT_FDC_BASE == 0 | |
144 | # undef CONFIG_FT_FDC_BASE | |
145 | # define CONFIG_FT_FDC_BASE 0x180 | |
146 | # endif | |
147 | # if CONFIG_FT_FDC_IRQ == 0 | |
148 | # undef CONFIG_FT_FDC_IRQ | |
149 | # define CONFIG_FT_FDC_IRQ 9 | |
150 | # endif | |
151 | # if CONFIG_FT_FDC_DMA == 0 | |
152 | # undef CONFIG_FT_FDC_DMA | |
153 | # define CONFIG_FT_FDC_DMA 3 | |
154 | # endif | |
155 | #elif CONFIG_FT_MACH2 == 1 /* CONFIG_FT_PROBE_FC10 == 1 */ | |
156 | # if CONFIG_FT_FDC_BASE == 0 | |
157 | # undef CONFIG_FT_FDC_BASE | |
158 | # define CONFIG_FT_FDC_BASE 0x1E0 | |
159 | # endif | |
160 | # if CONFIG_FT_FDC_IRQ == 0 | |
161 | # undef CONFIG_FT_FDC_IRQ | |
162 | # define CONFIG_FT_FDC_IRQ 6 | |
163 | # endif | |
164 | # if CONFIG_FT_FDC_DMA == 0 | |
165 | # undef CONFIG_FT_FDC_DMA | |
166 | # define CONFIG_FT_FDC_DMA 2 | |
167 | # endif | |
44456d37 | 168 | #elif defined(CONFIG_FT_ALT_FDC) /* CONFIG_FT_MACH2 */ |
1da177e4 LT |
169 | # if CONFIG_FT_FDC_BASE == 0 |
170 | # undef CONFIG_FT_FDC_BASE | |
171 | # define CONFIG_FT_FDC_BASE 0x370 | |
172 | # endif | |
173 | # if CONFIG_FT_FDC_IRQ == 0 | |
174 | # undef CONFIG_FT_FDC_IRQ | |
175 | # define CONFIG_FT_FDC_IRQ 6 | |
176 | # endif | |
177 | # if CONFIG_FT_FDC_DMA == 0 | |
178 | # undef CONFIG_FT_FDC_DMA | |
179 | # define CONFIG_FT_FDC_DMA 2 | |
180 | # endif | |
181 | #else /* CONFIG_FT_ALT_FDC */ | |
182 | # if CONFIG_FT_FDC_BASE == 0 | |
183 | # undef CONFIG_FT_FDC_BASE | |
184 | # define CONFIG_FT_FDC_BASE 0x3f0 | |
185 | # endif | |
186 | # if CONFIG_FT_FDC_IRQ == 0 | |
187 | # undef CONFIG_FT_FDC_IRQ | |
188 | # define CONFIG_FT_FDC_IRQ 6 | |
189 | # endif | |
190 | # if CONFIG_FT_FDC_DMA == 0 | |
191 | # undef CONFIG_FT_FDC_DMA | |
192 | # define CONFIG_FT_FDC_DMA 2 | |
193 | # endif | |
194 | #endif /* standard FDC */ | |
195 | ||
196 | /* some useful macro's | |
197 | */ | |
198 | #define NR_ITEMS(x) (int)(sizeof(x)/ sizeof(*x)) | |
199 | ||
200 | #endif /* __KERNEL__ */ | |
201 | ||
202 | #endif |