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

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [drivers/] [net/] [fc/] [tach.h] - Blame information for rev 1275

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

Line No. Rev Author Line
1 1275 phoenix
/**********************************************************************
2
 * Defines for the Tachyon Fibre Channel Controller and the Interphase
3
 * (i)chip TPI.
4
 *********************************************************************/
5
 
6
#ifndef _TACH_H
7
#define _TACH_H
8
 
9
#define MY_PAGE_SIZE       4096
10
#define REPLICATE          0xFF
11
#define MAX_NODES          127
12
#define BROADCAST          0xFFFFFF
13
#define BROADCAST_ADDR     0xFFFFFFFFFFFF
14
#define LOGIN_COMPLETED     2
15
#define LOGIN_ATTEMPTED     1
16
#define LOGIN_NOT_ATTEMPTED 0
17
#define TRUE                1
18
#define FALSE               0
19
 
20
#define TACHYON_LIMIT       0x01EF
21
#define TACHYON_OFFSET      0x200
22
 
23
/* Offsets to the (i) chip */
24
#define ICHIP_HW_CONTROL_REG_OFF    (0x080 - TACHYON_OFFSET)
25
#define ICHIP_HW_STATUS_REG_OFF     (0x084 - TACHYON_OFFSET)
26
#define ICHIP_HW_ADDR_MASK_REG_OFF  (0x090 - TACHYON_OFFSET)
27
 
28
/* (i)chip Hardware Control Register defines */
29
#define ICHIP_HCR_RESET         0x01
30
#define ICHIP_HCR_DERESET       0x0
31
#define ICHIP_HCR_ENABLE_INTA   0x0000003E 
32
#define ICHIP_HCR_ENABLE_INTB   0x003E0000
33
#define ICHIP_HCR_IWDATA_FIFO   0x800000
34
 
35
/* (i)chip Hardware Status Register defines */
36
#define ICHIP_HSR_INT_LATCH     0x02
37
 
38
/* (i)chip Hardware Address Mask Register defines */
39
#define ICHIP_HAMR_BYTE_SWAP_ADDR_TR    0x08
40
#define ICHIP_HAMR_BYTE_SWAP_NO_ADDR_TR 0x04
41
 
42
/* NOVRAM defines */
43
#define IPH5526_NOVRAM_SIZE 64
44
 
45
 
46
/* Offsets for the registers that correspond to the
47
 * Qs on the Tachyon (As defined in the Tachyon Manual).
48
 */
49
 
50
/* Outbound Command Queue (OCQ).
51
 */
52
#define OCQ_BASE_REGISTER_OFFSET        0x000  
53
#define OCQ_LENGTH_REGISTER_OFFSET      0x004
54
#define OCQ_PRODUCER_REGISTER_OFFSET    0x008  
55
#define OCQ_CONSUMER_REGISTER_OFFSET    0x00C 
56
 
57
/* Inbound Message Queue (IMQ).
58
 */
59
#define IMQ_BASE_REGISTER_OFFSET        0x080
60
#define IMQ_LENGTH_REGISTER_OFFSET      0x084
61
#define IMQ_CONSUMER_REGISTER_OFFSET    0x088
62
#define IMQ_PRODUCER_REGISTER_OFFSET    0x08C
63
 
64
/* Multiframe Sequence Buffer Queue (MFSBQ)
65
 */
66
#define MFSBQ_BASE_REGISTER_OFFSET      0x0C0
67
#define MFSBQ_LENGTH_REGISTER_OFFSET    0x0C4
68
#define MFSBQ_PRODUCER_REGISTER_OFFSET  0x0C8
69
#define MFSBQ_CONSUMER_REGISTER_OFFSET  0x0CC  
70
#define MFS_LENGTH_REGISTER_OFFSET      0x0D0
71
 
72
/* Single Frame Sequence Buffer Queue (SFSBQ)
73
 */
74
#define SFSBQ_BASE_REGISTER_OFFSET      0x100
75
#define SFSBQ_LENGTH_REGISTER_OFFSET    0x104
76
#define SFSBQ_PRODUCER_REGISTER_OFFSET  0x108
77
#define SFSBQ_CONSUMER_REGISTER_OFFSET  0x10C  
78
#define SFS_LENGTH_REGISTER_OFFSET      0x110
79
 
80
/* SCSI Exchange State Table (SEST)
81
 */
82
#define SEST_BASE_REGISTER_OFFSET       0x140
83
#define SEST_LENGTH_REGISTER_OFFSET     0x144
84
#define SCSI_LENGTH_REGISTER_OFFSET     0x148
85
 
86
/*  Length of the various Qs
87
 */
88
#define NO_OF_ENTRIES           8
89
#define OCQ_LENGTH              (MY_PAGE_SIZE/32)
90
#define IMQ_LENGTH              (MY_PAGE_SIZE/32)
91
#define MFSBQ_LENGTH            8
92
#define SFSBQ_LENGTH            8
93
#define SEST_LENGTH             MY_PAGE_SIZE
94
 
95
/* Size of the various buffers.
96
 */
97
#define TACH_FRAME_SIZE         2048
98
#define MFS_BUFFER_SIZE         TACH_FRAME_SIZE
99
#define SFS_BUFFER_SIZE         (TACH_FRAME_SIZE + TACHYON_HEADER_LEN)
100
#define SEST_BUFFER_SIZE        512
101
#define TACH_HEADER_SIZE        64
102
#define NO_OF_TACH_HEADERS      ((MY_PAGE_SIZE)/TACH_HEADER_SIZE)
103
 
104
#define NO_OF_FCP_CMNDS         (MY_PAGE_SIZE/32)
105
#define SDB_SIZE                2048
106
#define NO_OF_SDB_ENTRIES       ((32*MY_PAGE_SIZE)/SDB_SIZE)
107
 
108
 
109
/* Offsets to the other Tachyon registers.
110
 * (As defined in the Tachyon manual)
111
 */
112
#define TACHYON_CONFIG_REGISTER_OFFSET          0x184
113
#define TACHYON_CONTROL_REGISTER_OFFSET         0x188
114
#define TACHYON_STATUS_REGISTER_OFFSET          0x18C
115
#define TACHYON_FLUSH_SEST_REGISTER_OFFSET      0x190
116
 
117
/* Defines for the Tachyon Configuration register.
118
 */
119
#define SCSI_ENABLE             0x40000000     
120
#define WRITE_STREAM_SIZE       0x800   /* size = 16 */         
121
#define READ_STREAM_SIZE        0x300   /* size = 64 */      
122
#define PARITY_EVEN             0x2         
123
#define OOO_REASSEMBLY_DISABLE  0x40
124
 
125
/* Defines for the Tachyon Control register.
126
 */
127
#define SOFTWARE_RESET  0x80000000
128
#define OCQ_RESET       0x4
129
#define ERROR_RELEASE   0x2
130
 
131
/* Defines for the Tachyon Status register.
132
 */
133
#define RECEIVE_FIFO_EMPTY      0x10
134
#define OSM_FROZEN              0x1
135
#define OCQ_RESET_STATUS        0x20
136
#define SCSI_FREEZE_STATUS      0x40
137
 
138
 
139
/* Offsets to the Frame Manager registers.
140
 */
141
#define FMGR_CONFIG_REGISTER_OFFSET 0x1C0
142
#define FMGR_CONTROL_REGISTER_OFFSET 0x1C4
143
#define FMGR_STATUS_REGISTER_OFFSET 0x1C8
144
#define FMGR_TIMER_REGISTER_OFFSET 0x1CC
145
#define FMGR_WWN_HI_REGISTER_OFFSET 0x1E0
146
#define FMGR_WWN_LO_REGISTER_OFFSET 0x1E4
147
#define FMGR_RCVD_ALPA_REGISTER_OFFSET 0x1E8
148
 
149
/* Defines for the Frame Manager Configuration register.
150
 */
151
#define BB_CREDIT                    0x10000
152
#define NPORT                        0x8000 
153
#define LOOP_INIT_FABRIC_ADDRESS     0x400  
154
#define LOOP_INIT_PREVIOUS_ADDRESS   0x200  
155
#define LOOP_INIT_SOFT_ADDRESS       0x80  
156
 
157
/* Defines for the Frame Manager Control register.
158
 */
159
#define HOST_CONTROL                 0x02   
160
#define EXIT_HOST_CONTROL            0x03  
161
#define OFFLINE                      0x05 
162
#define INITIALIZE                   0x06 
163
#define CLEAR_LF                     0x07
164
 
165
/* Defines for the Frame Manager Status register.
166
 */
167
#define LOOP_UP                 0x80000000
168
#define TRANSMIT_PARITY_ERROR   0x40000000
169
#define NON_PARTICIPATING       0x20000000
170
#define OUT_OF_SYNC             0x02000000
171
#define LOSS_OF_SIGNAL          0x01000000
172
#define NOS_OLS_RECEIVED        0x00080000
173
#define LOOP_STATE_TIMEOUT      0x00040000
174
#define LIPF_RECEIVED           0x00020000
175
#define BAD_ALPA                0x00010000
176
#define LINK_FAILURE            0x00001000
177
#define ELASTIC_STORE_ERROR     0x00000400
178
#define LINK_UP                 0x00000200
179
#define LINK_DOWN               0x00000100
180
#define ARBITRATING             0x00000010
181
#define ARB_WON                 0x00000020
182
#define OPEN                    0x00000030
183
#define OPENED                  0x00000040
184
#define TX_CLS                  0x00000050
185
#define RX_CLS                  0x00000060
186
#define TRANSFER                0x00000070
187
#define INITIALIZING            0x00000080
188
#define LOOP_FAIL               0x000000D0
189
#define OLD_PORT                0x000000F0
190
#define PORT_STATE_ACTIVE       0x0000000F
191
#define PORT_STATE_OFFLINE      0x00000000
192
#define PORT_STATE_LF1          0x00000009
193
#define PORT_STATE_LF2          0x0000000A
194
 
195
/* Completion Message Types
196
 * (defined in P.177 of the Tachyon manual)
197
 */
198
#define OUTBOUND_COMPLETION             0x000
199
#define OUTBOUND_COMPLETION_I           0x100
200
#define OUT_HI_PRI_COMPLETION           0x001
201
#define OUT_HI_PRI_COMPLETION_I         0x101
202
#define INBOUND_MFS_COMPLETION          0x102
203
#define INBOUND_OOO_COMPLETION          0x003
204
#define INBOUND_SFS_COMPLETION          0x104
205
#define INBOUND_C1_TIMEOUT              0x105
206
#define INBOUND_UNKNOWN_FRAME_I         0x106
207
#define INBOUND_BUSIED_FRAME            0x006
208
#define SFS_BUF_WARN                    0x107
209
#define MFS_BUF_WARN                    0x108
210
#define IMQ_BUF_WARN                    0x109
211
#define FRAME_MGR_INTERRUPT             0x10A
212
#define READ_STATUS                     0x10B
213
#define INBOUND_SCSI_DATA_COMPLETION    0x10C
214
#define INBOUND_SCSI_COMMAND            0x10D
215
#define BAD_SCSI_FRAME                  0x10E
216
#define INB_SCSI_STATUS_COMPLETION      0x10F
217
 
218
/* One of the things that we care about when we receive an
219
 * Outbound Completion Message (OCM).
220
 */
221
#define OCM_TIMEOUT_OR_BAD_ALPA         0x0800
222
 
223
/* Defines for the Tachyon Header structure.
224
 */
225
#define SOFI3                0x70
226
#define SOFN3                0xB0
227
#define EOFN                 0x5
228
 
229
/* R_CTL */
230
#define FC4_DEVICE_DATA      0
231
#define EXTENDED_LINK_DATA   0x20000000
232
#define FC4_LINK_DATA        0x30000000
233
#define BASIC_LINK_DATA      0x80000000
234
#define LINK_CONTROL         0xC0000000
235
#define SOLICITED_DATA       0x1000000
236
#define UNSOLICITED_CONTROL  0x2000000
237
#define SOLICITED_CONTROL    0x3000000
238
#define UNSOLICITED_DATA     0x4000000
239
#define DATA_DESCRIPTOR      0x5000000
240
#define UNSOLICITED_COMMAND  0x6000000
241
 
242
#define RCTL_ELS_UCTL          0x22000000
243
#define RCTL_ELS_SCTL          0x23000000
244
#define RCTL_BASIC_ABTS        0x81000000
245
#define RCTL_BASIC_ACC         0x84000000
246
#define RCTL_BASIC_RJT         0x85000000
247
 
248
/* TYPE */
249
#define TYPE_BLS               0x00000000
250
#define TYPE_ELS               0x01000000
251
#define TYPE_FC_SERVICES       0x20000000
252
#define TYPE_LLC_SNAP          0x05000000
253
#define TYPE_FCP               0x08000000
254
 
255
/* F_CTL */
256
#define EXCHANGE_RESPONDER     0x800000
257
#define SEQUENCE_RESPONDER     0x400000
258
#define FIRST_SEQUENCE         0x200000
259
#define LAST_SEQUENCE          0x100000
260
#define SEQUENCE_INITIATIVE    0x10000
261
#define RELATIVE_OFF_PRESENT   0x8
262
#define END_SEQUENCE           0x80000
263
 
264
#define TACHYON_HEADER_LEN     32
265
#define NW_HEADER_LEN          16
266
/* Defines for the Outbound Descriptor Block (ODB).
267
 */
268
#define ODB_CLASS_3          0xC000
269
#define ODB_NO_COMP          0x400
270
#define ODB_NO_INT           0x200
271
#define ODB_EE_CREDIT        0xF
272
 
273
/* Defines for the Extended Descriptor Block (EDB).
274
 */
275
#define EDB_LEN              ((32*MY_PAGE_SIZE)/8) 
276
#define EDB_END              0x8000
277
#define EDB_FREE             0
278
#define EDB_BUSY             1
279
 
280
/* Command Codes */
281
#define ELS_LS_RJT          0x01000000
282
#define ELS_ACC             0x02000000
283
#define ELS_PLOGI           0x03000000
284
#define ELS_FLOGI           0x04000000
285
#define ELS_LOGO            0x05000000
286
#define ELS_TPRLO           0x24000000
287
#define ELS_ADISC           0x52000000
288
#define ELS_PDISC           0x50000000
289
#define ELS_PRLI            0x20000000 
290
#define ELS_PRLO            0x21000000
291
#define ELS_SCR             0x62000000
292
#define ELS_RSCN            0x61000000
293
#define ELS_FARP_REQ        0x54000000
294
#define ELS_ABTX            0x06000000
295
#define ELS_ADVC            0x0D000000
296
#define ELS_ECHO            0x10000000
297
#define ELS_ESTC            0x0C000000
298
#define ELS_ESTS            0x0B000000
299
#define ELS_RCS             0x07000000
300
#define ELS_RES             0x08000000
301
#define ELS_RLS             0x0F000000
302
#define ELS_RRQ             0x12000000
303
#define ELS_RSS             0x09000000
304
#define ELS_RTV             0x0E000000
305
#define ELS_RSI             0x0A000000
306
#define ELS_TEST            0x11000000
307
#define ELS_RNC             0x53000000
308
#define ELS_RVCS            0x41000000
309
#define ELS_TPLS            0x23000000
310
#define ELS_GAID            0x30000000
311
#define ELS_FACT            0x31000000
312
#define ELS_FAN             0x60000000
313
#define ELS_FDACT           0x32000000
314
#define ELS_NACT            0x33000000
315
#define ELS_NDACT           0x34000000
316
#define ELS_QoSR            0x40000000
317
#define ELS_FDISC           0x51000000
318
 
319
#define ELS_NS_PLOGI        0x03FFFFFC 
320
 
321
/* LS_RJT reason codes.
322
 */
323
#define INV_LS_CMND_CODE                0x0001
324
#define LOGICAL_ERR                     0x0003
325
#define LOGICAL_BUSY                    0x0005
326
#define PROTOCOL_ERR                    0x0007
327
#define UNABLE_TO_PERFORM               0x0009
328
#define CMND_NOT_SUPP                   0x000B
329
 
330
/* LS_RJT explanation codes.
331
 */
332
#define NO_EXPLN                        0x0000
333
#define RECV_FIELD_SIZE                 0x0700
334
#define CONC_SEQ                        0x0900
335
#define REQ_NOT_SUPPORTED               0x2C00
336
#define INV_PAYLOAD_LEN                 0x2D00
337
 
338
/* Payload Length defines.
339
 */
340
#define PLOGI_LEN                               116
341
 
342
#define CONCURRENT_SEQUENCES 0x01
343
#define RO_INFO_CATEGORY     0xFE
344
#define E_D_TOV              0x07D0 /* 2 Secs */
345
#define AL_TIME              0x0010 /* ~15 msec */
346
#define TOV_VALUES           (AL_TIME << 16) | E_D_TOV
347
#define RT_TOV               0x64   /* 100 msec */
348
#define PTP_TOV_VALUES       (RT_TOV << 16) | E_D_TOV
349
#define SERVICE_VALID        0x8000
350
#define SEQUENCE_DELIVERY        0x0800
351
#define CLASS3_CONCURRENT_SEQUENCE    0x01
352
#define CLASS3_OPEN_SEQUENCE          0x01
353
 
354
/* These are retrieved from the NOVRAM.
355
 */
356
#define WORLD_WIDE_NAME_LOW     fi->g.my_port_name_low
357
#define WORLD_WIDE_NAME_HIGH    fi->g.my_port_name_high
358
#define N_PORT_NAME_HIGH        fi->g.my_port_name_high
359
#define N_PORT_NAME_LOW         fi->g.my_port_name_low
360
#define NODE_NAME_HIGH          fi->g.my_node_name_high
361
#define NODE_NAME_LOW           fi->g.my_node_name_low
362
 
363
#define PORT_NAME_LEN           8
364
#define NODE_NAME_LEN           8
365
 
366
 
367
#define PH_VERSION        0x0909
368
 
369
#define LOOP_BB_CREDIT  0x00
370
#define PT2PT_BB_CREDIT 0x01
371
#define FLOGI_C_F       0x0800 /* Alternate BB_Credit Mgmnt */ 
372
#define PLOGI_C_F       0x8800 /* Continuously Increasing + Alternate BB_Credit Management */
373
 
374
/* Fabric defines */
375
#define DIRECTORY_SERVER        0xFFFFFC
376
#define FABRIC_CONTROLLER       0xFFFFFD
377
#define F_PORT                  0xFFFFFE
378
 
379
#define FLOGI_DID                               0xFFFE
380
#define NS_PLOGI_DID                    0xFFFC
381
 
382
/* Fibre Channel Services defines */
383
#define FCS_RFC_4           0x02170000
384
#define FCS_GP_ID4          0x01A10000
385
#define FCS_ACC             0x8002
386
#define FCS_REJECT          0x8001
387
 
388
/* CT Header defines */
389
#define FC_CT_REV               0x01000000
390
#define DIRECTORY_SERVER_APP    0xFC
391
#define NAME_SERVICE            0x02
392
 
393
/* Port Type defines */
394
#define PORT_TYPE_IP            0x05000000
395
#define PORT_TYPE_NX_PORTS      0x7F000000
396
 
397
/* SCR defines */
398
#define FABRIC_DETECTED_REG             0x00000001
399
#define N_PORT_DETECTED_REG             0x00000002
400
#define FULL_REGISTRATION               0x00000003
401
#define CLEAR_REGISTRATION              0x000000FF
402
 
403
/* Command structure has only one byte to address targets
404
 */
405
#define MAX_SCSI_TARGETS                0xFF 
406
 
407
#define FC_SCSI_READ                    0x80
408
#define FC_SCSI_WRITE                   0x81
409
#define FC_ELS                          0x01
410
#define FC_BLS                          0x00
411
#define FC_IP                           0x05
412
#define FC_BROADCAST                    0xFF
413
 
414
/* SEST defines.
415
 */
416
#define SEST_V                          0x80000000 /* V = 1 */
417
#define INB_SEST_VED                    0xA0000000 /* V = 1, D = 1 */
418
#define SEST_INV                        0x7FFFFFFF 
419
#define OUTB_SEST_VED                   0x80000000 /* V = 1 */
420
#define INV_SEQ_LEN                     0xFFFFFFFF
421
#define OUTB_SEST_LINK                  0xFFFF
422
 
423
/* PRLI defines.
424
 */
425
#define PAGE_LEN                0x100000 /* 3rd byte - 0x10 */
426
#define PRLI_LEN                0x0014 /* 20 bytes */
427
#define FCP_TYPE_CODE           0x0800 /* FCP-SCSI */
428
#define IMAGE_PAIR              0x2000 /* establish image pair */
429
#define INITIATOR_FUNC          0x00000020
430
#define TARGET_FUNC             0x00000010
431
#define READ_XFER_RDY_DISABLED  0x00000002
432
 
433
#define NODE_PROCESS_LOGGED_IN  0x3
434
#define NODE_NOT_PRESENT        0x2
435
#define NODE_LOGGED_IN          0x1
436
#define NODE_LOGGED_OUT         0x0
437
 
438
/* Defines to determine what should be returned when a SCSI frame
439
 * times out.
440
 */
441
#define FC_SCSI_BAD_TARGET              0xFFFE0000
442
 
443
/* RSCN Address formats */
444
#define PORT_ADDRESS_FORMAT             0x00
445
#define AREA_ADDRESS_FORMAT             0x01
446
#define DOMAIN_ADDRESS_FORMAT           0x02
447
 
448
/* Defines used to determine whether a frame transmission should
449
 * be indicated by an interrupt or not.
450
 */
451
#define NO_COMP_AND_INT                 0
452
#define INT_AND_COMP_REQ                1
453
#define NO_INT_COMP_REQ                 2
454
 
455
/* Other junk...
456
 */
457
#define SDB_FREE             0
458
#define SDB_BUSY             1
459
#define MAX_PENDING_FRAMES   15
460
#define RX_ID_FIRST_SEQUENCE 0xFFFF
461
#define OX_ID_FIRST_SEQUENCE 0xFFFF
462
#define NOT_SCSI_XID            0x8000
463
#define MAX_SCSI_XID            0x0FFF /* X_IDs are from 0-4095 */
464
#define SCSI_READ_BIT           0x4000 
465
#define MAX_SCSI_OXID           0x4FFF
466
#define OXID_AVAILABLE          0
467
#define OXID_INUSE              1
468
#define MAX_SEQ_ID              0xFF
469
 
470
#define INITIATOR             2
471
#define TARGET                1
472
#define DELETE_ENTRY          1
473
#define ADD_ENTRY             2
474
 
475
#endif /* _TACH_H */

powered by: WebSVN 2.1.0

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