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

Subversion Repositories or1k_old

[/] [or1k_old/] [trunk/] [uclinux/] [uClinux-2.0.x/] [drivers/] [scsi/] [aha1542.h] - Blame information for rev 1782

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 199 simons
#ifndef _AHA1542_H
2
 
3
/* $Id: aha1542.h,v 1.1.1.1 2001-09-10 07:44:30 simons Exp $
4
 *
5
 * Header file for the adaptec 1542 driver for Linux
6
 *
7
 * $Log: not supported by cvs2svn $
8
 * Revision 1.1.1.1  2001/07/02 17:58:27  simons
9
 * Initial revision
10
 *
11
 * Revision 1.1  1992/07/24  06:27:38  root
12
 * Initial revision
13
 *
14
 * Revision 1.2  1992/07/04  18:41:49  root
15
 * Replaced distribution with current drivers
16
 *
17
 * Revision 1.3  1992/06/23  23:58:20  root
18
 * Fixes.
19
 *
20
 * Revision 1.2  1992/05/26  22:13:23  root
21
 * Changed bug that prevented DMA above first 2 mbytes.
22
 *
23
 * Revision 1.1  1992/05/22  21:00:29  root
24
 * Initial revision
25
 *
26
 * Revision 1.1  1992/04/24  18:01:50  root
27
 * Initial revision
28
 *
29
 * Revision 1.1  1992/04/02  03:23:13  drew
30
 * Initial revision
31
 *
32
 * Revision 1.3  1992/01/27  14:46:29  tthorn
33
 * *** empty log message ***
34
 *
35
 */
36
 
37
#include <linux/types.h>
38
#include <linux/kdev_t.h>
39
 
40
/* I/O Port interface 4.2 */
41
/* READ */
42
#define STATUS(base) base
43
#define STST    0x80            /* Self Test in Progress */
44
#define DIAGF   0x40            /* Internal Diagnostic Failure */
45
#define INIT    0x20            /* Mailbox Initialization Required */
46
#define IDLE    0x10            /* SCSI Host Adapter Idle */
47
#define CDF     0x08            /* Command/Data Out Port Full */
48
#define DF      0x04            /* Data In Port Full */
49
#define INVDCMD 0x01            /* Invalid H A Command */
50
#define STATMASK 0xfd           /* 0x02 is reserved */
51
 
52
#define INTRFLAGS(base) (STATUS(base)+2)
53
#define ANYINTR 0x80            /* Any Interrupt */
54
#define SCRD    0x08            /* SCSI Reset Detected */
55
#define HACC    0x04            /* HA Command Complete */
56
#define MBOA    0x02            /* MBO Empty */
57
#define MBIF    0x01            /* MBI Full */
58
#define INTRMASK 0x8f
59
 
60
/* WRITE */
61
#define CONTROL(base) STATUS(base)
62
#define HRST    0x80            /* Hard Reset */
63
#define SRST    0x40            /* Soft Reset */
64
#define IRST    0x20            /* Interrupt Reset */
65
#define SCRST   0x10            /* SCSI Bus Reset */
66
 
67
/* READ/WRITE */
68
#define DATA(base) (STATUS(base)+1)
69
#define CMD_NOP         0x00    /* No Operation */
70
#define CMD_MBINIT      0x01    /* Mailbox Initialization */
71
#define CMD_START_SCSI  0x02    /* Start SCSI Command */
72
#define CMD_INQUIRY     0x04    /* Adapter Inquiry */
73
#define CMD_EMBOI       0x05    /* Enable MailBox Out Interrupt */
74
#define CMD_BUSON_TIME  0x07    /* Set Bus-On Time */
75
#define CMD_BUSOFF_TIME 0x08    /* Set Bus-Off Time */
76
#define CMD_DMASPEED    0x09    /* Set AT Bus Transfer Speed */
77
#define CMD_RETDEVS     0x0a    /* Return Installed Devices */
78
#define CMD_RETCONF     0x0b    /* Return Configuration Data */
79
#define CMD_RETSETUP    0x0d    /* Return Setup Data */
80
#define CMD_ECHO        0x1f    /* ECHO Command Data */
81
 
82
#define CMD_EXTBIOS     0x28    /* Return extend bios information only 1542C */
83
#define CMD_MBENABLE    0x29    /* Set Mailbox Interface enable only 1542C */
84
 
85
/* Mailbox Definition 5.2.1 and 5.2.2 */
86
struct mailbox {
87
  unchar status;                /* Command/Status */
88
  unchar ccbptr[3];             /* msb, .., lsb */
89
};
90
 
91
/* This is used with scatter-gather */
92
struct chain {
93
  unchar datalen[3];            /* Size of this part of chain */
94
  unchar dataptr[3];            /* Location of data */
95
};
96
 
97
/* These belong in scsi.h also */
98
#define any2scsi(up, p)                         \
99
(up)[0] = (((unsigned long)(p)) >> 16)  ;        \
100
(up)[1] = (((unsigned long)(p)) >> 8);          \
101
(up)[2] = ((unsigned long)(p));
102
 
103
#define scsi2int(up) ( (((long)*(up)) << 16) + (((long)(up)[1]) << 8) + ((long)(up)[2]) )
104
 
105
#define xany2scsi(up, p)        \
106
(up)[0] = ((long)(p)) >> 24;     \
107
(up)[1] = ((long)(p)) >> 16;    \
108
(up)[2] = ((long)(p)) >> 8;     \
109
(up)[3] = ((long)(p));
110
 
111
#define xscsi2int(up) ( (((long)(up)[0]) << 24) + (((long)(up)[1]) << 16) \
112
                      + (((long)(up)[2]) <<  8) +  ((long)(up)[3]) )
113
 
114
#define MAX_CDB 12
115
#define MAX_SENSE 14
116
 
117
struct ccb {                    /* Command Control Block 5.3 */
118
  unchar op;                    /* Command Control Block Operation Code */
119
  unchar idlun;                 /* op=0,2:Target Id, op=1:Initiator Id */
120
                                /* Outbound data transfer, length is checked*/
121
                                /* Inbound data transfer, length is checked */
122
                                /* Logical Unit Number */
123
  unchar cdblen;                /* SCSI Command Length */
124
  unchar rsalen;                /* Request Sense Allocation Length/Disable */
125
  unchar datalen[3];            /* Data Length (msb, .., lsb) */
126
  unchar dataptr[3];            /* Data Pointer */
127
  unchar linkptr[3];            /* Link Pointer */
128
  unchar commlinkid;            /* Command Linking Identifier */
129
  unchar hastat;                /* Host Adapter Status (HASTAT) */
130
  unchar tarstat;               /* Target Device Status */
131
  unchar reserved[2];
132
  unchar cdb[MAX_CDB+MAX_SENSE];/* SCSI Command Descriptor Block */
133
                                /* REQUEST SENSE */
134
};
135
 
136
int aha1542_detect(Scsi_Host_Template *);
137
int aha1542_command(Scsi_Cmnd *);
138
int aha1542_queuecommand(Scsi_Cmnd *, void (*done)(Scsi_Cmnd *));
139
int aha1542_abort(Scsi_Cmnd *);
140
int aha1542_reset(Scsi_Cmnd *, unsigned int);
141
int aha1542_biosparam(Disk *, kdev_t, int*);
142
 
143
#define AHA1542_MAILBOXES 8
144
#define AHA1542_SCATTER 16
145
#define AHA1542_CMDLUN 1
146
 
147
#ifndef NULL
148
        #define NULL 0
149
#endif
150
 
151
extern struct proc_dir_entry proc_scsi_aha1542;
152
 
153
#define AHA1542 {  NULL, NULL,                          \
154
                     &proc_scsi_aha1542,/* proc_dir_entry */ \
155
                     NULL,                              \
156
                     "Adaptec 1542",                    \
157
                     aha1542_detect,                    \
158
                     NULL,                              \
159
                     NULL,                              \
160
                     aha1542_command,                   \
161
                     aha1542_queuecommand,              \
162
                     aha1542_abort,                     \
163
                     aha1542_reset,                     \
164
                     NULL,                              \
165
                     aha1542_biosparam,                 \
166
                     AHA1542_MAILBOXES,                 \
167
                     7,                                 \
168
                     AHA1542_SCATTER,                   \
169
                     AHA1542_CMDLUN,                    \
170
                     0,                          \
171
                     1,                                 \
172
                     ENABLE_CLUSTERING}
173
 
174
#endif

powered by: WebSVN 2.1.0

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