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