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/mtio.h> 39 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) 46 47 /* 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. 51 */ 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 */ 59 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; 76 77 #ifdef __KERNEL__ 78 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 */ 87 88 /* This defines the number of retries that the driver will allow 89 * before giving up (and letting a higher level handle the error). 90 */ 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 98 99 #ifndef THE_FTAPE_MAINTAINER 100 #define THE_FTAPE_MAINTAINER "the ftape maintainer" 101 #endif 102 103 /* Initialize missing configuration parameters. 104 */ 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 123 124 /* Turn some booleans into numbers. 125 */ 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 138 139 /* Insert default settings 140 */ 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 */ 194 195 /* some useful macro's 196 */ 197 #define NR_ITEMS(x) (int)(sizeof(x)/ sizeof(*x)) 198 199 #endif /* __KERNEL__ */ 200 201 #endif 202