5 * Copyright (C) 1994-1996 Bas Laarhoven,
6 * (C) 1996-1997 Claus-Justus Heine.
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)
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.
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.
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 $
27 * This file contains global definitions, typedefs and macro's
28 * for the QIC-40/80/3010/3020 floppy-tape driver for Linux.
31 #define FTAPE_VERSION "ftape v3.04d 25/11/97"
34 #include <linux/interrupt.h>
37 #include <linux/types.h>
38 #include <linux/config.h>
39 #include <linux/mtio.h>
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)
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.
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 */
61 /* the following two may be reported when MTIOCGET is requested ... */
80 #define FT_RQM_DELAY 12
81 #define FT_MILLISECOND 1
82 #define FT_SECOND 1000
85 #error "HZ undefined."
87 #define FT_USPT (1000000/HZ) /* microseconds per tick */
89 /* This defines the number of retries that the driver will allow
90 * before giving up (and letting a higher level handle the error).
93 #define FT_SOFT_RETRIES 1 /* number of low level retries */
94 #define FT_RETRIES_ON_ECC_ERROR 3 /* ecc error when correcting segment */
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 */
100 #ifndef THE_FTAPE_MAINTAINER
101 #define THE_FTAPE_MAINTAINER "the ftape maintainer"
104 /* Initialize missing configuration parameters.
106 #ifndef CONFIG_FT_NR_BUFFERS
107 # define CONFIG_FT_NR_BUFFERS 3
109 #ifndef CONFIG_FT_FDC_THR
110 # define CONFIG_FT_FDC_THR 8
112 #ifndef CONFIG_FT_FDC_MAX_RATE
113 # define CONFIG_FT_FDC_MAX_RATE 2000
115 #ifndef CONFIG_FT_FDC_BASE
116 # define CONFIG_FT_FDC_BASE 0
118 #ifndef CONFIG_FT_FDC_IRQ
119 # define CONFIG_FT_FDC_IRQ 0
121 #ifndef CONFIG_FT_FDC_DMA
122 # define CONFIG_FT_FDC_DMA 0
125 /* Turn some booleans into numbers.
127 #ifdef CONFIG_FT_PROBE_FC10
128 # undef CONFIG_FT_PROBE_FC10
129 # define CONFIG_FT_PROBE_FC10 1
131 # define CONFIG_FT_PROBE_FC10 0
133 #ifdef CONFIG_FT_MACH2
134 # undef CONFIG_FT_MACH2
135 # define CONFIG_FT_MACH2 1
137 # define CONFIG_FT_MACH2 0
140 /* Insert default settings
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
147 # if CONFIG_FT_FDC_IRQ == 0
148 # undef CONFIG_FT_FDC_IRQ
149 # define CONFIG_FT_FDC_IRQ 9
151 # if CONFIG_FT_FDC_DMA == 0
152 # undef CONFIG_FT_FDC_DMA
153 # define CONFIG_FT_FDC_DMA 3
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
160 # if CONFIG_FT_FDC_IRQ == 0
161 # undef CONFIG_FT_FDC_IRQ
162 # define CONFIG_FT_FDC_IRQ 6
164 # if CONFIG_FT_FDC_DMA == 0
165 # undef CONFIG_FT_FDC_DMA
166 # define CONFIG_FT_FDC_DMA 2
168 #elif defined(CONFIG_FT_ALT_FDC) /* CONFIG_FT_MACH2 */
169 # if CONFIG_FT_FDC_BASE == 0
170 # undef CONFIG_FT_FDC_BASE
171 # define CONFIG_FT_FDC_BASE 0x370
173 # if CONFIG_FT_FDC_IRQ == 0
174 # undef CONFIG_FT_FDC_IRQ
175 # define CONFIG_FT_FDC_IRQ 6
177 # if CONFIG_FT_FDC_DMA == 0
178 # undef CONFIG_FT_FDC_DMA
179 # define CONFIG_FT_FDC_DMA 2
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
186 # if CONFIG_FT_FDC_IRQ == 0
187 # undef CONFIG_FT_FDC_IRQ
188 # define CONFIG_FT_FDC_IRQ 6
190 # if CONFIG_FT_FDC_DMA == 0
191 # undef CONFIG_FT_FDC_DMA
192 # define CONFIG_FT_FDC_DMA 2
194 #endif /* standard FDC */
196 /* some useful macro's
198 #define NR_ITEMS(x) (int)(sizeof(x)/ sizeof(*x))
200 #endif /* __KERNEL__ */