111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/****************************************************************************
211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************
311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***
411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   This header was automatically generated from a Linux kernel header
511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   of the same name, to make information necessary for userspace to
611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   call into the kernel available to libc.  It contains only constants,
711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   structures, and macros generated from the original header, and thus,
811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   contains no copyrightable information.
911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***
1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************
1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************/
1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _LINUX_FD_H
1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _LINUX_FD_H
1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <linux/ioctl.h>
1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <linux/compiler.h>
1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct floppy_struct {
1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int size,
2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert sect,
2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert head,
2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert track,
2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert stretch;
2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FD_STRETCH 1
2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FD_SWAPSIDES 2
2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FD_ZEROBASED 4
2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char gap,
2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert rate,
3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FD_2M 0x4
3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FD_SIZECODEMASK 0x38
3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FD_SIZECODE(floppy) (((((floppy)->rate&FD_SIZECODEMASK)>> 3)+ 2) %8)
3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FD_SECTSIZE(floppy) ( (floppy)->rate & FD_2M ?   512 : 128 << FD_SIZECODE(floppy) )
3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FD_PERP 0x40
3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert spec1,
3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert fmt_gap;
3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const char * name;
4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FDCLRPRM _IO(2, 0x41)
4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FDSETPRM _IOW(2, 0x42, struct floppy_struct)
4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FDSETMEDIAPRM FDSETPRM
4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FDDEFPRM _IOW(2, 0x43, struct floppy_struct)
4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FDGETPRM _IOR(2, 0x04, struct floppy_struct)
4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FDDEFMEDIAPRM FDDEFPRM
5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FDGETMEDIAPRM FDGETPRM
5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FDMSGON _IO(2,0x45)
5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FDMSGOFF _IO(2,0x46)
5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FD_FILL_BYTE 0xF6
5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct format_descr {
5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int device,head,track;
5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FDFMTBEG _IO(2,0x47)
6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FDFMTTRK _IOW(2,0x48, struct format_descr)
6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FDFMTEND _IO(2,0x49)
6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct floppy_max_errors {
6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int
6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert abort,
7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert read_track,
7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert reset,
7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert recal,
7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert reporting;
7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FDSETEMSGTRESH _IO(2,0x4a)
7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FDFLUSH _IO(2,0x4b)
8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FDSETMAXERRS _IOW(2, 0x4c, struct floppy_max_errors)
8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FDGETMAXERRS _IOR(2, 0x0e, struct floppy_max_errors)
8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
8511cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef char floppy_drive_name[16];
8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FDGETDRVTYP _IOR(2, 0x0f, floppy_drive_name)
8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct floppy_drive_params {
8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert signed char cmos;
9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned long max_dtr;
9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned long hlt;
9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned long hut;
9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned long srt;
9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned long spinup;
9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned long spindown;
9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char spindown_offset;
9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char select_delay;
10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char rps;
10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char tracks;
10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned long timeout;
10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char interleave_sect;
10511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct floppy_max_errors max_errors;
10711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert char flags;
10911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
11011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FTD_MSG 0x10
11111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FD_BROKEN_DCL 0x20
11211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FD_DEBUG 0x02
11311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FD_SILENT_DCL_CLEAR 0x4
11411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FD_INVERTED_DCL 0x80
11511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
11611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert char read_track;
11711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
11811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert short autodetect[8];
11911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int checkfreq;
12111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int native_format;
12211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
12311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum {
12511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert FD_NEED_TWADDLE_BIT,
12611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert FD_VERIFY_BIT,
12711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert FD_DISK_NEWCHANGE_BIT,
12811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert FD_UNUSED_BIT,
12911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert FD_DISK_CHANGED_BIT,
13011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert FD_DISK_WRITABLE_BIT
13111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
13211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FDSETDRVPRM _IOW(2, 0x90, struct floppy_drive_params)
13411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FDGETDRVPRM _IOR(2, 0x11, struct floppy_drive_params)
13511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct floppy_drive_struct {
13711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned long flags;
13811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FD_NEED_TWADDLE (1 << FD_NEED_TWADDLE_BIT)
14011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FD_VERIFY (1 << FD_VERIFY_BIT)
14111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FD_DISK_NEWCHANGE (1 << FD_DISK_NEWCHANGE_BIT)
14211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FD_DISK_CHANGED (1 << FD_DISK_CHANGED_BIT)
14311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FD_DISK_WRITABLE (1 << FD_DISK_WRITABLE_BIT)
14411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned long spinup_date;
14611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned long select_date;
14711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned long first_read_date;
14811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert short probed_format;
14911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert short track;
15011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert short maxblock;
15111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert short maxtrack;
15211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int generation;
15311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
15411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int keep_data;
15511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
15611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int fd_ref;
15711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int fd_device;
15811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned long last_checked;
15911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
16011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert char *dmabuf;
16111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int bufblocks;
16211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
16311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
16411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FDGETDRVSTAT _IOR(2, 0x12, struct floppy_drive_struct)
16511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FDPOLLDRVSTAT _IOR(2, 0x13, struct floppy_drive_struct)
16611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
16711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum reset_mode {
16811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert FD_RESET_IF_NEEDED,
16911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert FD_RESET_IF_RAWCMD,
17011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert FD_RESET_ALWAYS
17111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
17211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FDRESET _IO(2, 0x54)
17311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
17411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct floppy_fdc_state {
17511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int spec1;
17611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int spec2;
17711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int dtr;
17811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char version;
17911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char dor;
18011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned long address;
18111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int rawcmd:2;
18211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int reset:1;
18311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int need_configure:1;
18411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int perp_mode:2;
18511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int has_fifo:1;
18611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int driver_version;
18711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FD_DRIVER_VERSION 0x100
18811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
18911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char track[4];
19011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
19111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
19211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
19311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FDGETFDCSTAT _IOR(2, 0x15, struct floppy_fdc_state)
19411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
19511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct floppy_write_errors {
19611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
19711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int write_errors;
19811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
19911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned long first_error_sector;
20011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int first_error_generation;
20111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned long last_error_sector;
20211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int last_error_generation;
20311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
20411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int badness;
20511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
20611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
20711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FDWERRORCLR _IO(2, 0x56)
20811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
20911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FDWERRORGET _IOR(2, 0x17, struct floppy_write_errors)
21011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
21111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FDHAVEBATCHEDRAWCMD
21211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
21311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct floppy_raw_cmd {
21411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int flags;
21511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FD_RAW_READ 1
21611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FD_RAW_WRITE 2
21711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FD_RAW_NO_MOTOR 4
21811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FD_RAW_DISK_CHANGE 4
21911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FD_RAW_INTR 8
22011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FD_RAW_SPIN 0x10
22111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FD_RAW_NO_MOTOR_AFTER 0x20
22211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FD_RAW_NEED_DISK 0x40
22311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FD_RAW_NEED_SEEK 0x80
22411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
22511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FD_RAW_MORE 0x100
22611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FD_RAW_STOP_IF_FAILURE 0x200
22711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FD_RAW_STOP_IF_SUCCESS 0x400
22811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FD_RAW_SOFTFAILURE 0x800
22911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
23011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FD_RAW_FAILURE 0x10000
23111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FD_RAW_HARDFAILURE 0x20000
23211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
23311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void __user *data;
23411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert char *kernel_data;
23511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct floppy_raw_cmd *next;
23611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert long length;
23711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert long phys_length;
23811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int buffer_length;
23911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
24011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char rate;
24111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char cmd_count;
24211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char cmd[16];
24311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char reply_count;
24411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char reply[16];
24511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int track;
24611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int resultcode;
24711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
24811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int reserved1;
24911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int reserved2;
25011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
25111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
25211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FDRAWCMD _IO(2, 0x58)
25311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
25411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FDTWADDLE _IO(2, 0x59)
25511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
25611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FDEJECT _IO(2, 0x5a)
25711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
25811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
259