|
@@ -136,6 +136,7 @@ static DEFINE_PCI_DEVICE_TABLE(sky2_id_table) = {
|
|
|
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x436C) }, /* 88E8072 */
|
|
|
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x436D) }, /* 88E8055 */
|
|
|
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4370) }, /* 88E8075 */
|
|
|
+ { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4380) }, /* 88E8057 */
|
|
|
{ 0 }
|
|
|
};
|
|
|
|
|
@@ -647,7 +648,7 @@ static void sky2_phy_init(struct sky2_hw *hw, unsigned port)
|
|
|
ledover |= PHY_M_LED_MO_RX(MO_LED_OFF);
|
|
|
}
|
|
|
|
|
|
- if (hw->chip_id == CHIP_ID_YUKON_EC_U) {
|
|
|
+ if (hw->chip_id == CHIP_ID_YUKON_EC_U || hw->chip_id == CHIP_ID_YUKON_UL_2) {
|
|
|
/* apply fixes in PHY AFE */
|
|
|
gm_phy_write(hw, port, PHY_MARV_EXT_ADR, 255);
|
|
|
|
|
@@ -655,9 +656,11 @@ static void sky2_phy_init(struct sky2_hw *hw, unsigned port)
|
|
|
gm_phy_write(hw, port, 0x18, 0xaa99);
|
|
|
gm_phy_write(hw, port, 0x17, 0x2011);
|
|
|
|
|
|
- /* fix for IEEE A/B Symmetry failure in 1000BASE-T */
|
|
|
- gm_phy_write(hw, port, 0x18, 0xa204);
|
|
|
- gm_phy_write(hw, port, 0x17, 0x2002);
|
|
|
+ if (hw->chip_id == CHIP_ID_YUKON_EC_U) {
|
|
|
+ /* fix for IEEE A/B Symmetry failure in 1000BASE-T */
|
|
|
+ gm_phy_write(hw, port, 0x18, 0xa204);
|
|
|
+ gm_phy_write(hw, port, 0x17, 0x2002);
|
|
|
+ }
|
|
|
|
|
|
/* set page register to 0 */
|
|
|
gm_phy_write(hw, port, PHY_MARV_EXT_ADR, 0);
|
|
@@ -2807,6 +2810,7 @@ static u32 sky2_mhz(const struct sky2_hw *hw)
|
|
|
case CHIP_ID_YUKON_EC_U:
|
|
|
case CHIP_ID_YUKON_EX:
|
|
|
case CHIP_ID_YUKON_SUPR:
|
|
|
+ case CHIP_ID_YUKON_UL_2:
|
|
|
return 125;
|
|
|
|
|
|
case CHIP_ID_YUKON_FE:
|
|
@@ -2899,6 +2903,11 @@ static int __devinit sky2_init(struct sky2_hw *hw)
|
|
|
| SKY2_HW_ADV_POWER_CTL;
|
|
|
break;
|
|
|
|
|
|
+ case CHIP_ID_YUKON_UL_2:
|
|
|
+ hw->flags = SKY2_HW_GIGABIT
|
|
|
+ | SKY2_HW_ADV_POWER_CTL;
|
|
|
+ break;
|
|
|
+
|
|
|
default:
|
|
|
dev_err(&hw->pdev->dev, "unsupported chip type 0x%x\n",
|
|
|
hw->chip_id);
|
|
@@ -4265,9 +4274,10 @@ static const char *sky2_name(u8 chipid, char *buf, int sz)
|
|
|
"FE", /* 0xb7 */
|
|
|
"FE+", /* 0xb8 */
|
|
|
"Supreme", /* 0xb9 */
|
|
|
+ "UL 2", /* 0xba */
|
|
|
};
|
|
|
|
|
|
- if (chipid >= CHIP_ID_YUKON_XL && chipid < CHIP_ID_YUKON_SUPR)
|
|
|
+ if (chipid >= CHIP_ID_YUKON_XL && chipid < CHIP_ID_YUKON_UL_2)
|
|
|
strncpy(buf, name[chipid - CHIP_ID_YUKON_XL], sz);
|
|
|
else
|
|
|
snprintf(buf, sz, "(chip %#x)", chipid);
|