aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/aacraid/aacraid.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/aacraid/aacraid.h')
-rw-r--r--drivers/scsi/aacraid/aacraid.h79
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
103struct 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
317struct hw_fib { 324struct 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
421struct aac_init 430struct 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
1290struct aac_read 1320struct 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};
1339struct aac_write_reply 1366struct aac_write_reply
@@ -1354,6 +1381,22 @@ struct aac_raw_io
1354 struct sgmapraw sg; 1381 struct sgmapraw sg;
1355}; 1382};
1356 1383
1384struct 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
1358struct aac_synchronize { 1401struct aac_synchronize {
1359 __le32 command; /* VM_ContainerConfig */ 1402 __le32 command; /* VM_ContainerConfig */