MOXA linux-2.6.x / linux-2.6.19-uc1 from UC-7110-LX-BOOTLOADER-1.9_VERSION-4.2.tgz
[linux-2.6.19-moxart.git] / include / linux / ftape.h
blob7e7038cba86a880a84cd2420d862ddadc7d40c3e
1 #ifndef _FTAPE_H
2 #define _FTAPE_H
4 /*
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)
11 any later version.
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"
33 #ifdef __KERNEL__
34 #include <linux/interrupt.h>
35 #include <linux/mm.h>
36 #endif
37 #include <linux/types.h>
38 #include <linux/mtio.h>
40 #define FT_SECTOR(x) (x+1) /* sector offset into real sector */
41 #define FT_SECTOR_SIZE 1024
42 #define FT_SECTORS_PER_SEGMENT 32
43 #define FT_ECC_SECTORS 3
44 #define FT_SEGMENT_SIZE ((FT_SECTORS_PER_SEGMENT - FT_ECC_SECTORS) * FT_SECTOR_SIZE)
45 #define FT_BUFF_SIZE (FT_SECTORS_PER_SEGMENT * FT_SECTOR_SIZE)
48 * bits of the minor device number that define drive selection
49 * methods. Could be used one day to access multiple tape
50 * drives on the same controller.
52 #define FTAPE_SEL_A 0
53 #define FTAPE_SEL_B 1
54 #define FTAPE_SEL_C 2
55 #define FTAPE_SEL_D 3
56 #define FTAPE_SEL_MASK 3
57 #define FTAPE_SEL(unit) ((unit) & FTAPE_SEL_MASK)
58 #define FTAPE_NO_REWIND 4 /* mask for minor nr */
60 /* the following two may be reported when MTIOCGET is requested ... */
61 typedef union {
62 struct {
63 __u8 error;
64 __u8 command;
65 } error;
66 long space;
67 } ft_drive_error;
68 typedef union {
69 struct {
70 __u8 drive_status;
71 __u8 drive_config;
72 __u8 tape_status;
73 } status;
74 long space;
75 } ft_drive_status;
77 #ifdef __KERNEL__
79 #define FT_RQM_DELAY 12
80 #define FT_MILLISECOND 1
81 #define FT_SECOND 1000
82 #define FT_FOREVER -1
83 #ifndef HZ
84 #error "HZ undefined."
85 #endif
86 #define FT_USPT (1000000/HZ) /* microseconds per tick */
88 /* This defines the number of retries that the driver will allow
89 * before giving up (and letting a higher level handle the error).
91 #ifdef TESTING
92 #define FT_SOFT_RETRIES 1 /* number of low level retries */
93 #define FT_RETRIES_ON_ECC_ERROR 3 /* ecc error when correcting segment */
94 #else
95 #define FT_SOFT_RETRIES 6 /* number of low level retries (triple) */
96 #define FT_RETRIES_ON_ECC_ERROR 3 /* ecc error when correcting segment */
97 #endif
99 #ifndef THE_FTAPE_MAINTAINER
100 #define THE_FTAPE_MAINTAINER "the ftape maintainer"
101 #endif
103 /* Initialize missing configuration parameters.
105 #ifndef CONFIG_FT_NR_BUFFERS
106 # define CONFIG_FT_NR_BUFFERS 3
107 #endif
108 #ifndef CONFIG_FT_FDC_THR
109 # define CONFIG_FT_FDC_THR 8
110 #endif
111 #ifndef CONFIG_FT_FDC_MAX_RATE
112 # define CONFIG_FT_FDC_MAX_RATE 2000
113 #endif
114 #ifndef CONFIG_FT_FDC_BASE
115 # define CONFIG_FT_FDC_BASE 0
116 #endif
117 #ifndef CONFIG_FT_FDC_IRQ
118 # define CONFIG_FT_FDC_IRQ 0
119 #endif
120 #ifndef CONFIG_FT_FDC_DMA
121 # define CONFIG_FT_FDC_DMA 0
122 #endif
124 /* Turn some booleans into numbers.
126 #ifdef CONFIG_FT_PROBE_FC10
127 # undef CONFIG_FT_PROBE_FC10
128 # define CONFIG_FT_PROBE_FC10 1
129 #else
130 # define CONFIG_FT_PROBE_FC10 0
131 #endif
132 #ifdef CONFIG_FT_MACH2
133 # undef CONFIG_FT_MACH2
134 # define CONFIG_FT_MACH2 1
135 #else
136 # define CONFIG_FT_MACH2 0
137 #endif
139 /* Insert default settings
141 #if CONFIG_FT_PROBE_FC10 == 1
142 # if CONFIG_FT_FDC_BASE == 0
143 # undef CONFIG_FT_FDC_BASE
144 # define CONFIG_FT_FDC_BASE 0x180
145 # endif
146 # if CONFIG_FT_FDC_IRQ == 0
147 # undef CONFIG_FT_FDC_IRQ
148 # define CONFIG_FT_FDC_IRQ 9
149 # endif
150 # if CONFIG_FT_FDC_DMA == 0
151 # undef CONFIG_FT_FDC_DMA
152 # define CONFIG_FT_FDC_DMA 3
153 # endif
154 #elif CONFIG_FT_MACH2 == 1 /* CONFIG_FT_PROBE_FC10 == 1 */
155 # if CONFIG_FT_FDC_BASE == 0
156 # undef CONFIG_FT_FDC_BASE
157 # define CONFIG_FT_FDC_BASE 0x1E0
158 # endif
159 # if CONFIG_FT_FDC_IRQ == 0
160 # undef CONFIG_FT_FDC_IRQ
161 # define CONFIG_FT_FDC_IRQ 6
162 # endif
163 # if CONFIG_FT_FDC_DMA == 0
164 # undef CONFIG_FT_FDC_DMA
165 # define CONFIG_FT_FDC_DMA 2
166 # endif
167 #elif defined(CONFIG_FT_ALT_FDC) /* CONFIG_FT_MACH2 */
168 # if CONFIG_FT_FDC_BASE == 0
169 # undef CONFIG_FT_FDC_BASE
170 # define CONFIG_FT_FDC_BASE 0x370
171 # endif
172 # if CONFIG_FT_FDC_IRQ == 0
173 # undef CONFIG_FT_FDC_IRQ
174 # define CONFIG_FT_FDC_IRQ 6
175 # endif
176 # if CONFIG_FT_FDC_DMA == 0
177 # undef CONFIG_FT_FDC_DMA
178 # define CONFIG_FT_FDC_DMA 2
179 # endif
180 #else /* CONFIG_FT_ALT_FDC */
181 # if CONFIG_FT_FDC_BASE == 0
182 # undef CONFIG_FT_FDC_BASE
183 # define CONFIG_FT_FDC_BASE 0x3f0
184 # endif
185 # if CONFIG_FT_FDC_IRQ == 0
186 # undef CONFIG_FT_FDC_IRQ
187 # define CONFIG_FT_FDC_IRQ 6
188 # endif
189 # if CONFIG_FT_FDC_DMA == 0
190 # undef CONFIG_FT_FDC_DMA
191 # define CONFIG_FT_FDC_DMA 2
192 # endif
193 #endif /* standard FDC */
195 /* some useful macro's
197 #define NR_ITEMS(x) (int)(sizeof(x)/ sizeof(*x))
199 #endif /* __KERNEL__ */
201 #endif