at v2.6.13 5.4 kB view raw
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 ... */ 62typedef union { 63 struct { 64 __u8 error; 65 __u8 command; 66 } error; 67 long space; 68} ft_drive_error; 69typedef 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 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 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