~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux/include/asm-m68k/swim_iop.h

Version: ~ [ 2.4.0 ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /*
  2  * SWIM access through the IOP
  3  * Written by Joshua M. Thompson
  4  */
  5 
  6 /* IOP number and channel number for the SWIM */
  7 
  8 #define SWIM_IOP        IOP_NUM_ISM
  9 #define SWIM_CHAN       1
 10 
 11 /* Command code: */
 12 
 13 #define CMD_INIT                0x01    /* Initialize                  */
 14 #define CMD_SHUTDOWN            0x02    /* Shutdown                    */
 15 #define CMD_START_POLL          0x03    /* Start insert/eject polling  */
 16 #define CMD_STOP_POLL           0x04    /* Stop insert/eject polling   */
 17 #define CMD_SETHFSTAG           0x05    /* Set HFS tag buffer address  */
 18 #define CMD_STATUS              0x06    /* Status                      */
 19 #define CMD_EJECT               0x07    /* Eject                       */
 20 #define CMD_FORMAT              0x08    /* Format                      */
 21 #define CMD_FORMAT_VERIFY       0x09    /* Format and Verify           */
 22 #define CMD_WRITE               0x0A    /* Write                       */
 23 #define CMD_READ                0x0B    /* Read                        */
 24 #define CMD_READ_VERIFY         0x0C    /* Read and Verify             */
 25 #define CMD_CACHE_CTRL          0x0D    /* Cache control               */
 26 #define CMD_TAGBUFF_CTRL        0x0E    /* Tag buffer control          */
 27 #define CMD_GET_ICON            0x0F    /* Get Icon                    */
 28 
 29 /* Drive types: */
 30 
 31 /* note: apple sez DRV_FDHD is 4, but I get back a type */
 32 /*       of 5 when I do a drive status check on my FDHD */
 33 
 34 #define DRV_NONE        0       /* No drive             */
 35 #define DRV_UNKNOWN     1       /* Unspecified drive    */
 36 #define DRV_400K        2       /* 400K                 */
 37 #define DRV_800K        3       /* 400K/800K            */
 38 #define DRV_FDHD        5       /* 400K/800K/720K/1440K */
 39 #define DRV_HD20        7       /* Apple HD20           */
 40 
 41 /* Format types: */
 42 
 43 #define FMT_HD20        0x0001  /*  Apple HD20 */
 44 #define FMT_400K        0x0002  /*  400K (GCR) */
 45 #define FMT_800K        0x0004  /*  800K (GCR) */
 46 #define FMT_720K        0x0008  /*  720K (MFM) */
 47 #define FMT_1440K       0x0010  /* 1.44M (MFM) */
 48 
 49 #define FMD_KIND_400K   1
 50 #define FMD_KIND_800K   2
 51 #define FMD_KIND_720K   3
 52 #define FMD_KIND_1440K  1
 53 
 54 /* Icon Flags: */
 55 
 56 #define ICON_MEDIA      0x01    /* Have IOP supply media icon */
 57 #define ICON_DRIVE      0x01    /* Have IOP supply drive icon */
 58 
 59 /* Error codes: */
 60 
 61 #define gcrOnMFMErr     -400    /* GCR (400/800K) on HD media */
 62 #define verErr          -84     /* verify failed */
 63 #define fmt2Err         -83     /* cant get enough sync during format */
 64 #define fmt1Err         -82     /* can't find sector 0 after track format */
 65 #define sectNFErr       -81     /* can't find sector */
 66 #define seekErr         -80     /* drive error during seek */
 67 #define spdAdjErr       -79     /* can't set drive speed */
 68 #define twoSideErr      -78     /* drive is single-sided */
 69 #define initIWMErr      -77     /* error during initialization */
 70 #define tk0badErr       -76     /* track zero is bad */
 71 #define cantStepErr     -75     /* drive error during step */
 72 #define wrUnderrun      -74     /* write underrun occurred */
 73 #define badDBtSlp       -73     /* bad data bitslip marks */
 74 #define badDCksum       -72     /* bad data checksum */
 75 #define noDtaMkErr      -71     /* can't find data mark */
 76 #define badBtSlpErr     -70     /* bad address bitslip marks */
 77 #define badCksmErr      -69     /* bad address-mark checksum */
 78 #define dataVerErr      -68     /* read-verify failed */
 79 #define noAdrMkErr      -67     /* can't find an address mark */
 80 #define noNybErr        -66     /* no nybbles? disk is probably degaussed */
 81 #define offLinErr       -65     /* no disk in drive */
 82 #define noDriveErr      -64     /* drive isn't connected */
 83 #define nsDrvErr        -56     /* no such drive */
 84 #define paramErr        -50     /* bad positioning information */
 85 #define wPrErr          -44     /* write protected */
 86 #define openErr         -23     /* already initialized */
 87 
 88 #ifndef __ASSEMBLY__
 89 
 90 struct swim_drvstatus {
 91         __u16   curr_track;     /* Current track number                   */
 92         __u8    write_prot;     /* 0x80 if disk is write protected        */
 93         __u8    disk_in_drive;  /* 0x01 or 0x02 if a disk is in the drive */
 94         __u8    installed;      /* 0x01 if drive installed, 0xFF if not   */
 95         __u8    num_sides;      /* 0x80 if two-sided format supported     */
 96         __u8    two_sided;      /* 0xff if two-sided format diskette      */
 97         __u8    new_interface;  /* 0x00 if old 400K drive, 0xFF if newer  */
 98         __u16   errors;         /* Disk error count                       */
 99         struct {                /* 32 bits */
100                 __u16   reserved;
101                 __u16   :4;
102                 __u16   external:1;     /* Drive is external        */
103                 __u16   scsi:1;         /* Drive is a SCSI drive    */
104                 __u16   fixed:1;        /* Drive has fixed media    */
105                 __u16   secondary:1;    /* Drive is secondary drive */
106                 __u8    type;           /* Drive type               */
107         } info;
108         __u8    mfm_drive;      /* 0xFF if this is an FDHD drive    */
109         __u8    mfm_disk;       /* 0xFF if 720K/1440K (MFM) disk    */
110         __u8    mfm_format;     /* 0x00 if 720K, 0xFF if 1440K      */
111         __u8    ctlr_type;      /* 0x00 if IWM, 0xFF if SWIM        */
112         __u16   curr_format;    /* Current format type              */
113         __u16   allowed_fmt;    /* Allowed format types             */
114         __u32   num_blocks;     /* Number of blocks on disk         */
115         __u8    icon_flags;     /* Icon flags                       */
116         __u8    unusued;
117 };
118 
119 /* Commands issued from the host to the IOP: */
120 
121 struct swimcmd_init {
122         __u8    code;           /* CMD_INIT */
123         __u8    unusued;
124         __u16   error;
125         __u8    drives[28];     /* drive type list */
126 };
127 
128 struct swimcmd_startpoll {
129         __u8    code;           /* CMD_START_POLL */
130         __u8    unusued;
131         __u16   error;
132 };
133 
134 struct swimcmd_sethfstag {
135         __u8    code;           /* CMD_SETHFSTAG */
136         __u8    unusued;
137         __u16   error;
138         caddr_t tagbuf;         /* HFS tag buffer address */
139 };
140 
141 struct swimcmd_status {
142         __u8    code;           /* CMD_STATUS */
143         __u8    drive_num;
144         __u16   error;
145         struct swim_drvstatus status;
146 };
147 
148 struct swimcmd_eject {
149         __u8    code;           /* CMD_EJECT */
150         __u8    drive_num;
151         __u16   error;
152         struct swim_drvstatus status;
153 };
154 
155 struct swimcmd_format {
156         __u8    code;           /* CMD_FORMAT */
157         __u8    drive_num;
158         __u16   error;
159         union {
160                 struct {
161                         __u16 fmt;         /* format kind                  */
162                         __u8  hdrbyte;     /* fmt byte for hdr (0=default) */
163                         __u8  interleave;  /* interleave (0 = default)     */
164                         caddr_t databuf;   /* sector data buff (0=default  */
165                         caddr_t tagbuf;    /* tag data buffer (0=default)  */
166                 } f;
167                 struct swim_drvstatus status;
168         } p;
169 };
170 
171 struct swimcmd_fmtverify {
172         __u8    code;           /* CMD_FORMAT_VERIFY */
173         __u8    drive_num;
174         __u16   error;
175 };
176 
177 struct swimcmd_rw {
178         __u8    code;           /* CMD_READ, CMD_WRITE or CMD_READ_VERIFY */
179         __u8    drive_num;
180         __u16   error;
181         caddr_t buffer;         /* R/W buffer address */
182         __u32   first_block;    /* Starting block     */
183         __u32   num_blocks;     /* Number of blocks   */
184         __u8    tag[12];        /* tag data           */
185 };
186 
187 struct swimcmd_cachectl {
188         __u8    code;           /* CMD_CACHE_CTRL */
189         __u8    unused;
190         __u16   error;
191         __u8    enable;         /* Nonzero to enable cache                */
192         __u8    install;        /* +1 = install, -1 = remove, 0 = neither */
193 };
194 
195 struct swimcmd_tagbufctl {
196         __u8    code;           /* CMD_TAGBUFF_CTRL */
197         __u8    unused;
198         __u16   error;
199         caddr_t buf;            /* buffer address or 0 to disable */
200 };
201 
202 struct swimcmd_geticon {
203         __u8    code;           /* CMD_GET_ICON */
204         __u8    drive_num;
205         __u16   error;
206         caddr_t buffer;         /* Nuffer address */
207         __u16   kind;           /* 0 = media icon, 1 = drive icon */
208         __u16   unused;
209         __u16   max_bytes;      /* maximum  byte count */
210 };
211 
212 /* Messages from the SWIM IOP to the host CPU: */
213 
214 struct swimmsg_status {
215         __u8    code;           /* 1 = insert, 2 = eject, 3 = status changed */
216         __u8    drive_num;
217         __u16   error;
218         struct swim_drvstatus status;
219 };
220 
221 #endif /* __ASSEMBLY__ */
222 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.