RDMA/ocrdma: Read ASIC_ID register to select asic_gen
[linux-2.6-block.git] / drivers / infiniband / hw / ocrdma / ocrdma_sli.h
index 60d5ac23ea803f47c61b2be0ed2bd31590eb97cb..de4ebfc4e0e24c24c5f41cc11daa4362544ad304 100644 (file)
 
 #define Bit(_b) (1 << (_b))
 
-#define OCRDMA_GEN1_FAMILY     0xB
-#define OCRDMA_GEN2_FAMILY     0x0F
+enum {
+       OCRDMA_ASIC_GEN_SKH_R = 0x04,
+       OCRDMA_ASIC_GEN_LANCER = 0x0B
+};
+
+enum {
+       OCRDMA_ASIC_REV_A0 = 0x00,
+       OCRDMA_ASIC_REV_B0 = 0x10,
+       OCRDMA_ASIC_REV_C0 = 0x20
+};
 
 #define OCRDMA_SUBSYS_ROCE 10
 enum {
@@ -103,7 +111,10 @@ enum {
        OCRDMA_DB_GEN2_SRQ_OFFSET       = OCRDMA_DB_GEN2_RQ_OFFSET,
        OCRDMA_DB_CQ_OFFSET             = 0x120,
        OCRDMA_DB_EQ_OFFSET             = OCRDMA_DB_CQ_OFFSET,
-       OCRDMA_DB_MQ_OFFSET             = 0x140
+       OCRDMA_DB_MQ_OFFSET             = 0x140,
+
+       OCRDMA_DB_SQ_SHIFT              = 16,
+       OCRDMA_DB_RQ_SHIFT              = 24
 };
 
 #define OCRDMA_DB_CQ_RING_ID_MASK       0x3FF  /* bits 0 - 9 */
@@ -138,6 +149,11 @@ enum {
 #define OCRDMA_MIN_Q_PAGE_SIZE (4096)
 #define OCRDMA_MAX_Q_PAGES     (8)
 
+#define OCRDMA_SLI_ASIC_ID_OFFSET      0x9C
+#define OCRDMA_SLI_ASIC_REV_MASK       0x000000FF
+#define OCRDMA_SLI_ASIC_GEN_NUM_MASK   0x0000FF00
+#define OCRDMA_SLI_ASIC_GEN_NUM_SHIFT  0x08
+
 /*
 # 0: 4K Bytes
 # 1: 8K Bytes