#ifndef _AMIFD_H1#define _AMIFD_H23/* Definitions for the Amiga floppy driver */45#include <linux/fd.h>67#define FD_MAX_UNITS 4 /* Max. Number of drives */8#define FLOPPY_MAX_SECTORS 22 /* Max. Number of sectors per track */910#ifndef ASSEMBLER1112struct fd_data_type {13char *name; /* description of data type */14int sects; /* sectors per track */15#ifdef __STDC__16int (*read_fkt)(int);17void (*write_fkt)(int);18#else19int (*read_fkt)(); /* read whole track */20void (*write_fkt)(); /* write whole track */21#endif22};2324/*25** Floppy type descriptions26*/2728struct fd_drive_type {29unsigned long code; /* code returned from drive */30char *name; /* description of drive */31unsigned int tracks; /* number of tracks */32unsigned int heads; /* number of heads */33unsigned int read_size; /* raw read size for one track */34unsigned int write_size; /* raw write size for one track */35unsigned int sect_mult; /* sectors and gap multiplier (HD = 2) */36unsigned int precomp1; /* start track for precomp 1 */37unsigned int precomp2; /* start track for precomp 2 */38unsigned int step_delay; /* time (in ms) for delay after step */39unsigned int settle_time; /* time to settle after dir change */40unsigned int side_time; /* time needed to change sides */41};4243struct amiga_floppy_struct {44struct fd_drive_type *type; /* type of floppy for this unit */45struct fd_data_type *dtype; /* type of floppy for this unit */46int track; /* current track (-1 == unknown) */47unsigned char *trackbuf; /* current track (kmaloc()'d */4849int blocks; /* total # blocks on disk */5051int changed; /* true when not known */52int disk; /* disk in drive (-1 == unknown) */53int motor; /* true when motor is at speed */54int busy; /* true when drive is active */55int dirty; /* true when trackbuf is not on disk */56int status; /* current error code for unit */57struct gendisk *gendisk;58};59#endif6061#endif626364