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  ***   To edit the content of this header, modify the corresponding
11  ***   source file (e.g. under external/kernel-headers/original/) then
12  ***   run bionic/libc/kernel/tools/update_all.py
13  ***
14  ***   Any manual change here will be lost the next time this script will
15  ***   be run. You've been warned!
16  ***
17  ****************************************************************************
18  ****************************************************************************/
19 #ifndef _UAPI_LINUX_FD_H
20 #define _UAPI_LINUX_FD_H
21 #include <linux/ioctl.h>
22 #include <linux/compiler.h>
23 struct floppy_struct {
24   unsigned int size, sect, head, track, stretch;
25 #define FD_STRETCH 1
26 #define FD_SWAPSIDES 2
27 #define FD_ZEROBASED 4
28 #define FD_SECTBASEMASK 0x3FC
29 #define FD_MKSECTBASE(s) (((s) ^ 1) << 2)
30 #define FD_SECTBASE(floppy) ((((floppy)->stretch & FD_SECTBASEMASK) >> 2) ^ 1)
31   unsigned char gap, rate,
32 #define FD_2M 0x4
33 #define FD_SIZECODEMASK 0x38
34 #define FD_SIZECODE(floppy) (((((floppy)->rate & FD_SIZECODEMASK) >> 3) + 2) % 8)
35 #define FD_SECTSIZE(floppy) ((floppy)->rate & FD_2M ? 512 : 128 << FD_SIZECODE(floppy))
36 #define FD_PERP 0x40
37   spec1, fmt_gap;
38   const char * name;
39 };
40 #define FDCLRPRM _IO(2, 0x41)
41 #define FDSETPRM _IOW(2, 0x42, struct floppy_struct)
42 #define FDSETMEDIAPRM FDSETPRM
43 #define FDDEFPRM _IOW(2, 0x43, struct floppy_struct)
44 #define FDGETPRM _IOR(2, 0x04, struct floppy_struct)
45 #define FDDEFMEDIAPRM FDDEFPRM
46 #define FDGETMEDIAPRM FDGETPRM
47 #define FDMSGON _IO(2, 0x45)
48 #define FDMSGOFF _IO(2, 0x46)
49 #define FD_FILL_BYTE 0xF6
50 struct format_descr {
51   unsigned int device, head, track;
52 };
53 #define FDFMTBEG _IO(2, 0x47)
54 #define FDFMTTRK _IOW(2, 0x48, struct format_descr)
55 #define FDFMTEND _IO(2, 0x49)
56 struct floppy_max_errors {
57   unsigned int abort, read_track, reset, recal, reporting;
58 };
59 #define FDSETEMSGTRESH _IO(2, 0x4a)
60 #define FDFLUSH _IO(2, 0x4b)
61 #define FDSETMAXERRS _IOW(2, 0x4c, struct floppy_max_errors)
62 #define FDGETMAXERRS _IOR(2, 0x0e, struct floppy_max_errors)
63 typedef char floppy_drive_name[16];
64 #define FDGETDRVTYP _IOR(2, 0x0f, floppy_drive_name)
65 struct floppy_drive_params {
66   signed char cmos;
67   unsigned long max_dtr;
68   unsigned long hlt;
69   unsigned long hut;
70   unsigned long srt;
71   unsigned long spinup;
72   unsigned long spindown;
73   unsigned char spindown_offset;
74   unsigned char select_delay;
75   unsigned char rps;
76   unsigned char tracks;
77   unsigned long timeout;
78   unsigned char interleave_sect;
79   struct floppy_max_errors max_errors;
80   char flags;
81 #define FTD_MSG 0x10
82 #define FD_BROKEN_DCL 0x20
83 #define FD_DEBUG 0x02
84 #define FD_SILENT_DCL_CLEAR 0x4
85 #define FD_INVERTED_DCL 0x80
86   char read_track;
87   short autodetect[8];
88   int checkfreq;
89   int native_format;
90 };
91 enum {
92   FD_NEED_TWADDLE_BIT,
93   FD_VERIFY_BIT,
94   FD_DISK_NEWCHANGE_BIT,
95   FD_UNUSED_BIT,
96   FD_DISK_CHANGED_BIT,
97   FD_DISK_WRITABLE_BIT,
98   FD_OPEN_SHOULD_FAIL_BIT
99 };
100 #define FDSETDRVPRM _IOW(2, 0x90, struct floppy_drive_params)
101 #define FDGETDRVPRM _IOR(2, 0x11, struct floppy_drive_params)
102 struct floppy_drive_struct {
103   unsigned long flags;
104 #define FD_NEED_TWADDLE (1 << FD_NEED_TWADDLE_BIT)
105 #define FD_VERIFY (1 << FD_VERIFY_BIT)
106 #define FD_DISK_NEWCHANGE (1 << FD_DISK_NEWCHANGE_BIT)
107 #define FD_DISK_CHANGED (1 << FD_DISK_CHANGED_BIT)
108 #define FD_DISK_WRITABLE (1 << FD_DISK_WRITABLE_BIT)
109   unsigned long spinup_date;
110   unsigned long select_date;
111   unsigned long first_read_date;
112   short probed_format;
113   short track;
114   short maxblock;
115   short maxtrack;
116   int generation;
117   int keep_data;
118   int fd_ref;
119   int fd_device;
120   unsigned long last_checked;
121   char * dmabuf;
122   int bufblocks;
123 };
124 #define FDGETDRVSTAT _IOR(2, 0x12, struct floppy_drive_struct)
125 #define FDPOLLDRVSTAT _IOR(2, 0x13, struct floppy_drive_struct)
126 enum reset_mode {
127   FD_RESET_IF_NEEDED,
128   FD_RESET_IF_RAWCMD,
129   FD_RESET_ALWAYS
130 };
131 #define FDRESET _IO(2, 0x54)
132 struct floppy_fdc_state {
133   int spec1;
134   int spec2;
135   int dtr;
136   unsigned char version;
137   unsigned char dor;
138   unsigned long address;
139   unsigned int rawcmd : 2;
140   unsigned int reset : 1;
141   unsigned int need_configure : 1;
142   unsigned int perp_mode : 2;
143   unsigned int has_fifo : 1;
144   unsigned int driver_version;
145 #define FD_DRIVER_VERSION 0x100
146   unsigned char track[4];
147 };
148 #define FDGETFDCSTAT _IOR(2, 0x15, struct floppy_fdc_state)
149 struct floppy_write_errors {
150   unsigned int write_errors;
151   unsigned long first_error_sector;
152   int first_error_generation;
153   unsigned long last_error_sector;
154   int last_error_generation;
155   unsigned int badness;
156 };
157 #define FDWERRORCLR _IO(2, 0x56)
158 #define FDWERRORGET _IOR(2, 0x17, struct floppy_write_errors)
159 #define FDHAVEBATCHEDRAWCMD
160 struct floppy_raw_cmd {
161   unsigned int flags;
162 #define FD_RAW_READ 1
163 #define FD_RAW_WRITE 2
164 #define FD_RAW_NO_MOTOR 4
165 #define FD_RAW_DISK_CHANGE 4
166 #define FD_RAW_INTR 8
167 #define FD_RAW_SPIN 0x10
168 #define FD_RAW_NO_MOTOR_AFTER 0x20
169 #define FD_RAW_NEED_DISK 0x40
170 #define FD_RAW_NEED_SEEK 0x80
171 #define FD_RAW_MORE 0x100
172 #define FD_RAW_STOP_IF_FAILURE 0x200
173 #define FD_RAW_STOP_IF_SUCCESS 0x400
174 #define FD_RAW_SOFTFAILURE 0x800
175 #define FD_RAW_FAILURE 0x10000
176 #define FD_RAW_HARDFAILURE 0x20000
177   void __user * data;
178   char * kernel_data;
179   struct floppy_raw_cmd * next;
180   long length;
181   long phys_length;
182   int buffer_length;
183   unsigned char rate;
184   unsigned char cmd_count;
185   unsigned char cmd[16];
186   unsigned char reply_count;
187   unsigned char reply[16];
188   int track;
189   int resultcode;
190   int reserved1;
191   int reserved2;
192 };
193 #define FDRAWCMD _IO(2, 0x58)
194 #define FDTWADDLE _IO(2, 0x59)
195 #define FDEJECT _IO(2, 0x5a)
196 #endif
197