|
@@ -2125,7 +2125,8 @@ static void tg3_frob_aux_power(struct tg3 *tp)
|
|
|
|
|
|
if ((GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5704 ||
|
|
|
GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5714 ||
|
|
|
- GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5717) &&
|
|
|
+ GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5717 ||
|
|
|
+ GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720) &&
|
|
|
tp->pdev_peer != tp->pdev) {
|
|
|
struct net_device *dev_peer;
|
|
|
|
|
@@ -7251,6 +7252,11 @@ static int tg3_chip_reset(struct tg3 *tp)
|
|
|
tw32(0x7c00, val | (1 << 25));
|
|
|
}
|
|
|
|
|
|
+ if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720) {
|
|
|
+ val = tr32(TG3_CPMU_CLCK_ORIDE);
|
|
|
+ tw32(TG3_CPMU_CLCK_ORIDE, val & ~CPMU_CLCK_ORIDE_MAC_ORIDE_EN);
|
|
|
+ }
|
|
|
+
|
|
|
/* Reprobe ASF enable state. */
|
|
|
tp->tg3_flags &= ~TG3_FLAG_ENABLE_ASF;
|
|
|
tp->tg3_flags2 &= ~TG3_FLG2_ASF_NEW_HANDSHAKE;
|
|
@@ -8214,7 +8220,8 @@ static int tg3_reset_hw(struct tg3 *tp, int reset_phy)
|
|
|
GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_57780 ||
|
|
|
(tp->tg3_flags3 & TG3_FLG3_57765_PLUS)) {
|
|
|
val = tr32(TG3_RDMA_RSRVCTRL_REG);
|
|
|
- if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719) {
|
|
|
+ if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719 ||
|
|
|
+ GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720) {
|
|
|
val &= ~(TG3_RDMA_RSRVCTRL_TXMRGN_MASK |
|
|
|
TG3_RDMA_RSRVCTRL_FIFO_LWM_MASK |
|
|
|
TG3_RDMA_RSRVCTRL_FIFO_HWM_MASK);
|
|
@@ -8226,7 +8233,8 @@ static int tg3_reset_hw(struct tg3 *tp, int reset_phy)
|
|
|
val | TG3_RDMA_RSRVCTRL_FIFO_OFLW_FIX);
|
|
|
}
|
|
|
|
|
|
- if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719) {
|
|
|
+ if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719 ||
|
|
|
+ GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720) {
|
|
|
val = tr32(TG3_LSO_RD_DMA_CRPTEN_CTRL);
|
|
|
tw32(TG3_LSO_RD_DMA_CRPTEN_CTRL, val |
|
|
|
TG3_LSO_RD_DMA_CRPTEN_CTRL_BLEN_BD_4K |
|
|
@@ -9050,7 +9058,9 @@ static bool tg3_enable_msix(struct tg3 *tp)
|
|
|
|
|
|
if (tp->irq_cnt > 1) {
|
|
|
tp->tg3_flags3 |= TG3_FLG3_ENABLE_RSS;
|
|
|
- if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719) {
|
|
|
+
|
|
|
+ if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719 ||
|
|
|
+ GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720) {
|
|
|
tp->tg3_flags3 |= TG3_FLG3_ENABLE_TSS;
|
|
|
netif_set_real_num_tx_queues(tp->dev, tp->irq_cnt - 1);
|
|
|
}
|
|
@@ -13166,7 +13176,8 @@ static int __devinit tg3_get_invariants(struct tg3 *tp)
|
|
|
|
|
|
if (tp->pdev->device == TG3PCI_DEVICE_TIGON3_5717 ||
|
|
|
tp->pdev->device == TG3PCI_DEVICE_TIGON3_5718 ||
|
|
|
- tp->pdev->device == TG3PCI_DEVICE_TIGON3_5719)
|
|
|
+ tp->pdev->device == TG3PCI_DEVICE_TIGON3_5719 ||
|
|
|
+ tp->pdev->device == TG3PCI_DEVICE_TIGON3_5720)
|
|
|
pci_read_config_dword(tp->pdev,
|
|
|
TG3PCI_GEN2_PRODID_ASICREV,
|
|
|
&prod_id_asic_rev);
|
|
@@ -13321,11 +13332,13 @@ static int __devinit tg3_get_invariants(struct tg3 *tp)
|
|
|
|
|
|
if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5704 ||
|
|
|
GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5714 ||
|
|
|
- GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5717)
|
|
|
+ GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5717 ||
|
|
|
+ GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720)
|
|
|
tp->pdev_peer = tg3_find_peer(tp);
|
|
|
|
|
|
if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5717 ||
|
|
|
- GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719)
|
|
|
+ GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719 ||
|
|
|
+ GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720)
|
|
|
tp->tg3_flags3 |= TG3_FLG3_5717_PLUS;
|
|
|
|
|
|
if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_57765 ||
|
|
@@ -13444,7 +13457,8 @@ static int __devinit tg3_get_invariants(struct tg3 *tp)
|
|
|
tp->tg3_flags2 |= TG3_FLG2_PCI_EXPRESS;
|
|
|
|
|
|
tp->pcie_readrq = 4096;
|
|
|
- if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719)
|
|
|
+ if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719 ||
|
|
|
+ GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720)
|
|
|
tp->pcie_readrq = 2048;
|
|
|
|
|
|
pcie_set_readrq(tp->pdev, tp->pcie_readrq);
|