]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
bnx2x: Added support for a new device - 57811
authorBarak Witkowski <barak@broadcom.com>
Tue, 3 Apr 2012 18:41:28 +0000 (18:41 +0000)
committerJoe Jin <joe.jin@oracle.com>
Tue, 28 Aug 2012 07:23:26 +0000 (15:23 +0800)
Notice this patch includes lines with over 80 characters, as to not
break strings.

(cherry picked from commit 7e8e02df17106007f4b043a39d22682f74df6f6f)
Signed-off-by: Barak Witkowski <barak@broadcom.com>
Signed-off-by: Yuval Mintz <yuvalmin@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
drivers/net/bnx2x/bnx2x.h
drivers/net/bnx2x/bnx2x_main.c
drivers/net/bnx2x/bnx2x_reg.h

index 2776eb5ff37f3ed486d4a24b0d91c75a8072fbb7..3485ce1896e4d84efe07c6cdd2eb46c55cec012e 100644 (file)
@@ -814,6 +814,8 @@ struct bnx2x_common {
 #define CHIP_NUM_57800_MF              0x16a5
 #define CHIP_NUM_57810                 0x168e
 #define CHIP_NUM_57810_MF              0x16ae
+#define CHIP_NUM_57811                 0x163d
+#define CHIP_NUM_57811_MF              0x163e
 #define CHIP_NUM_57840                 0x168d
 #define CHIP_NUM_57840_MF              0x16ab
 #define CHIP_IS_E1(bp)                 (CHIP_NUM(bp) == CHIP_NUM_57710)
@@ -825,6 +827,8 @@ struct bnx2x_common {
 #define CHIP_IS_57800_MF(bp)           (CHIP_NUM(bp) == CHIP_NUM_57800_MF)
 #define CHIP_IS_57810(bp)              (CHIP_NUM(bp) == CHIP_NUM_57810)
 #define CHIP_IS_57810_MF(bp)           (CHIP_NUM(bp) == CHIP_NUM_57810_MF)
+#define CHIP_IS_57811(bp)              (CHIP_NUM(bp) == CHIP_NUM_57811)
+#define CHIP_IS_57811_MF(bp)           (CHIP_NUM(bp) == CHIP_NUM_57811_MF)
 #define CHIP_IS_57840(bp)              (CHIP_NUM(bp) == CHIP_NUM_57840)
 #define CHIP_IS_57840_MF(bp)           (CHIP_NUM(bp) == CHIP_NUM_57840_MF)
 #define CHIP_IS_E1H(bp)                        (CHIP_IS_57711(bp) || \
@@ -835,6 +839,8 @@ struct bnx2x_common {
                                         CHIP_IS_57800_MF(bp) || \
                                         CHIP_IS_57810(bp) || \
                                         CHIP_IS_57810_MF(bp) || \
+                                        CHIP_IS_57811(bp) || \
+                                        CHIP_IS_57811_MF(bp) || \
                                         CHIP_IS_57840(bp) || \
                                         CHIP_IS_57840_MF(bp))
 #define CHIP_IS_E1x(bp)                        (CHIP_IS_E1((bp)) || CHIP_IS_E1H((bp)))
index 0515f16ac402b4c725128664f694bf76e28b94ae..4ff5c48b09234079346da385e2ac58d6402edd05 100644 (file)
@@ -140,7 +140,9 @@ enum bnx2x_board_type {
        BCM57810,
        BCM57810_MF,
        BCM57840,
-       BCM57840_MF
+       BCM57840_MF,
+       BCM57811,
+       BCM57811_MF
 };
 
 /* indexed by board_type, above */
@@ -157,8 +159,9 @@ static struct {
        { "Broadcom NetXtreme II BCM57810 10 Gigabit Ethernet" },
        { "Broadcom NetXtreme II BCM57810 10 Gigabit Ethernet Multi Function" },
        { "Broadcom NetXtreme II BCM57840 10/20 Gigabit Ethernet" },
-       { "Broadcom NetXtreme II BCM57840 10/20 Gigabit "
-                                               "Ethernet Multi Function"}
+       { "Broadcom NetXtreme II BCM57840 10/20 Gigabit Ethernet Multi Function"},
+       { "Broadcom NetXtreme II BCM57811 10 Gigabit Ethernet"},
+       { "Broadcom NetXtreme II BCM57811 10 Gigabit Ethernet Multi Function"},
 };
 
 #ifndef PCI_DEVICE_ID_NX2_57710
@@ -194,6 +197,12 @@ static struct {
 #ifndef PCI_DEVICE_ID_NX2_57840_MF
 #define PCI_DEVICE_ID_NX2_57840_MF     CHIP_NUM_57840_MF
 #endif
+#ifndef PCI_DEVICE_ID_NX2_57811
+#define PCI_DEVICE_ID_NX2_57811                CHIP_NUM_57811
+#endif
+#ifndef PCI_DEVICE_ID_NX2_57811_MF
+#define PCI_DEVICE_ID_NX2_57811_MF     CHIP_NUM_57811_MF
+#endif
 static DEFINE_PCI_DEVICE_TABLE(bnx2x_pci_tbl) = {
        { PCI_VDEVICE(BROADCOM, PCI_DEVICE_ID_NX2_57710), BCM57710 },
        { PCI_VDEVICE(BROADCOM, PCI_DEVICE_ID_NX2_57711), BCM57711 },
@@ -206,6 +215,8 @@ static DEFINE_PCI_DEVICE_TABLE(bnx2x_pci_tbl) = {
        { PCI_VDEVICE(BROADCOM, PCI_DEVICE_ID_NX2_57810_MF), BCM57810_MF },
        { PCI_VDEVICE(BROADCOM, PCI_DEVICE_ID_NX2_57840), BCM57840 },
        { PCI_VDEVICE(BROADCOM, PCI_DEVICE_ID_NX2_57840_MF), BCM57840_MF },
+       { PCI_VDEVICE(BROADCOM, PCI_DEVICE_ID_NX2_57811), BCM57811 },
+       { PCI_VDEVICE(BROADCOM, PCI_DEVICE_ID_NX2_57811_MF), BCM57811_MF },
        { 0 }
 };
 
@@ -9126,6 +9137,17 @@ static void __devinit bnx2x_get_common_hwinfo(struct bnx2x *bp)
        id |= (val & 0xf);
        bp->common.chip_id = id;
 
+       /* force 57811 according to MISC register */
+       if (REG_RD(bp, MISC_REG_CHIP_TYPE) & MISC_REG_CHIP_TYPE_57811_MASK) {
+               if (CHIP_IS_57810(bp))
+                       bp->common.chip_id = (CHIP_NUM_57811 << 16) |
+                               (bp->common.chip_id & 0x0000FFFF);
+               else if (CHIP_IS_57810_MF(bp))
+                       bp->common.chip_id = (CHIP_NUM_57811_MF << 16) |
+                               (bp->common.chip_id & 0x0000FFFF);
+               bp->common.chip_id |= 0x1;
+       }
+
        /* Set doorbell size */
        bp->db_size = (1 << BNX2X_DB_SHIFT);
 
@@ -11251,6 +11273,8 @@ static int __devinit bnx2x_init_one(struct pci_dev *pdev,
        case BCM57810_MF:
        case BCM57840:
        case BCM57840_MF:
+       case BCM57811:
+       case BCM57811_MF:
                max_cos_est = BNX2X_MULTI_TX_COS_E3B0;
                break;
 
index ecc7fa6a6ca5ed1c01b22649afee218da9e528ca..2f5f18fd00517785d0688cbd9697574ddac8b9d3 100644 (file)
    starts at 0x0 for the A0 tape-out and increments by one for each
    all-layer tape-out. */
 #define MISC_REG_CHIP_REV                                       0xa40c
+/* [R 14] otp_misc_do[100:0] spare bits collection: 13:11-
+ * otp_misc_do[100:98]; 10:7 - otp_misc_do[87:84]; 6:3 - otp_misc_do[75:72];
+ * 2:1 - otp_misc_do[51:50]; 0 - otp_misc_do[1]. */
+#define MISC_REG_CHIP_TYPE                                      0xac60
+#define MISC_REG_CHIP_TYPE_57811_MASK                           (1<<1)
 /* [RW 32] The following driver registers(1...16) represent 16 drivers and
    32 clients. Each client can be controlled by one driver only. One in each
    bit represent that this driver control the appropriate client (Ex: bit 5