switch(phy_if) {
case PHY_INTERFACE_MODE_1000BASEX:
+ case PHY_INTERFACE_MODE_SGMII:
pre_amp = 0x1;
main_amp = 0x9;
post_amp = 0x1;
/* TODO: make this work for DAC cables of different lengths */
/* For a 10GBit serdes wit Fibre, SDS 8 or 9 */
- if (phy_mode == PHY_INTERFACE_MODE_10GBASER || PHY_INTERFACE_MODE_1000BASEX)
+ if (phy_mode == PHY_INTERFACE_MODE_10GBASER ||
+ phy_mode == PHY_INTERFACE_MODE_1000BASEX ||
+ phy_mode == PHY_INTERFACE_MODE_SGMII)
rtl9300_sds_field_w(sds, 0x2e, 0x16, 3, 2, 0x02);
else
pr_err("%s not PHY-based or SerDes, implement DAC!\n", __func__);
pr_info("start_1.3.1");
/* ##1.3.1 */
- if (phy_mode != PHY_INTERFACE_MODE_10GBASER && phy_mode != PHY_INTERFACE_MODE_1000BASEX)
+ if (phy_mode != PHY_INTERFACE_MODE_10GBASER &&
+ phy_mode != PHY_INTERFACE_MODE_1000BASEX &&
+ phy_mode != PHY_INTERFACE_MODE_SGMII)
rtl9300_sds_field_w(sds_num, 0x2e, 0xc, 8, 8, 0);
rtl9300_sds_field_w(sds_num, 0x2e, 0x17, 7, 7, 0x0);
bool eq_hold_enabled;
int i;
- if (phy_mode == PHY_INTERFACE_MODE_10GBASER || phy_mode == PHY_INTERFACE_MODE_1000BASEX) {
+ if (phy_mode == PHY_INTERFACE_MODE_10GBASER ||
+ phy_mode == PHY_INTERFACE_MODE_1000BASEX ||
+ phy_mode == PHY_INTERFACE_MODE_SGMII) {
/* rtl9300_rxCaliConf_serdes_myParam */
dac_long_cable_offset = 3;
eq_hold_enabled = true;
eq_hold_enabled = false;
}
- if (phy_mode == PHY_INTERFACE_MODE_1000BASEX)
+ if (phy_mode != PHY_INTERFACE_MODE_10GBASER)
pr_warn("%s: LEQ only valid for 10GR!\n", __func__);
pr_info("start_1.3.2");
pr_info("sum10:%u, avg10:%u, int10:%u", sum10, avg10, int10);
- if (phy_mode == PHY_INTERFACE_MODE_10GBASER || phy_mode == PHY_INTERFACE_MODE_1000BASEX) {
+ if (phy_mode == PHY_INTERFACE_MODE_10GBASER ||
+ phy_mode == PHY_INTERFACE_MODE_1000BASEX ||
+ phy_mode == PHY_INTERFACE_MODE_SGMII) {
if (dac_long_cable_offset) {
rtl9300_sds_rxcal_leq_offset_manual(sds_num, 1, dac_long_cable_offset);
rtl9300_sds_field_w(sds_num, 0x2e, 0x17, 7, 7, eq_hold_enabled);
{
rtl9300_sds_rxcal_3_1(sds_num, phy_mode);
- if (phy_mode == PHY_INTERFACE_MODE_10GBASER || phy_mode == PHY_INTERFACE_MODE_1000BASEX)
+ if (phy_mode == PHY_INTERFACE_MODE_10GBASER ||
+ phy_mode == PHY_INTERFACE_MODE_1000BASEX ||
+ phy_mode == PHY_INTERFACE_MODE_SGMII)
rtl9300_sds_rxcal_3_2(sds_num, phy_mode);
}
break;
case PHY_INTERFACE_MODE_1000BASEX:
+ case PHY_INTERFACE_MODE_SGMII:
rtl9300_sds_field_w(sds_num, 0x1, 24, 2, 0, 0);
rtl9300_sds_field_w(sds_num, 0x1, 3, 15, 8, 0);
rtl9300_sds_field_w(sds_num, 0x1, 2, 15, 0, 0);
break;
case PHY_INTERFACE_MODE_1000BASEX:
+ case PHY_INTERFACE_MODE_SGMII:
case PHY_INTERFACE_MODE_10GBASER:
v = rtl930x_read_sds_phy(sds_num, 5, 1);
return v & 0xff;
switch (phy_mode) {
case PHY_INTERFACE_MODE_1000BASEX:
+ case PHY_INTERFACE_MODE_SGMII:
case PHY_INTERFACE_MODE_XGMII:
if ((errors2 - errors1 > 100) ||
(errors1 >= 0xffff00) || (errors2 >= 0xffff00)) {