OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [include/] [asm-m68k/] [swim_iop.h] - Blame information for rev 1276

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1276 phoenix
/*
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__ */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.