|  | /**************************************************************************** | 
|  | **************************************************************************** | 
|  | *** | 
|  | ***   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; | 
|  | short autodetect[8]; | 
|  | 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; | 
|  | unsigned char cmd_count; | 
|  | unsigned char cmd[16]; | 
|  | unsigned char reply_count; | 
|  | unsigned char reply[16]; | 
|  | int track; | 
|  | int resultcode; | 
|  | int reserved1; | 
|  | int reserved2; | 
|  | }; | 
|  | #define FDRAWCMD _IO(2, 0x58) | 
|  | #define FDTWADDLE _IO(2, 0x59) | 
|  | #define FDEJECT _IO(2, 0x5a) | 
|  | #endif |