diff options
Diffstat (limited to 'drivers/scsi/aacraid/aacraid.h')
-rw-r--r-- | drivers/scsi/aacraid/aacraid.h | 79 |
1 files changed, 61 insertions, 18 deletions
diff --git a/drivers/scsi/aacraid/aacraid.h b/drivers/scsi/aacraid/aacraid.h index 3fcf62724fad..9e933a88a8bc 100644 --- a/drivers/scsi/aacraid/aacraid.h +++ b/drivers/scsi/aacraid/aacraid.h | |||
@@ -12,7 +12,7 @@ | |||
12 | *----------------------------------------------------------------------------*/ | 12 | *----------------------------------------------------------------------------*/ |
13 | 13 | ||
14 | #ifndef AAC_DRIVER_BUILD | 14 | #ifndef AAC_DRIVER_BUILD |
15 | # define AAC_DRIVER_BUILD 28900 | 15 | # define AAC_DRIVER_BUILD 29800 |
16 | # define AAC_DRIVER_BRANCH "-ms" | 16 | # define AAC_DRIVER_BRANCH "-ms" |
17 | #endif | 17 | #endif |
18 | #define MAXIMUM_NUM_CONTAINERS 32 | 18 | #define MAXIMUM_NUM_CONTAINERS 32 |
@@ -100,6 +100,13 @@ struct user_sgentryraw { | |||
100 | u32 flags; /* reserved for F/W use */ | 100 | u32 flags; /* reserved for F/W use */ |
101 | }; | 101 | }; |
102 | 102 | ||
103 | struct sge_ieee1212 { | ||
104 | u32 addrLow; | ||
105 | u32 addrHigh; | ||
106 | u32 length; | ||
107 | u32 flags; | ||
108 | }; | ||
109 | |||
103 | /* | 110 | /* |
104 | * SGMAP | 111 | * SGMAP |
105 | * | 112 | * |
@@ -270,6 +277,8 @@ enum aac_queue_types { | |||
270 | */ | 277 | */ |
271 | 278 | ||
272 | #define FIB_MAGIC 0x0001 | 279 | #define FIB_MAGIC 0x0001 |
280 | #define FIB_MAGIC2 0x0004 | ||
281 | #define FIB_MAGIC2_64 0x0005 | ||
273 | 282 | ||
274 | /* | 283 | /* |
275 | * Define the priority levels the FSA communication routines support. | 284 | * Define the priority levels the FSA communication routines support. |
@@ -296,22 +305,20 @@ struct aac_fibhdr { | |||
296 | __le32 XferState; /* Current transfer state for this CCB */ | 305 | __le32 XferState; /* Current transfer state for this CCB */ |
297 | __le16 Command; /* Routing information for the destination */ | 306 | __le16 Command; /* Routing information for the destination */ |
298 | u8 StructType; /* Type FIB */ | 307 | u8 StructType; /* Type FIB */ |
299 | u8 Flags; /* Flags for FIB */ | 308 | u8 Unused; /* Unused */ |
300 | __le16 Size; /* Size of this FIB in bytes */ | 309 | __le16 Size; /* Size of this FIB in bytes */ |
301 | __le16 SenderSize; /* Size of the FIB in the sender | 310 | __le16 SenderSize; /* Size of the FIB in the sender |
302 | (for response sizing) */ | 311 | (for response sizing) */ |
303 | __le32 SenderFibAddress; /* Host defined data in the FIB */ | 312 | __le32 SenderFibAddress; /* Host defined data in the FIB */ |
304 | __le32 ReceiverFibAddress;/* Logical address of this FIB for | ||
305 | the adapter */ | ||
306 | u32 SenderData; /* Place holder for the sender to store data */ | ||
307 | union { | 313 | union { |
308 | struct { | 314 | __le32 ReceiverFibAddress;/* Logical address of this FIB for |
309 | __le32 _ReceiverTimeStart; /* Timestamp for | 315 | the adapter (old) */ |
310 | receipt of fib */ | 316 | __le32 SenderFibAddressHigh;/* upper 32bit of phys. FIB address */ |
311 | __le32 _ReceiverTimeDone; /* Timestamp for | 317 | __le32 TimeStamp; /* otherwise timestamp for FW internal use */ |
312 | completion of fib */ | 318 | } u; |
313 | } _s; | 319 | u32 Handle; /* FIB handle used for MSGU commnunication */ |
314 | } _u; | 320 | u32 Previous; /* FW internal use */ |
321 | u32 Next; /* FW internal use */ | ||
315 | }; | 322 | }; |
316 | 323 | ||
317 | struct hw_fib { | 324 | struct hw_fib { |
@@ -361,6 +368,7 @@ struct hw_fib { | |||
361 | #define ContainerCommand 500 | 368 | #define ContainerCommand 500 |
362 | #define ContainerCommand64 501 | 369 | #define ContainerCommand64 501 |
363 | #define ContainerRawIo 502 | 370 | #define ContainerRawIo 502 |
371 | #define ContainerRawIo2 503 | ||
364 | /* | 372 | /* |
365 | * Scsi Port commands (scsi passthrough) | 373 | * Scsi Port commands (scsi passthrough) |
366 | */ | 374 | */ |
@@ -417,6 +425,7 @@ enum fib_xfer_state { | |||
417 | #define ADAPTER_INIT_STRUCT_REVISION 3 | 425 | #define ADAPTER_INIT_STRUCT_REVISION 3 |
418 | #define ADAPTER_INIT_STRUCT_REVISION_4 4 // rocket science | 426 | #define ADAPTER_INIT_STRUCT_REVISION_4 4 // rocket science |
419 | #define ADAPTER_INIT_STRUCT_REVISION_6 6 /* PMC src */ | 427 | #define ADAPTER_INIT_STRUCT_REVISION_6 6 /* PMC src */ |
428 | #define ADAPTER_INIT_STRUCT_REVISION_7 7 /* Denali */ | ||
420 | 429 | ||
421 | struct aac_init | 430 | struct aac_init |
422 | { | 431 | { |
@@ -441,7 +450,9 @@ struct aac_init | |||
441 | #define INITFLAGS_NEW_COMM_SUPPORTED 0x00000001 | 450 | #define INITFLAGS_NEW_COMM_SUPPORTED 0x00000001 |
442 | #define INITFLAGS_DRIVER_USES_UTC_TIME 0x00000010 | 451 | #define INITFLAGS_DRIVER_USES_UTC_TIME 0x00000010 |
443 | #define INITFLAGS_DRIVER_SUPPORTS_PM 0x00000020 | 452 | #define INITFLAGS_DRIVER_SUPPORTS_PM 0x00000020 |
444 | #define INITFLAGS_NEW_COMM_TYPE1_SUPPORTED 0x00000041 | 453 | #define INITFLAGS_NEW_COMM_TYPE1_SUPPORTED 0x00000040 |
454 | #define INITFLAGS_FAST_JBOD_SUPPORTED 0x00000080 | ||
455 | #define INITFLAGS_NEW_COMM_TYPE2_SUPPORTED 0x00000100 | ||
445 | __le32 MaxIoCommands; /* max outstanding commands */ | 456 | __le32 MaxIoCommands; /* max outstanding commands */ |
446 | __le32 MaxIoSize; /* largest I/O command */ | 457 | __le32 MaxIoSize; /* largest I/O command */ |
447 | __le32 MaxFibSize; /* largest FIB to adapter */ | 458 | __le32 MaxFibSize; /* largest FIB to adapter */ |
@@ -1052,10 +1063,11 @@ struct aac_dev | |||
1052 | struct adapter_ops a_ops; | 1063 | struct adapter_ops a_ops; |
1053 | unsigned long fsrev; /* Main driver's revision number */ | 1064 | unsigned long fsrev; /* Main driver's revision number */ |
1054 | 1065 | ||
1055 | unsigned long dbg_base; /* address of UART | 1066 | resource_size_t base_start; /* main IO base */ |
1067 | resource_size_t dbg_base; /* address of UART | ||
1056 | * debug buffer */ | 1068 | * debug buffer */ |
1057 | 1069 | ||
1058 | unsigned base_size, dbg_size; /* Size of | 1070 | resource_size_t base_size, dbg_size; /* Size of |
1059 | * mapped in region */ | 1071 | * mapped in region */ |
1060 | 1072 | ||
1061 | struct aac_init *init; /* Holds initialization info to communicate with adapter */ | 1073 | struct aac_init *init; /* Holds initialization info to communicate with adapter */ |
@@ -1123,6 +1135,7 @@ struct aac_dev | |||
1123 | # define AAC_COMM_PRODUCER 0 | 1135 | # define AAC_COMM_PRODUCER 0 |
1124 | # define AAC_COMM_MESSAGE 1 | 1136 | # define AAC_COMM_MESSAGE 1 |
1125 | # define AAC_COMM_MESSAGE_TYPE1 3 | 1137 | # define AAC_COMM_MESSAGE_TYPE1 3 |
1138 | # define AAC_COMM_MESSAGE_TYPE2 4 | ||
1126 | u8 raw_io_interface; | 1139 | u8 raw_io_interface; |
1127 | u8 raw_io_64; | 1140 | u8 raw_io_64; |
1128 | u8 printf_enabled; | 1141 | u8 printf_enabled; |
@@ -1181,6 +1194,7 @@ struct aac_dev | |||
1181 | #define FIB_CONTEXT_FLAG_TIMED_OUT (0x00000001) | 1194 | #define FIB_CONTEXT_FLAG_TIMED_OUT (0x00000001) |
1182 | #define FIB_CONTEXT_FLAG (0x00000002) | 1195 | #define FIB_CONTEXT_FLAG (0x00000002) |
1183 | #define FIB_CONTEXT_FLAG_WAIT (0x00000004) | 1196 | #define FIB_CONTEXT_FLAG_WAIT (0x00000004) |
1197 | #define FIB_CONTEXT_FLAG_FASTRESP (0x00000008) | ||
1184 | 1198 | ||
1185 | /* | 1199 | /* |
1186 | * Define the command values | 1200 | * Define the command values |
@@ -1287,6 +1301,22 @@ struct aac_dev | |||
1287 | #define CMDATA_SYNCH 4 | 1301 | #define CMDATA_SYNCH 4 |
1288 | #define CMUNSTABLE 5 | 1302 | #define CMUNSTABLE 5 |
1289 | 1303 | ||
1304 | #define RIO_TYPE_WRITE 0x0000 | ||
1305 | #define RIO_TYPE_READ 0x0001 | ||
1306 | #define RIO_SUREWRITE 0x0008 | ||
1307 | |||
1308 | #define RIO2_IO_TYPE 0x0003 | ||
1309 | #define RIO2_IO_TYPE_WRITE 0x0000 | ||
1310 | #define RIO2_IO_TYPE_READ 0x0001 | ||
1311 | #define RIO2_IO_TYPE_VERIFY 0x0002 | ||
1312 | #define RIO2_IO_ERROR 0x0004 | ||
1313 | #define RIO2_IO_SUREWRITE 0x0008 | ||
1314 | #define RIO2_SGL_CONFORMANT 0x0010 | ||
1315 | #define RIO2_SG_FORMAT 0xF000 | ||
1316 | #define RIO2_SG_FORMAT_ARC 0x0000 | ||
1317 | #define RIO2_SG_FORMAT_SRL 0x1000 | ||
1318 | #define RIO2_SG_FORMAT_IEEE1212 0x2000 | ||
1319 | |||
1290 | struct aac_read | 1320 | struct aac_read |
1291 | { | 1321 | { |
1292 | __le32 command; | 1322 | __le32 command; |
@@ -1331,9 +1361,6 @@ struct aac_write64 | |||
1331 | __le32 block; | 1361 | __le32 block; |
1332 | __le16 pad; | 1362 | __le16 pad; |
1333 | __le16 flags; | 1363 | __le16 flags; |
1334 | #define IO_TYPE_WRITE 0x00000000 | ||
1335 | #define IO_TYPE_READ 0x00000001 | ||
1336 | #define IO_SUREWRITE 0x00000008 | ||
1337 | struct sgmap64 sg; // Must be last in struct because it is variable | 1364 | struct sgmap64 sg; // Must be last in struct because it is variable |
1338 | }; | 1365 | }; |
1339 | struct aac_write_reply | 1366 | struct aac_write_reply |
@@ -1354,6 +1381,22 @@ struct aac_raw_io | |||
1354 | struct sgmapraw sg; | 1381 | struct sgmapraw sg; |
1355 | }; | 1382 | }; |
1356 | 1383 | ||
1384 | struct aac_raw_io2 { | ||
1385 | __le32 blockLow; | ||
1386 | __le32 blockHigh; | ||
1387 | __le32 byteCount; | ||
1388 | __le16 cid; | ||
1389 | __le16 flags; /* RIO2 flags */ | ||
1390 | __le32 sgeFirstSize; /* size of first sge el. */ | ||
1391 | __le32 sgeNominalSize; /* size of 2nd sge el. (if conformant) */ | ||
1392 | u8 sgeCnt; /* only 8 bits required */ | ||
1393 | u8 bpTotal; /* reserved for F/W use */ | ||
1394 | u8 bpComplete; /* reserved for F/W use */ | ||
1395 | u8 sgeFirstIndex; /* reserved for F/W use */ | ||
1396 | u8 unused[4]; | ||
1397 | struct sge_ieee1212 sge[1]; | ||
1398 | }; | ||
1399 | |||
1357 | #define CT_FLUSH_CACHE 129 | 1400 | #define CT_FLUSH_CACHE 129 |
1358 | struct aac_synchronize { | 1401 | struct aac_synchronize { |
1359 | __le32 command; /* VM_ContainerConfig */ | 1402 | __le32 command; /* VM_ContainerConfig */ |