Home | History | Annotate | Download | only in linux
      1 /****************************************************************************
      2  ****************************************************************************
      3  ***
      4  ***   This header was automatically generated from a Linux kernel header
      5  ***   of the same name, to make information necessary for userspace to
      6  ***   call into the kernel available to libc.  It contains only constants,
      7  ***   structures, and macros generated from the original header, and thus,
      8  ***   contains no copyrightable information.
      9  ***
     10  ****************************************************************************
     11  ****************************************************************************/
     12 #ifndef _LINUX_FD_H
     13 #define _LINUX_FD_H
     14 
     15 #include <linux/ioctl.h>
     16 #include <linux/compiler.h>
     17 
     18 struct floppy_struct {
     19  unsigned int size,
     20  sect,
     21  head,
     22  track,
     23  stretch;
     24 #define FD_STRETCH 1
     25 #define FD_SWAPSIDES 2
     26 #define FD_ZEROBASED 4
     27 
     28  unsigned char gap,
     29 
     30  rate,
     31 #define FD_2M 0x4
     32 #define FD_SIZECODEMASK 0x38
     33 #define FD_SIZECODE(floppy) (((((floppy)->rate&FD_SIZECODEMASK)>> 3)+ 2) %8)
     34 #define FD_SECTSIZE(floppy) ( (floppy)->rate & FD_2M ?   512 : 128 << FD_SIZECODE(floppy) )
     35 #define FD_PERP 0x40
     36 
     37  spec1,
     38  fmt_gap;
     39  const char * name;
     40 };
     41 
     42 #define FDCLRPRM _IO(2, 0x41)
     43 
     44 #define FDSETPRM _IOW(2, 0x42, struct floppy_struct)
     45 #define FDSETMEDIAPRM FDSETPRM
     46 
     47 #define FDDEFPRM _IOW(2, 0x43, struct floppy_struct)
     48 #define FDGETPRM _IOR(2, 0x04, struct floppy_struct)
     49 #define FDDEFMEDIAPRM FDDEFPRM
     50 #define FDGETMEDIAPRM FDGETPRM
     51 
     52 #define FDMSGON _IO(2,0x45)
     53 #define FDMSGOFF _IO(2,0x46)
     54 
     55 #define FD_FILL_BYTE 0xF6
     56 
     57 struct format_descr {
     58  unsigned int device,head,track;
     59 };
     60 
     61 #define FDFMTBEG _IO(2,0x47)
     62 
     63 #define FDFMTTRK _IOW(2,0x48, struct format_descr)
     64 
     65 #define FDFMTEND _IO(2,0x49)
     66 
     67 struct floppy_max_errors {
     68  unsigned int
     69  abort,
     70  read_track,
     71  reset,
     72  recal,
     73 
     74  reporting;
     75 
     76 };
     77 
     78 #define FDSETEMSGTRESH _IO(2,0x4a)
     79 
     80 #define FDFLUSH _IO(2,0x4b)
     81 
     82 #define FDSETMAXERRS _IOW(2, 0x4c, struct floppy_max_errors)
     83 #define FDGETMAXERRS _IOR(2, 0x0e, struct floppy_max_errors)
     84 
     85 typedef char floppy_drive_name[16];
     86 #define FDGETDRVTYP _IOR(2, 0x0f, floppy_drive_name)
     87 
     88 struct floppy_drive_params {
     89  signed char cmos;
     90 
     91  unsigned long max_dtr;
     92  unsigned long hlt;
     93  unsigned long hut;
     94  unsigned long srt;
     95 
     96  unsigned long spinup;
     97  unsigned long spindown;
     98  unsigned char spindown_offset;
     99  unsigned char select_delay;
    100  unsigned char rps;
    101  unsigned char tracks;
    102  unsigned long timeout;
    103 
    104  unsigned char interleave_sect;
    105 
    106  struct floppy_max_errors max_errors;
    107 
    108  char flags;
    109 
    110 #define FTD_MSG 0x10
    111 #define FD_BROKEN_DCL 0x20
    112 #define FD_DEBUG 0x02
    113 #define FD_SILENT_DCL_CLEAR 0x4
    114 #define FD_INVERTED_DCL 0x80
    115 
    116  char read_track;
    117 
    118  short autodetect[8];
    119 
    120  int checkfreq;
    121  int native_format;
    122 };
    123 
    124 enum {
    125  FD_NEED_TWADDLE_BIT,
    126  FD_VERIFY_BIT,
    127  FD_DISK_NEWCHANGE_BIT,
    128  FD_UNUSED_BIT,
    129  FD_DISK_CHANGED_BIT,
    130  FD_DISK_WRITABLE_BIT
    131 };
    132 
    133 #define FDSETDRVPRM _IOW(2, 0x90, struct floppy_drive_params)
    134 #define FDGETDRVPRM _IOR(2, 0x11, struct floppy_drive_params)
    135 
    136 struct floppy_drive_struct {
    137  unsigned long flags;
    138 
    139 #define FD_NEED_TWADDLE (1 << FD_NEED_TWADDLE_BIT)
    140 #define FD_VERIFY (1 << FD_VERIFY_BIT)
    141 #define FD_DISK_NEWCHANGE (1 << FD_DISK_NEWCHANGE_BIT)
    142 #define FD_DISK_CHANGED (1 << FD_DISK_CHANGED_BIT)
    143 #define FD_DISK_WRITABLE (1 << FD_DISK_WRITABLE_BIT)
    144 
    145  unsigned long spinup_date;
    146  unsigned long select_date;
    147  unsigned long first_read_date;
    148  short probed_format;
    149  short track;
    150  short maxblock;
    151  short maxtrack;
    152  int generation;
    153 
    154  int keep_data;
    155 
    156  int fd_ref;
    157  int fd_device;
    158  unsigned long last_checked;
    159 
    160  char *dmabuf;
    161  int bufblocks;
    162 };
    163 
    164 #define FDGETDRVSTAT _IOR(2, 0x12, struct floppy_drive_struct)
    165 #define FDPOLLDRVSTAT _IOR(2, 0x13, struct floppy_drive_struct)
    166 
    167 enum reset_mode {
    168  FD_RESET_IF_NEEDED,
    169  FD_RESET_IF_RAWCMD,
    170  FD_RESET_ALWAYS
    171 };
    172 #define FDRESET _IO(2, 0x54)
    173 
    174 struct floppy_fdc_state {
    175  int spec1;
    176  int spec2;
    177  int dtr;
    178  unsigned char version;
    179  unsigned char dor;
    180  unsigned long address;
    181  unsigned int rawcmd:2;
    182  unsigned int reset:1;
    183  unsigned int need_configure:1;
    184  unsigned int perp_mode:2;
    185  unsigned int has_fifo:1;
    186  unsigned int driver_version;
    187 #define FD_DRIVER_VERSION 0x100
    188 
    189  unsigned char track[4];
    190 
    191 };
    192 
    193 #define FDGETFDCSTAT _IOR(2, 0x15, struct floppy_fdc_state)
    194 
    195 struct floppy_write_errors {
    196 
    197  unsigned int write_errors;
    198 
    199  unsigned long first_error_sector;
    200  int first_error_generation;
    201  unsigned long last_error_sector;
    202  int last_error_generation;
    203 
    204  unsigned int badness;
    205 };
    206 
    207 #define FDWERRORCLR _IO(2, 0x56)
    208 
    209 #define FDWERRORGET _IOR(2, 0x17, struct floppy_write_errors)
    210 
    211 #define FDHAVEBATCHEDRAWCMD
    212 
    213 struct floppy_raw_cmd {
    214  unsigned int flags;
    215 #define FD_RAW_READ 1
    216 #define FD_RAW_WRITE 2
    217 #define FD_RAW_NO_MOTOR 4
    218 #define FD_RAW_DISK_CHANGE 4
    219 #define FD_RAW_INTR 8
    220 #define FD_RAW_SPIN 0x10
    221 #define FD_RAW_NO_MOTOR_AFTER 0x20
    222 #define FD_RAW_NEED_DISK 0x40
    223 #define FD_RAW_NEED_SEEK 0x80
    224 
    225 #define FD_RAW_MORE 0x100
    226 #define FD_RAW_STOP_IF_FAILURE 0x200
    227 #define FD_RAW_STOP_IF_SUCCESS 0x400
    228 #define FD_RAW_SOFTFAILURE 0x800
    229 
    230 #define FD_RAW_FAILURE 0x10000
    231 #define FD_RAW_HARDFAILURE 0x20000
    232 
    233  void __user *data;
    234  char *kernel_data;
    235  struct floppy_raw_cmd *next;
    236  long length;
    237  long phys_length;
    238  int buffer_length;
    239 
    240  unsigned char rate;
    241  unsigned char cmd_count;
    242  unsigned char cmd[16];
    243  unsigned char reply_count;
    244  unsigned char reply[16];
    245  int track;
    246  int resultcode;
    247 
    248  int reserved1;
    249  int reserved2;
    250 };
    251 
    252 #define FDRAWCMD _IO(2, 0x58)
    253 
    254 #define FDTWADDLE _IO(2, 0x59)
    255 
    256 #define FDEJECT _IO(2, 0x5a)
    257 
    258 #endif
    259