| #ifndef _FTAPE_H | |
| #define _FTAPE_H | |
| /* | |
| * Copyright (C) 1994-1996 Bas Laarhoven, | |
| * (C) 1996-1997 Claus-Justus Heine. | |
| This program is free software; you can redistribute it and/or modify | |
| it under the terms of the GNU General Public License as published by | |
| the Free Software Foundation; either version 2, or (at your option) | |
| any later version. | |
| This program is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| GNU General Public License for more details. | |
| You should have received a copy of the GNU General Public License | |
| along with this program; see the file COPYING. If not, write to | |
| the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. | |
| * | |
| * $Source: /homes/cvs/ftape-stacked/include/linux/ftape.h,v $ | |
| * $Revision: 1.17.6.4 $ | |
| * $Date: 1997/11/25 01:52:54 $ | |
| * | |
| * This file contains global definitions, typedefs and macro's | |
| * for the QIC-40/80/3010/3020 floppy-tape driver for Linux. | |
| */ | |
| #define FTAPE_VERSION "ftape v3.04d 25/11/97" | |
| #ifdef __KERNEL__ | |
| #include <linux/interrupt.h> | |
| #include <linux/mm.h> | |
| #endif | |
| #include <linux/types.h> | |
| #include <linux/mtio.h> | |
| #define FT_SECTOR(x) (x+1) /* sector offset into real sector */ | |
| #define FT_SECTOR_SIZE 1024 | |
| #define FT_SECTORS_PER_SEGMENT 32 | |
| #define FT_ECC_SECTORS 3 | |
| #define FT_SEGMENT_SIZE ((FT_SECTORS_PER_SEGMENT - FT_ECC_SECTORS) * FT_SECTOR_SIZE) | |
| #define FT_BUFF_SIZE (FT_SECTORS_PER_SEGMENT * FT_SECTOR_SIZE) | |
| /* | |
| * bits of the minor device number that define drive selection | |
| * methods. Could be used one day to access multiple tape | |
| * drives on the same controller. | |
| */ | |
| #define FTAPE_SEL_A 0 | |
| #define FTAPE_SEL_B 1 | |
| #define FTAPE_SEL_C 2 | |
| #define FTAPE_SEL_D 3 | |
| #define FTAPE_SEL_MASK 3 | |
| #define FTAPE_SEL(unit) ((unit) & FTAPE_SEL_MASK) | |
| #define FTAPE_NO_REWIND 4 /* mask for minor nr */ | |
| /* the following two may be reported when MTIOCGET is requested ... */ | |
| typedef union { | |
| struct { | |
| __u8 error; | |
| __u8 command; | |
| } error; | |
| long space; | |
| } ft_drive_error; | |
| typedef union { | |
| struct { | |
| __u8 drive_status; | |
| __u8 drive_config; | |
| __u8 tape_status; | |
| } status; | |
| long space; | |
| } ft_drive_status; | |
| #ifdef __KERNEL__ | |
| #define FT_RQM_DELAY 12 | |
| #define FT_MILLISECOND 1 | |
| #define FT_SECOND 1000 | |
| #define FT_FOREVER -1 | |
| #ifndef HZ | |
| #error "HZ undefined." | |
| #endif | |
| #define FT_USPT (1000000/HZ) /* microseconds per tick */ | |
| /* This defines the number of retries that the driver will allow | |
| * before giving up (and letting a higher level handle the error). | |
| */ | |
| #ifdef TESTING | |
| #define FT_SOFT_RETRIES 1 /* number of low level retries */ | |
| #define FT_RETRIES_ON_ECC_ERROR 3 /* ecc error when correcting segment */ | |
| #else | |
| #define FT_SOFT_RETRIES 6 /* number of low level retries (triple) */ | |
| #define FT_RETRIES_ON_ECC_ERROR 3 /* ecc error when correcting segment */ | |
| #endif | |
| #ifndef THE_FTAPE_MAINTAINER | |
| #define THE_FTAPE_MAINTAINER "the ftape maintainer" | |
| #endif | |
| /* Initialize missing configuration parameters. | |
| */ | |
| #ifndef CONFIG_FT_NR_BUFFERS | |
| # define CONFIG_FT_NR_BUFFERS 3 | |
| #endif | |
| #ifndef CONFIG_FT_FDC_THR | |
| # define CONFIG_FT_FDC_THR 8 | |
| #endif | |
| #ifndef CONFIG_FT_FDC_MAX_RATE | |
| # define CONFIG_FT_FDC_MAX_RATE 2000 | |
| #endif | |
| #ifndef CONFIG_FT_FDC_BASE | |
| # define CONFIG_FT_FDC_BASE 0 | |
| #endif | |
| #ifndef CONFIG_FT_FDC_IRQ | |
| # define CONFIG_FT_FDC_IRQ 0 | |
| #endif | |
| #ifndef CONFIG_FT_FDC_DMA | |
| # define CONFIG_FT_FDC_DMA 0 | |
| #endif | |
| /* Turn some booleans into numbers. | |
| */ | |
| #ifdef CONFIG_FT_PROBE_FC10 | |
| # undef CONFIG_FT_PROBE_FC10 | |
| # define CONFIG_FT_PROBE_FC10 1 | |
| #else | |
| # define CONFIG_FT_PROBE_FC10 0 | |
| #endif | |
| #ifdef CONFIG_FT_MACH2 | |
| # undef CONFIG_FT_MACH2 | |
| # define CONFIG_FT_MACH2 1 | |
| #else | |
| # define CONFIG_FT_MACH2 0 | |
| #endif | |
| /* Insert default settings | |
| */ | |
| #if CONFIG_FT_PROBE_FC10 == 1 | |
| # if CONFIG_FT_FDC_BASE == 0 | |
| # undef CONFIG_FT_FDC_BASE | |
| # define CONFIG_FT_FDC_BASE 0x180 | |
| # endif | |
| # if CONFIG_FT_FDC_IRQ == 0 | |
| # undef CONFIG_FT_FDC_IRQ | |
| # define CONFIG_FT_FDC_IRQ 9 | |
| # endif | |
| # if CONFIG_FT_FDC_DMA == 0 | |
| # undef CONFIG_FT_FDC_DMA | |
| # define CONFIG_FT_FDC_DMA 3 | |
| # endif | |
| #elif CONFIG_FT_MACH2 == 1 /* CONFIG_FT_PROBE_FC10 == 1 */ | |
| # if CONFIG_FT_FDC_BASE == 0 | |
| # undef CONFIG_FT_FDC_BASE | |
| # define CONFIG_FT_FDC_BASE 0x1E0 | |
| # endif | |
| # if CONFIG_FT_FDC_IRQ == 0 | |
| # undef CONFIG_FT_FDC_IRQ | |
| # define CONFIG_FT_FDC_IRQ 6 | |
| # endif | |
| # if CONFIG_FT_FDC_DMA == 0 | |
| # undef CONFIG_FT_FDC_DMA | |
| # define CONFIG_FT_FDC_DMA 2 | |
| # endif | |
| #elif defined(CONFIG_FT_ALT_FDC) /* CONFIG_FT_MACH2 */ | |
| # if CONFIG_FT_FDC_BASE == 0 | |
| # undef CONFIG_FT_FDC_BASE | |
| # define CONFIG_FT_FDC_BASE 0x370 | |
| # endif | |
| # if CONFIG_FT_FDC_IRQ == 0 | |
| # undef CONFIG_FT_FDC_IRQ | |
| # define CONFIG_FT_FDC_IRQ 6 | |
| # endif | |
| # if CONFIG_FT_FDC_DMA == 0 | |
| # undef CONFIG_FT_FDC_DMA | |
| # define CONFIG_FT_FDC_DMA 2 | |
| # endif | |
| #else /* CONFIG_FT_ALT_FDC */ | |
| # if CONFIG_FT_FDC_BASE == 0 | |
| # undef CONFIG_FT_FDC_BASE | |
| # define CONFIG_FT_FDC_BASE 0x3f0 | |
| # endif | |
| # if CONFIG_FT_FDC_IRQ == 0 | |
| # undef CONFIG_FT_FDC_IRQ | |
| # define CONFIG_FT_FDC_IRQ 6 | |
| # endif | |
| # if CONFIG_FT_FDC_DMA == 0 | |
| # undef CONFIG_FT_FDC_DMA | |
| # define CONFIG_FT_FDC_DMA 2 | |
| # endif | |
| #endif /* standard FDC */ | |
| /* some useful macro's | |
| */ | |
| #define NR_ITEMS(x) (int)(sizeof(x)/ sizeof(*x)) | |
| #endif /* __KERNEL__ */ | |
| #endif |