ftape.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:5k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. #ifndef _FTAPE_H
  2. #define _FTAPE_H
  3. /*
  4.  * Copyright (C) 1994-1996 Bas Laarhoven,
  5.  *           (C) 1996-1997 Claus-Justus Heine.
  6.  This program is free software; you can redistribute it and/or modify
  7.  it under the terms of the GNU General Public License as published by
  8.  the Free Software Foundation; either version 2, or (at your option)
  9.  any later version.
  10.  This program is distributed in the hope that it will be useful,
  11.  but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.  GNU General Public License for more details.
  14.  You should have received a copy of the GNU General Public License
  15.  along with this program; see the file COPYING.  If not, write to
  16.  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  17.  *
  18.  * $Source: /homes/cvs/ftape-stacked/include/linux/ftape.h,v $
  19.  * $Revision: 1.17.6.4 $
  20.  * $Date: 1997/11/25 01:52:54 $
  21.  *
  22.  *      This file contains global definitions, typedefs and macro's
  23.  *      for the QIC-40/80/3010/3020 floppy-tape driver for Linux.
  24.  */
  25. #define FTAPE_VERSION "ftape v3.04d 25/11/97"
  26. /* this makes the Kernel version numbers readable */
  27. #define KERNEL_VER(major,minor,sublvl) (((major)<<16)+((minor)<<8)+(sublvl))
  28. #ifdef __KERNEL__
  29. #include <linux/sched.h>
  30. #include <linux/mm.h>
  31. #endif
  32. #include <linux/types.h>
  33. #include <linux/version.h>
  34. #include <linux/config.h>
  35. #include <linux/mtio.h>
  36. #define FT_SECTOR(x) (x+1) /* sector offset into real sector */
  37. #define FT_SECTOR_SIZE 1024
  38. #define FT_SECTORS_PER_SEGMENT   32
  39. #define FT_ECC_SECTORS    3
  40. #define FT_SEGMENT_SIZE ((FT_SECTORS_PER_SEGMENT - FT_ECC_SECTORS) * FT_SECTOR_SIZE)
  41. #define FT_BUFF_SIZE    (FT_SECTORS_PER_SEGMENT * FT_SECTOR_SIZE)
  42. /*
  43.  *   bits of the minor device number that define drive selection
  44.  *   methods. Could be used one day to access multiple tape
  45.  *   drives on the same controller.
  46.  */
  47. #define FTAPE_SEL_A     0
  48. #define FTAPE_SEL_B     1
  49. #define FTAPE_SEL_C     2
  50. #define FTAPE_SEL_D     3
  51. #define FTAPE_SEL_MASK     3
  52. #define FTAPE_SEL(unit) ((unit) & FTAPE_SEL_MASK)
  53. #define FTAPE_NO_REWIND 4 /* mask for minor nr */
  54. /* the following two may be reported when MTIOCGET is requested ... */
  55. typedef union {
  56. struct {
  57. __u8 error;
  58. __u8 command;
  59. } error;
  60. long space;
  61. } ft_drive_error;
  62. typedef union {
  63. struct {
  64. __u8 drive_status;
  65. __u8 drive_config;
  66. __u8 tape_status;
  67. } status;
  68. long space;
  69. } ft_drive_status;
  70. #ifdef __KERNEL__
  71. #define FT_RQM_DELAY    12
  72. #define FT_MILLISECOND  1
  73. #define FT_SECOND       1000
  74. #define FT_FOREVER      -1
  75. #ifndef HZ
  76. #error "HZ undefined."
  77. #endif
  78. #define FT_USPT         (1000000/HZ) /* microseconds per tick */
  79. /* This defines the number of retries that the driver will allow
  80.  * before giving up (and letting a higher level handle the error).
  81.  */
  82. #ifdef TESTING
  83. #define FT_SOFT_RETRIES 1    /* number of low level retries */
  84. #define FT_RETRIES_ON_ECC_ERROR 3  /* ecc error when correcting segment */
  85. #else
  86. #define FT_SOFT_RETRIES 6    /* number of low level retries (triple) */
  87. #define FT_RETRIES_ON_ECC_ERROR 3  /* ecc error when correcting segment */
  88. #endif
  89. #ifndef THE_FTAPE_MAINTAINER
  90. #define THE_FTAPE_MAINTAINER "the ftape maintainer"
  91. #endif
  92. /* Initialize missing configuration parameters.
  93.  */
  94. #ifndef CONFIG_FT_NR_BUFFERS
  95. # define CONFIG_FT_NR_BUFFERS 3
  96. #endif
  97. #ifndef CONFIG_FT_FDC_THR
  98. # define CONFIG_FT_FDC_THR 8
  99. #endif
  100. #ifndef CONFIG_FT_FDC_MAX_RATE
  101. # define CONFIG_FT_FDC_MAX_RATE 2000
  102. #endif
  103. #ifndef CONFIG_FT_FDC_BASE
  104. # define CONFIG_FT_FDC_BASE 0
  105. #endif
  106. #ifndef CONFIG_FT_FDC_IRQ
  107. # define CONFIG_FT_FDC_IRQ  0
  108. #endif
  109. #ifndef CONFIG_FT_FDC_DMA
  110. # define CONFIG_FT_FDC_DMA  0
  111. #endif
  112. /* Turn some booleans into numbers.
  113.  */
  114. #ifdef CONFIG_FT_PROBE_FC10
  115. # undef CONFIG_FT_PROBE_FC10
  116. # define CONFIG_FT_PROBE_FC10 1
  117. #else
  118. # define CONFIG_FT_PROBE_FC10 0
  119. #endif
  120. #ifdef CONFIG_FT_MACH2
  121. # undef CONFIG_FT_MACH2
  122. # define CONFIG_FT_MACH2 1
  123. #else
  124. # define CONFIG_FT_MACH2 0
  125. #endif
  126. /* Insert default settings
  127.  */
  128. #if CONFIG_FT_PROBE_FC10 == 1
  129. # if CONFIG_FT_FDC_BASE == 0
  130. #  undef  CONFIG_FT_FDC_BASE
  131. #  define CONFIG_FT_FDC_BASE 0x180
  132. # endif
  133. # if CONFIG_FT_FDC_IRQ == 0
  134. #  undef  CONFIG_FT_FDC_IRQ
  135. #  define CONFIG_FT_FDC_IRQ 9
  136. # endif
  137. # if CONFIG_FT_FDC_DMA == 0
  138. #  undef  CONFIG_FT_FDC_DMA
  139. #  define CONFIG_FT_FDC_DMA 3
  140. # endif
  141. #elif CONFIG_FT_MACH2 == 1    /* CONFIG_FT_PROBE_FC10 == 1 */
  142. # if CONFIG_FT_FDC_BASE == 0
  143. #  undef  CONFIG_FT_FDC_BASE
  144. #  define CONFIG_FT_FDC_BASE 0x1E0
  145. # endif
  146. # if CONFIG_FT_FDC_IRQ == 0
  147. #  undef  CONFIG_FT_FDC_IRQ
  148. #  define CONFIG_FT_FDC_IRQ 6
  149. # endif
  150. # if CONFIG_FT_FDC_DMA == 0
  151. #  undef  CONFIG_FT_FDC_DMA
  152. #  define CONFIG_FT_FDC_DMA 2
  153. # endif
  154. #elif CONFIG_FT_ALT_FDC == 1  /* CONFIG_FT_MACH2 */
  155. # if CONFIG_FT_FDC_BASE == 0
  156. #  undef  CONFIG_FT_FDC_BASE
  157. #  define CONFIG_FT_FDC_BASE 0x370
  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. #else                          /* CONFIG_FT_ALT_FDC */
  168. # if CONFIG_FT_FDC_BASE == 0
  169. #  undef  CONFIG_FT_FDC_BASE
  170. #  define CONFIG_FT_FDC_BASE 0x3f0
  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. #endif                         /* standard FDC */
  181. /*      some useful macro's
  182.  */
  183. #define ABS(a)          ((a) < 0 ? -(a) : (a))
  184. #define NR_ITEMS(x)     (int)(sizeof(x)/ sizeof(*x))
  185. extern int ftape_init(void);
  186. #endif  /* __KERNEL__ */
  187. #endif