|
@@ -1513,6 +1513,13 @@ static int tg3_mdio_init(struct tg3 *tp)
|
|
|
TG3_CPMU_PHY_STRAP_IS_SERDES;
|
|
|
if (is_serdes)
|
|
|
tp->phy_addr += 7;
|
|
|
+ } else if (tg3_flag(tp, IS_SSB_CORE) && tg3_flag(tp, ROBOSWITCH)) {
|
|
|
+ int addr;
|
|
|
+
|
|
|
+ addr = ssb_gige_get_phyaddr(tp->pdev);
|
|
|
+ if (addr < 0)
|
|
|
+ return addr;
|
|
|
+ tp->phy_addr = addr;
|
|
|
} else
|
|
|
tp->phy_addr = TG3_PHY_MII_ADDR;
|
|
|
|
|
@@ -17366,8 +17373,10 @@ static int tg3_init_one(struct pci_dev *pdev,
|
|
|
tg3_flag_set(tp, FLUSH_POSTED_WRITES);
|
|
|
if (ssb_gige_one_dma_at_once(pdev))
|
|
|
tg3_flag_set(tp, ONE_DMA_AT_ONCE);
|
|
|
- if (ssb_gige_have_roboswitch(pdev))
|
|
|
+ if (ssb_gige_have_roboswitch(pdev)) {
|
|
|
+ tg3_flag_set(tp, USE_PHYLIB);
|
|
|
tg3_flag_set(tp, ROBOSWITCH);
|
|
|
+ }
|
|
|
if (ssb_gige_is_rgmii(pdev))
|
|
|
tg3_flag_set(tp, RGMII_MODE);
|
|
|
}
|