Subversion Repositories shark

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
422 giacomo 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: /home/fabio/w/shark/sharkcvs/CVSROOT/shark/drivers/linuxc26/include/linux/ftape.h,v $
24
 * $Revision: 1.1 $
25
 * $Date: 2004-01-28 15:25:21 $
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
168
#elif CONFIG_FT_ALT_FDC == 1  /* CONFIG_FT_MACH2 */
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 ABS(a)          ((a) < 0 ? -(a) : (a))
199
#define NR_ITEMS(x)     (int)(sizeof(x)/ sizeof(*x))
200
 
201
#endif  /* __KERNEL__ */
202
 
203
#endif