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

Subversion Repositories or1k

[/] [or1k/] [trunk/] [rc203soc/] [sw/] [uClinux/] [drivers/] [scsi/] [psi_roy.h] - Blame information for rev 1626

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

Line No. Rev Author Line
1 1626 jcastillo
/*+M*************************************************************************
2
 * Perceptive Solutions, Inc. PCI-2000 device driver proc support for Linux.
3
 *
4
 * Copyright (c) 1997 Perceptive Solutions, Inc.
5
 *
6
 * This program is free software; you can redistribute it and/or modify
7
 * it under the terms of the GNU General Public License as published by
8
 * the Free Software Foundation; either version 2, or (at your option)
9
 * any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; see the file COPYING.  If not, write to
18
 * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
19
 *
20
 *
21
 *      File Name:      psi_roy.h
22
 *
23
 *      Description:    This file contains the host interface command and
24
 *                                      error codes.
25
 *
26
 *-M*************************************************************************/
27
 
28
#ifndef ROY_HOST
29
#define ROY_HOST
30
 
31
/************************************************/
32
/*              PCI setup                                                               */
33
/************************************************/
34
#define VENDOR_PSI                      0x1256
35
#define DEVICE_ROY_1            0x5201          /* 'R1' */
36
 
37
/************************************************/
38
/*              controller constants                                    */
39
/************************************************/
40
#define MAXADAPTER                      4                       // Increase this and the sizes of the arrays below, if you need more.
41
#define MAX_BUS                         2
42
#define MAX_UNITS                       16
43
#define TIMEOUT_COMMAND         30                      // number of jiffies for command busy timeout
44
 
45
/************************************************/
46
/*              I/O address offsets                                             */
47
/************************************************/
48
#define RTR_MAILBOX                                             0x040
49
#define RTR_LOCAL_DOORBELL                              0x060
50
#define RTR_PCI_DOORBELL                                0x064
51
 
52
/************************************************/
53
/*                                                                                              */
54
/*                      Host command codes                                      */
55
/*                                                                                              */
56
/************************************************/
57
#define CMD_READ_CHS            0x01            /* read sectors as specified (CHS mode) */
58
#define CMD_READ                        0x02            /* read sectors as specified (RBA mode) */
59
#define CMD_READ_SG                     0x03            /* read sectors using scatter/gather list */
60
#define CMD_WRITE_CHS           0x04            /* write sectors as specified (CHS mode) */
61
#define CMD_WRITE                       0x05            /* write sectors as specified (RBA mode) */
62
#define CMD_WRITE_SG            0x06            /* write sectors using scatter/gather list (LBA mode) */
63
#define CMD_READ_CHS_SG         0x07            /* read sectors using scatter/gather list (CHS mode) */
64
#define CMD_WRITE_CHS_SG        0x08            /* write sectors using scatter/gather list (CHS mode) */
65
#define CMD_VERIFY_CHS          0x09            /* verify data on sectors as specified (CHS mode) */
66
#define CMD_VERIFY                      0x0A            /* verify data on sectors as specified (RBA mode) */
67
#define CMD_DASD_CDB            0x0B            /* process CDB for a DASD device */
68
#define CMD_DASD_CDB_SG         0x0C            /* process CDB for a DASD device with scatter/gather */
69
 
70
#define CMD_READ_ABS            0x10            /* read absolute disk */
71
#define CMD_WRITE_ABS           0x11            /* write absolute disk */
72
#define CMD_VERIFY_ABS          0x12            /* verify absolute disk */
73
#define CMD_TEST_READY          0x13            /* test unit ready and return status code */
74
#define CMD_LOCK_DOOR           0x14            /* lock device door */
75
#define CMD_UNLOCK_DOOR         0x15            /* unlock device door */
76
#define CMD_EJECT_MEDIA         0x16            /* eject the media */
77
#define CMD_UPDATE_CAP          0x17            /* update capacity information */
78
#define CMD_TEST_PRIV           0x18            /* test and setup private format media */
79
 
80
 
81
#define CMD_SCSI_THRU           0x30            /* SCSI pass through CDB */
82
#define CMD_SCSI_THRU_SG        0x31            /* SCSI pass through CDB with scatter/gather */
83
#define CMD_SCSI_REQ_SENSE      0x32            /* SCSI pass through request sense after check condition */
84
 
85
#define CMD_DASD_RAID_RQ        0x35            /* request DASD RAID drive data */
86
#define CMD_DASD_RAID_RQ0       0x31                    /* byte 1 subcommand to query for RAID 0 informatation */
87
#define CMD_DASD_RAID_RQ1       0x32                    /* byte 1 subcommand to query for RAID 1 informatation */
88
#define CMD_DASD_RAID_RQ5       0x33                    /* byte 1 subcommand to query for RAID 5 informatation */
89
 
90
#define CMD_DASD_SCSI_INQ       0x36            /* do DASD inquire and return in SCSI format */
91
#define CMD_DASD_CAP            0x37            /* read DASD capacity */
92
#define CMD_DASD_INQ            0x38            /* do DASD inquire for type data and return SCSI/EIDE inquiry */
93
#define CMD_SCSI_INQ            0x39            /* do SCSI inquire */
94
#define CMD_READ_SETUP          0x3A            /* Get setup structures from controller */
95
#define CMD_WRITE_SETUP         0x3B            /* Put setup structures in controller and burn in flash */
96
#define CMD_READ_CONFIG         0x3C            /* Get the entire configuration and setup structures */
97
#define CMD_WRITE_CONFIG        0x3D            /* Put the entire configuration and setup structures in flash */
98
 
99
#define CMD_TEXT_DEVICE         0x3E            /* obtain device text */
100
#define CMD_TEXT_SIGNON         0x3F            /* get sign on banner */
101
 
102
#define CMD_QUEUE                       0x40            /* any command below this generates a queue tag interrupt to host*/
103
 
104
#define CMD_PREFETCH            0x40            /* prefetch sectors as specified */
105
#define CMD_TEST_WRITE          0x41            /* Test a device for write protect */
106
#define CMD_LAST_STATUS         0x42            /* get last command status and error data*/
107
#define CMD_ABORT                       0x43            /* abort command as specified */
108
#define CMD_ERROR                       0x44            /* fetch error code from a tagged op */
109
#define CMD_DONE                        0x45            /* done with operation */
110
#define CMD_DIAGNOSTICS         0x46            /* execute controller diagnostics and wait for results */
111
#define CMD_FEATURE_MODE        0x47            /* feature mode control word */
112
#define CMD_DASD_INQUIRE        0x48            /* inquire as to DASD SCSI device (32 possible) */
113
#define CMD_FEATURE_QUERY       0x49            /* query the feature control word */
114
#define CMD_DASD_EJECT          0x4A            /* Eject removable media for DASD type */
115
#define CMD_DASD_LOCK           0x4B            /* Lock removable media for DASD type */
116
#define CMD_DASD_TYPE           0x4C            /* obtain DASD device type */
117
#define CMD_NUM_DEV                     0x4D            /* obtain the number of devices connected to the controller */
118
#define CMD_GET_PARMS           0x4E            /* obtain device parameters */
119
#define CMD_SPECIFY                     0x4F            /* specify operating system for scatter/gather operations */
120
 
121
#define CMD_RAID_GET_DEV        0x50            /* read RAID device geometry */
122
#define CMD_RAID_READ           0x51            /* read RAID 1 parameter block */
123
#define CMD_RAID_WRITE          0x52            /* write RAID 1 parameter block */
124
#define CMD_RAID_LITEUP         0x53            /* Light up the drive light for identification */
125
#define CMD_RAID_REBUILD        0x54            /* issue a RAID 1 pair rebuild */
126
#define CMD_RAID_MUTE           0x55            /* mute RAID failure alarm */
127
#define CMD_RAID_FAIL           0x56            /* induce a RAID failure */
128
#define CMD_RAID_STATUS         0x57            /* get status of RAID pair */
129
#define CMD_RAID_STOP           0x58            /* stop any reconstruct in progress */
130
#define CMD_RAID_START          0x59            /* start reconstruct */
131
#define CMD_RAID0_READ          0x5A            /* read RAID 0 parameter block */
132
#define CMD_RAID0_WRITE         0x5B            /* write RAID 0 parameter block */
133
#define CMD_RAID5_READ          0x5C            /* read RAID 5 parameter block */
134
#define CMD_RAID5_WRITE         0x5D            /* write RAID 5 parameter block */
135
 
136
#define CMD_ERASE_TABLES        0x5F            /* erase partition table and RAID signatutures */
137
 
138
#define CMD_SCSI_GET            0x60            /* get SCSI pass through devices */
139
#define CMD_SCSI_TIMEOUT        0x61            /* set SCSI pass through timeout */
140
#define CMD_SCSI_ERROR          0x62            /* get SCSI pass through request sense length and residual data count */
141
#define CMD_GET_SPARMS          0x63            /* get SCSI bus and user parms */
142
#define CMD_SCSI_ABORT          0x64            /* abort by setting time-out to zero */
143
 
144
#define CMD_CHIRP_CHIRP         0x77            /* make a chirp chirp sound */
145
#define CMD_GET_LAST_DONE       0x78            /* get tag of last done in progress */
146
#define CMD_GET_FEATURES        0x79            /* get feature code and ESN */
147
#define CMD_CLEAR_CACHE         0x7A            /* Clear cache on specified device */
148
#define CMD_BIOS_TEST           0x7B            /* Test whether or not to load BIOS */
149
#define CMD_WAIT_FLUSH          0x7C            /* wait for cache flushed and invalidate read cache */
150
#define CMD_RESET_BUS           0x7D            /* reset the SCSI bus */
151
#define CMD_STARTUP_QRY         0x7E            /* startup in progress query */
152
#define CMD_RESET                       0x7F            /* reset the controller */
153
 
154
#define CMD_RESTART_RESET       0x80            /* reload and restart the controller at any reset issued */
155
#define CMD_SOFT_RESET          0x81            /* do a soft reset NOW! */
156
 
157
/************************************************/
158
/*                                                                                              */
159
/*                              Host return errors                              */
160
/*                                                                                              */
161
/************************************************/
162
#define ERR08_TAGGED            0x80            /* doorbell error ored with tag */
163
 
164
#define ERR16_NONE                      0x0000          /* no errors */
165
#define ERR16_SC_COND_MET       0x0004          /* SCSI status - Condition Met */
166
#define ERR16_CMD                       0x0101          /* command error */
167
#define ERR16_SC_CHECK_COND     0x0002          /* SCSI status - Check Condition */
168
#define ERR16_CMD_NOT           0x0201          /* command not supported */
169
#define ERR16_NO_DEVICE     0x0301              /* invalid device selection */
170
#define ERR16_SECTOR            0x0202          /* bad sector */
171
#define ERR16_PROTECT           0x0303          /* write protected */
172
#define ERR16_NOSECTOR          0x0404          /* sector not found */
173
#define ERR16_MEDIA                     0x0C0C          /* invalid media */
174
#define ERR16_CONTROL           0x2020          /* controller error */
175
#define ERR16_CONTROL_DMA       0x2120          /* controller DMA engine error */
176
#define ERR16_NO_ALARM          0x2220          /* alarm is not active */
177
#define ERR16_OP_BUSY           0x2320          /* operation busy */
178
#define ERR16_SEEK                      0x4040          /* seek failure */
179
#define ERR16_DEVICE_FAIL       0x4140          /* device has failed */
180
#define ERR16_TIMEOUT           0x8080          /* timeout error */
181
#define ERR16_DEV_NOT_READY     0xAAAA          /* drive not ready */
182
#define ERR16_UNDEFINED         0xBBBB          /* undefined error */
183
#define ERR16_WRITE_FAULT       0xCCCC          /* write fault */
184
#define ERR16_INVALID_DEV       0x4001          /* invalid device access */
185
#define ERR16_DEVICE_BUSY       0x4002          /* device is busy */
186
#define ERR16_MEMORY            0x4003          /* device pass thru requires too much memory */
187
#define ERR16_NO_FEATURE        0x40FA          /* feature no implemented */
188
#define ERR16_NOTAG                     0x40FD          /* no tag space available */
189
#define ERR16_NOT_READY         0x40FE          /* controller not ready error */
190
#define ERR16_SETUP_FLASH       0x5050          /* error when writing setup to flash memory */
191
#define ERR16_SETUP_SIZE        0x5051          /* setup block size error */
192
#define ERR16_SENSE                     0xFFFF          /* sense opereration failed */
193
#define ERR16_SC_BUSY           0x0008          /* SCSI status - Busy */
194
#define ERR16_SC_RES_CONFL      0x0018          /* SCSI status - Reservation Conflict */
195
#define ERR16_SC_CMD_TERM       0x0022          /* SCSI status - Command Terminated */
196
#define ERR16_SC_OTHER          0x00FF          /* SCSI status - not recognized (any value masked) */
197
#define ERR16_MEDIA_CHANGED     0x8001          /* devices media has been changed */
198
 
199
#define ERR32_NONE                      0x00000000      /* no errors */
200
#define ERR32_SC_COND_MET       0x00000004      /* SCSI status - Condition Met */
201
#define ERR32_CMD                       0x00010101      /* command error */
202
#define ERR32_SC_CHECK_COND     0x00020002      /* SCSI status - Check Condition */
203
#define ERR32_CMD_NOT           0x00030201      /* command not supported */
204
#define ERR32_NO_DEVICE     0x00040301  /* invalid device selection */
205
#define ERR32_SECTOR            0x00050202      /* bad sector */
206
#define ERR32_PROTECT           0x00060303      /* write protected */
207
#define ERR32_NOSECTOR          0x00070404      /* sector not found */
208
#define ERR32_MEDIA                     0x00080C0C      /* invalid media */
209
#define ERR32_CONTROL           0x00092020      /* controller error */
210
#define ERR32_CONTROL_DMA       0x000A2120      /* Controller DMA error */
211
#define ERR32_NO_ALARM          0x000B2220      /* alarm is not active */
212
#define ERR32_OP_BUSY           0x000C2320      /* operation busy */
213
#define ERR32_SEEK                      0x000D4040      /* seek failure */
214
#define ERR32_DEVICE_FAIL       0x000E4140      /* device has failed */
215
#define ERR32_TIMEOUT           0x000F8080      /* timeout error */
216
#define ERR32_DEV_NOT_READY     0x0010AAAA      /* drive not ready */
217
#define ERR32_UNDEFINED         0x0011BBBB      /* undefined error */
218
#define ERR32_WRITE_FAULT       0x0012CCCC      /* write fault */
219
#define ERR32_INVALID_DEV       0x00134001      /* invalid device access */
220
#define ERR32_DEVICE_BUSY       0x00144002      /* device is busy */
221
#define ERR32_MEMORY            0x00154003      /* device pass thru requires too much memory */
222
#define ERR32_NO_FEATURE        0x001640FA      /* feature no implemented */
223
#define ERR32_NOTAG                     0x001740FD      /* no tag space available */
224
#define ERR32_NOT_READY         0x001840FE      /* controller not ready error */
225
#define ERR32_SETUP_FLASH       0x00195050      /* error when writing setup to flash memory */
226
#define ERR32_SETUP_SIZE        0x001A5051      /* setup block size error */
227
#define ERR32_SENSE                     0x001BFFFF      /* sense opereration failed */
228
#define ERR32_SC_BUSY           0x001C0008      /* SCSI status - Busy */
229
#define ERR32_SC_RES_CONFL      0x001D0018      /* SCSI status - Reservation Conflict */
230
#define ERR32_SC_CMD_TERM       0x001E0022      /* SCSI status - Command Terminated */
231
#define ERR32_SC_OTHER          0x001F00FF      /* SCSI status - not recognized (any value masked) */
232
#define ERR32_MEDIA_CHANGED     0x00208001      /* devices media has been changed */
233
 
234
/************************************************/
235
/*                                                                                              */
236
/*      Host Operating System specification codes       */
237
/*                                                                                              */
238
/************************************************/
239
#define SPEC_INTERRUPT          0x80            /* specification requires host interrupt */
240
#define SPEC_BACKWARD_SG        0x40            /* specification requires scatter/gather items reversed */
241
#define SPEC_DOS_BLOCK          0x01            /* DOS DASD blocking on pass through */
242
#define SPEC_OS2_V3                     0x02            /* OS/2 Warp */
243
#define SPCE_SCO_3242           0x04            /* SCO 3.4.2.2 */
244
#define SPEC_QNX_4X                     0x05            /* QNX 4.XX */
245
#define SPEC_NOVELL_NWPA        0x08            /* Novell NWPA scatter/gather support */
246
 
247
/************************************************/
248
/*                                                                                              */
249
/*      Inquire structures                                                      */
250
/*                                                                                              */
251
/************************************************/
252
typedef struct  _CNT_SCSI_INQ
253
        {
254
        UCHAR   devt;                                           /* 00: device type */
255
        UCHAR   devtm;                                          /* 01: device type modifier */
256
        UCHAR   svers;                                          /* 02: SCSI version */
257
        UCHAR   rfmt;                                           /* 03: response data format */
258
        UCHAR   adlen;                                          /* 04: additional length of data */
259
        UCHAR   res1;                                           /* 05: */
260
        UCHAR   res2;                                           /* 06: */
261
        UCHAR   fncs;                                           /* 07: functional capabilities */
262
        UCHAR   vid[8];                                         /* 08: vendor ID */
263
        UCHAR   pid[16];                                        /* 10: product ID */
264
        UCHAR   rev[4];                                         /* 20: product revision */
265
        }       CNT_SCSI_INQ;
266
 
267
typedef struct  _CNT_IDE_INQ
268
        {
269
        USHORT  GeneralConfiguration;           /* 00 */
270
        USHORT  NumberOfCylinders;                      /* 02 */
271
        USHORT  Reserved1;                                      /* 04 */
272
        USHORT  NumberOfHeads;                          /* 06 */
273
        USHORT  UnformattedBytesPerTrack;       /* 08 */
274
        USHORT  UnformattedBytesPerSector;      /* 0A */
275
        USHORT  SectorsPerTrack;                        /* 0C */
276
        USHORT  VendorUnique1[3];                       /* 0E */
277
        USHORT  SerialNumber[10];                       /* 14 */
278
        USHORT  BufferType;                                     /* 28 */
279
        USHORT  BufferSectorSize;                       /* 2A */
280
        USHORT  NumberOfEccBytes;                       /* 2C */
281
        USHORT  FirmwareRevision[4];            /* 2E */
282
        USHORT  ModelNumber[20];                        /* 36 */
283
        UCHAR   MaximumBlockTransfer;           /* 5E */
284
        UCHAR   VendorUnique2;                          /* 5F */
285
        USHORT  DoubleWordIo;                           /* 60 */
286
        USHORT  Capabilities;                           /* 62 */
287
        USHORT  Reserved2;                                      /* 64 */
288
        UCHAR   VendorUnique3;                          /* 66 */
289
        UCHAR   PioCycleTimingMode;                     /* 67 */
290
        UCHAR   VendorUnique4;                          /* 68 */
291
        UCHAR   DmaCycleTimingMode;                     /* 69 */
292
        USHORT  TranslationFieldsValid;         /* 6A */
293
        USHORT  NumberOfCurrentCylinders;       /* 6C */
294
        USHORT  NumberOfCurrentHeads;           /* 6E */
295
        USHORT  CurrentSectorsPerTrack;         /* 70 */
296
        ULONG   CurrentSectorCapacity;          /* 72 */
297
        }       CNT_IDE_INQ;
298
 
299
typedef struct  _DASD_INQUIRE
300
        {
301
        ULONG   type;                                           /* 0 = SCSI, 1 = IDE */
302
        union
303
                {
304
                CNT_SCSI_INQ    scsi;                   /* SCSI inquire data */
305
                CNT_IDE_INQ             ide;                    /* IDE inquire data */
306
                }       inq;
307
        }       DASD_INQUIRE;
308
 
309
/************************************************/
310
/*                                                                                              */
311
/*      Device Codes                                                            */
312
/*                                                                                              */
313
/************************************************/
314
#define DEVC_DASD                       0x00            /* Direct-access Storage Device */
315
#define DEVC_SEQACESS           0x01            /* Sequential-access device */
316
#define DEVC_PRINTER            0x02            /* Printer device */
317
#define DEVC_PROCESSOR          0x03            /* Processor device */
318
#define DEVC_WRITEONCE          0x04            /* Write-once device */
319
#define DEVC_CDROM                      0x05            /* CD-ROM device */
320
#define DEVC_SCANNER            0x06            /* Scanner device */
321
#define DEVC_OPTICAL            0x07            /* Optical memory device */
322
#define DEVC_MEDCHGR            0x08            /* Medium changer device */
323
#define DEVC_DASD_REMOVABLE     0x80            /* Direct-access storage device, Removable */
324
#define DEVC_NONE                       0xFF            /* no device */
325
 
326
// SCSI controls for RAID
327
#define SC_MY_RAID                      0xBF                    // our special CDB command byte for Win95... interface
328
#define MY_SCSI_QUERY0          0x31                    // byte 1 subcommand to query driver for RAID 0 informatation
329
#define MY_SCSI_QUERY1          0x32                    // byte 1 subcommand to query driver for RAID 1 informatation
330
#define MY_SCSI_QUERY5          0x33                    // byte 1 subcommand to query driver for RAID 5 informatation
331
#define MY_SCSI_REBUILD         0x40                    // byte 1 subcommand to reconstruct a mirrored pair
332
#define MY_SCSI_DEMOFAIL        0x54                    // byte 1 subcommand for RAID failure demonstration
333
#define MY_SCSI_ALARMMUTE       0x60                    // byte 1 subcommand to mute any alarm currently on
334
 
335
 
336
#endif
337
 

powered by: WebSVN 2.1.0

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