For more different devices, update device ID and subsystem id.
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
/*
* Device IDs
*/
-#define TXGBE_DEV_ID_RAPTOR_VF 0x1000
-#define TXGBE_DEV_ID_RAPTOR_SFP 0x1001 /* fiber */
-#define TXGBE_DEV_ID_RAPTOR_KR_KX_KX4 0x1002 /* backplane */
-#define TXGBE_DEV_ID_RAPTOR_XAUI 0x1003 /* copper */
-#define TXGBE_DEV_ID_RAPTOR_SGMII 0x1004 /* copper */
-#define TXGBE_DEV_ID_RAPTOR_QSFP 0x1011 /* fiber */
-#define TXGBE_DEV_ID_RAPTOR_VF_HV 0x2000
-#define TXGBE_DEV_ID_RAPTOR_T3_LOM 0x2001
-
-#define TXGBE_DEV_ID_WX1820_SFP 0x2001
+#define TXGBE_DEV_ID_SP1000 0x1001
+#define TXGBE_DEV_ID_WX1820 0x2001
+#define TXGBE_DEV_ID_SP1000_VF 0x1000
+#define TXGBE_DEV_ID_WX1820_VF 0x2000
/*
- * Subdevice IDs
+ * Subsystem IDs
*/
-#define TXGBE_SUBDEV_ID_RAPTOR 0x0000
-#define TXGBE_SUBDEV_ID_MPW 0x0001
+/* SFP */
+#define TXGBE_DEV_ID_SP1000_SFP 0x0000
+#define TXGBE_DEV_ID_WX1820_SFP 0x2000
+#define TXGBE_DEV_ID_SFP 0x00
+/* copper */
+#define TXGBE_DEV_ID_SP1000_XAUI 0x1010
+#define TXGBE_DEV_ID_WX1820_XAUI 0x2010
+#define TXGBE_DEV_ID_XAUI 0x10
+#define TXGBE_DEV_ID_SP1000_SGMII 0x1020
+#define TXGBE_DEV_ID_WX1820_SGMII 0x2020
+#define TXGBE_DEV_ID_SGMII 0x20
+/* backplane */
+#define TXGBE_DEV_ID_SP1000_KR_KX_KX4 0x1030
+#define TXGBE_DEV_ID_WX1820_KR_KX_KX4 0x2030
+#define TXGBE_DEV_ID_KR_KX_KX4 0x30
+/* MAC Interface */
+#define TXGBE_DEV_ID_SP1000_MAC_XAUI 0x1040
+#define TXGBE_DEV_ID_WX1820_MAC_XAUI 0x2040
+#define TXGBE_DEV_ID_MAC_XAUI 0x40
+#define TXGBE_DEV_ID_SP1000_MAC_SGMII 0x1060
+#define TXGBE_DEV_ID_WX1820_MAC_SGMII 0x2060
+#define TXGBE_DEV_ID_MAC_SGMII 0x60
+/* combined interface*/
+#define TXGBE_DEV_ID_SFI_XAUI 0x50
+/* fiber qsfp*/
+#define TXGBE_DEV_ID_QSFP 0x11
#define TXGBE_ETHERTYPE_FLOW_CTRL 0x8808
#define TXGBE_ETHERTYPE_IEEE_VLAN 0x8100 /* 802.1q protocol */
break;
case txgbe_media_type_copper:
/* only some copper devices support flow control autoneg */
- switch (hw->device_id) {
- case TXGBE_DEV_ID_RAPTOR_XAUI:
- case TXGBE_DEV_ID_RAPTOR_SGMII:
+ switch (hw->subsystem_device_id & 0xFF) {
+ case TXGBE_DEV_ID_XAUI:
+ case TXGBE_DEV_ID_SGMII:
supported = true;
break;
default:
}
switch (hw->device_id) {
- case TXGBE_DEV_ID_RAPTOR_KR_KX_KX4:
- hw->phy.media_type = txgbe_media_type_backplane;
+ case TXGBE_DEV_ID_SP1000:
+ case TXGBE_DEV_ID_WX1820:
hw->mac.type = txgbe_mac_raptor;
break;
- case TXGBE_DEV_ID_RAPTOR_XAUI:
- case TXGBE_DEV_ID_RAPTOR_SGMII:
- hw->phy.media_type = txgbe_media_type_copper;
- hw->mac.type = txgbe_mac_raptor;
- break;
- case TXGBE_DEV_ID_RAPTOR_SFP:
- case TXGBE_DEV_ID_WX1820_SFP:
- hw->phy.media_type = txgbe_media_type_fiber;
- hw->mac.type = txgbe_mac_raptor;
- break;
- case TXGBE_DEV_ID_RAPTOR_QSFP:
- hw->phy.media_type = txgbe_media_type_fiber_qsfp;
- hw->mac.type = txgbe_mac_raptor;
- break;
- case TXGBE_DEV_ID_RAPTOR_VF:
- case TXGBE_DEV_ID_RAPTOR_VF_HV:
+ case TXGBE_DEV_ID_SP1000_VF:
+ case TXGBE_DEV_ID_WX1820_VF:
hw->phy.media_type = txgbe_media_type_virtual;
hw->mac.type = txgbe_mac_raptor_vf;
break;
break;
}
- DEBUGOUT("found mac: %d media: %d, returns: %d\n",
- hw->mac.type, hw->phy.media_type, err);
+ DEBUGOUT("found mac: %d, returns: %d\n",
+ hw->mac.type, err);
return err;
}
DEBUGFUNC("txgbe_init_phy_raptor");
- if (hw->device_id == TXGBE_DEV_ID_RAPTOR_QSFP) {
+ if ((hw->device_id & 0xFF) == TXGBE_DEV_ID_QSFP) {
/* Store flag indicating I2C bus access control unit. */
hw->phy.qsfp_shared_i2c_bus = TRUE;
break;
}
- switch (hw->device_id) {
- case TXGBE_DEV_ID_RAPTOR_KR_KX_KX4:
+ switch (hw->subsystem_device_id & 0xFF) {
+ case TXGBE_DEV_ID_KR_KX_KX4:
+ case TXGBE_DEV_ID_MAC_SGMII:
+ case TXGBE_DEV_ID_MAC_XAUI:
/* Default device ID is mezzanine card KX/KX4 */
media_type = txgbe_media_type_backplane;
break;
- case TXGBE_DEV_ID_RAPTOR_SFP:
- case TXGBE_DEV_ID_WX1820_SFP:
+ case TXGBE_DEV_ID_SFP:
media_type = txgbe_media_type_fiber;
break;
- case TXGBE_DEV_ID_RAPTOR_QSFP:
+ case TXGBE_DEV_ID_QSFP:
media_type = txgbe_media_type_fiber_qsfp;
break;
- case TXGBE_DEV_ID_RAPTOR_XAUI:
- case TXGBE_DEV_ID_RAPTOR_SGMII:
+ case TXGBE_DEV_ID_XAUI:
+ case TXGBE_DEV_ID_SGMII:
media_type = txgbe_media_type_copper;
break;
+ case TXGBE_DEV_ID_SFI_XAUI:
+ if (hw->bus.lan_id == 0)
+ media_type = txgbe_media_type_fiber;
+ else
+ media_type = txgbe_media_type_copper;
+ break;
default:
media_type = txgbe_media_type_unknown;
break;
u32 sr_pma_ctl1;
u32 sr_an_ctl;
u32 sr_an_adv_reg2;
+ u8 type = hw->subsystem_device_id & 0xFF;
if (hw->phy.multispeed_fiber) {
autoc |= TXGBE_AUTOC_LMS_10G;
- } else if (hw->device_id == TXGBE_DEV_ID_RAPTOR_SFP ||
- hw->device_id == TXGBE_DEV_ID_WX1820_SFP) {
- autoc |= TXGBE_AUTOC_LMS_10G |
- TXGBE_AUTOC_10GS_SFI;
- } else if (hw->device_id == TXGBE_DEV_ID_RAPTOR_QSFP) {
+ } else if (type == TXGBE_DEV_ID_SFP) {
+ autoc |= TXGBE_AUTOC_LMS_10G;
+ autoc |= TXGBE_AUTOC_10GS_SFI;
+ } else if (type == TXGBE_DEV_ID_QSFP) {
autoc = 0; /*TBD*/
- } else if (hw->device_id == TXGBE_DEV_ID_RAPTOR_XAUI) {
- autoc |= TXGBE_AUTOC_LMS_10G_LINK_NO_AN |
- TXGBE_AUTOC_10G_XAUI;
+ } else if (type == TXGBE_DEV_ID_XAUI || type == TXGBE_DEV_ID_SFI_XAUI) {
+ autoc |= TXGBE_AUTOC_LMS_10G_LINK_NO_AN;
+ autoc |= TXGBE_AUTOC_10G_XAUI;
hw->phy.link_mode = TXGBE_PHYSICAL_LAYER_10GBASE_T;
- } else if (hw->device_id == TXGBE_DEV_ID_RAPTOR_SGMII) {
+ } else if (type == TXGBE_DEV_ID_SGMII) {
autoc |= TXGBE_AUTOC_LMS_SGMII_1G_100M;
hw->phy.link_mode = TXGBE_PHYSICAL_LAYER_1000BASE_T |
TXGBE_PHYSICAL_LAYER_100BASE_TX;
+ } else if (type == TXGBE_DEV_ID_MAC_XAUI) {
+ autoc |= TXGBE_AUTOC_LMS_10G_LINK_NO_AN;
+ hw->phy.link_mode = TXGBE_PHYSICAL_LAYER_10GBASE_KX4;
+ } else if (type == TXGBE_DEV_ID_MAC_SGMII) {
+ autoc |= TXGBE_AUTOC_LMS_1G_LINK_NO_AN;
+ hw->phy.link_mode = TXGBE_PHYSICAL_LAYER_1000BASE_KX;
}
- if (hw->device_id != TXGBE_DEV_ID_RAPTOR_SGMII)
+ if (type != TXGBE_DEV_ID_KR_KX_KX4)
return autoc;
sr_pcs_ctl = rd32_epcs(hw, SR_XS_PCS_CTRL2);
bool autoneg;
u32 speed;
u32 mactxcfg = 0;
+ u8 device_type = hw->subsystem_device_id & 0xFF;
speed = TXGBE_AUTOC_SPEED(autoc);
autoc &= ~TXGBE_AUTOC_SPEED_MASK;
autoneg = (autoc & TXGBE_AUTOC_AUTONEG ? true : false);
autoc &= ~TXGBE_AUTOC_AUTONEG;
- if (hw->device_id == TXGBE_DEV_ID_RAPTOR_KR_KX_KX4) {
+ if (device_type == TXGBE_DEV_ID_KR_KX_KX4) {
if (!autoneg) {
switch (hw->phy.link_mode) {
case TXGBE_PHYSICAL_LAYER_10GBASE_KR:
return;
}
}
- } else if (hw->device_id == TXGBE_DEV_ID_RAPTOR_XAUI ||
- hw->device_id == TXGBE_DEV_ID_RAPTOR_SGMII) {
+ } else if (device_type == TXGBE_DEV_ID_XAUI ||
+ device_type == TXGBE_DEV_ID_SGMII ||
+ device_type == TXGBE_DEV_ID_MAC_XAUI ||
+ device_type == TXGBE_DEV_ID_MAC_SGMII ||
+ (device_type == TXGBE_DEV_ID_SFI_XAUI &&
+ hw->phy.media_type == txgbe_media_type_copper)) {
if (speed == TXGBE_LINK_SPEED_10GB_FULL) {
txgbe_set_link_to_kx4(hw, autoneg);
} else {
txgbe_set_link_to_kx(hw, speed, 0);
txgbe_set_sgmii_an37_ability(hw);
}
- } else if (hw->device_id == TXGBE_DEV_ID_RAPTOR_SFP ||
- hw->device_id == TXGBE_DEV_ID_WX1820_SFP) {
+ } else if (hw->phy.media_type == txgbe_media_type_fiber) {
txgbe_set_link_to_sfi(hw, speed);
}
* The set of PCI devices this driver supports
*/
static const struct rte_pci_id pci_id_txgbe_map[] = {
- { RTE_PCI_DEVICE(PCI_VENDOR_ID_WANGXUN, TXGBE_DEV_ID_RAPTOR_SFP) },
- { RTE_PCI_DEVICE(PCI_VENDOR_ID_WANGXUN, TXGBE_DEV_ID_WX1820_SFP) },
+ { RTE_PCI_DEVICE(PCI_VENDOR_ID_WANGXUN, TXGBE_DEV_ID_SP1000) },
+ { RTE_PCI_DEVICE(PCI_VENDOR_ID_WANGXUN, TXGBE_DEV_ID_WX1820) },
{ .vendor_id = 0, /* sentinel */ },
};
* The set of PCI devices this driver supports (for VF)
*/
static const struct rte_pci_id pci_id_txgbevf_map[] = {
- { RTE_PCI_DEVICE(PCI_VENDOR_ID_WANGXUN, TXGBE_DEV_ID_RAPTOR_VF) },
- { RTE_PCI_DEVICE(PCI_VENDOR_ID_WANGXUN, TXGBE_DEV_ID_RAPTOR_VF_HV) },
+ { RTE_PCI_DEVICE(PCI_VENDOR_ID_WANGXUN, TXGBE_DEV_ID_SP1000_VF) },
+ { RTE_PCI_DEVICE(PCI_VENDOR_ID_WANGXUN, TXGBE_DEV_ID_WX1820_VF) },
{ .vendor_id = 0, /* sentinel */ },
};