rtmdio_931x_write_sds_phy(sds, page, reg, data);
}
-static u32 rtl9310_sds_field_r(int sds, u32 page, u32 reg, int end_bit, int start_bit)
-{
- int l = end_bit - start_bit + 1;
- u32 v = rtmdio_931x_read_sds_phy(sds, page, reg);
-
- if (l >= 32)
- return v;
-
- return (v >> start_bit) & (BIT(l) - 1);
-}
-
static void rtl9310_sds_field_w_new(int sds, u32 page, u32 reg, int end_bit, int start_bit, u32 v)
{
int l = end_bit - start_bit + 1;
case PHY_INTERFACE_MODE_NA:
break;
case PHY_INTERFACE_MODE_XGMII:
- u32 xsg_sdsid_0, xsg_sdsid_1;
-
- if (sds < 2)
- xsg_sdsid_0 = sds;
- else
- xsg_sdsid_0 = (sds - 1) * 2;
- xsg_sdsid_1 = xsg_sdsid_0 + 1;
-
for (int i = 0; i < 4; ++i) {
- rtl9310_sds_field_w(xsg_sdsid_0, 0x1, 24, 2, 0, i);
- rtl9310_sds_field_w(xsg_sdsid_0, 0x1, 3, 15, 8, 0x0);
- rtl9310_sds_field_w(xsg_sdsid_0, 0x1, 2, 15, 0, 0x0);
+ rtl9310_sds_field_w_new(sds, 0x101, 24, 2, 0, i);
+ rtl9310_sds_field_w_new(sds, 0x101, 3, 15, 8, 0x0);
+ rtl9310_sds_field_w_new(sds, 0x101, 2, 15, 0, 0x0);
}
for (int i = 0; i < 4; ++i) {
- rtl9310_sds_field_w(xsg_sdsid_1, 0x1, 24, 2, 0, i);
- rtl9310_sds_field_w(xsg_sdsid_1, 0x1, 3, 15, 8, 0x0);
- rtl9310_sds_field_w(xsg_sdsid_1, 0x1, 2, 15, 0, 0x0);
+ rtl9310_sds_field_w_new(sds, 0x201, 24, 2, 0, i);
+ rtl9310_sds_field_w_new(sds, 0x201, 3, 15, 8, 0x0);
+ rtl9310_sds_field_w_new(sds, 0x201, 2, 15, 0, 0x0);
}
- rtl9310_sds_field_w(xsg_sdsid_0, 0x1, 0, 15, 0, 0x0);
- rtl9310_sds_field_w(xsg_sdsid_0, 0x1, 1, 15, 8, 0x0);
- rtl9310_sds_field_w(xsg_sdsid_1, 0x1, 0, 15, 0, 0x0);
- rtl9310_sds_field_w(xsg_sdsid_1, 0x1, 1, 15, 8, 0x0);
+ rtl9310_sds_field_w_new(sds, 0x101, 0, 15, 0, 0x0);
+ rtl9310_sds_field_w_new(sds, 0x101, 1, 15, 8, 0x0);
+ rtl9310_sds_field_w_new(sds, 0x201, 0, 15, 0, 0x0);
+ rtl9310_sds_field_w_new(sds, 0x201, 1, 15, 8, 0x0);
break;
default:
break;
0x0dc0, 0x01c0, 0x0200, 0x0180, 0x0160, 0x0123,
0x0123, 0x0163, 0x01a3, 0x01a0, 0x01c3, 0x09c3,
};
- u32 asds, dSds, ori, model_info, val;
+ u32 asds, ori, model_info, val;
int chiptype = 0;
asds = rtl931x_get_analog_sds(sds);
pr_info("%s: set sds %d to mode %d\n", __func__, sds, mode);
val = rtl9310_sds_field_r_new(sds, 0x1F, 0x9, 11, 6);
- pr_info("%s: fibermode %08X stored mode 0x%x analog SDS %d", __func__,
- rtmdio_931x_read_sds_phy_new(sds, 0x1f, 0x9), val, asds);
- pr_info("%s: SGMII mode %08X in 0x24 0x9 analog SDS %d", __func__,
- rtmdio_931x_read_sds_phy_new(sds, 0x24, 0x9), asds);
+ pr_info("%s: fibermode %08X stored mode 0x%x", __func__,
+ rtmdio_931x_read_sds_phy_new(sds, 0x1f, 0x9), val);
+ pr_info("%s: SGMII mode %08X in 0x24 0x9", __func__,
+ rtmdio_931x_read_sds_phy_new(sds, 0x24, 0x9));
pr_info("%s: CMU mode %08X stored even SDS %d", __func__,
rtmdio_931x_read_sds_phy(asds & ~1, 0x20, 0x12), asds & ~1);
pr_info("%s: serdes_mode_ctrl %08X", __func__, RTL931X_SERDES_MODE_CTRL + 4 * (sds >> 2));
pr_info("%s CMU page 0x26 0x7 %08x\n", __func__, rtmdio_931x_read_sds_phy_new(sds, 0x26, 0x7));
pr_info("%s CMU page 0x28 0x7 %08x\n", __func__, rtmdio_931x_read_sds_phy_new(sds, 0x28, 0x7));
pr_info("%s XSG page 0x0 0xe %08x\n", __func__, rtmdio_931x_read_sds_phy_new(sds, 0x100, 0xe));
- pr_info("%s XSG2 page 0x0 0xe %08x\n", __func__, rtmdio_931x_read_sds_phy(dSds + 1, 0x0, 0xe));
+ pr_info("%s XSG2 page 0x0 0xe %08x\n", __func__, rtmdio_931x_read_sds_phy_new(sds, 0x200, 0xe));
model_info = sw_r32(RTL93XX_MODEL_NAME_INFO);
if ((model_info >> 4) & 0x1) {
pr_info("detected chiptype 0\n");
}
- if (sds < 2)
- dSds = sds;
- else
- dSds = (sds - 1) * 2;
-
pr_info("%s: 2.5gbit %08X", __func__,
rtmdio_931x_read_sds_phy_new(sds, 0x101, 0x14));
case PHY_INTERFACE_MODE_XGMII: /* MII_XSGMII */
if (chiptype) {
- u32 xsg_sdsid_1;
- xsg_sdsid_1 = dSds + 1;
/* fifo inv clk */
rtl9310_sds_field_w_new(sds, 0x101, 0x1, 7, 4, 0xf);
rtl9310_sds_field_w_new(sds, 0x101, 0x1, 3, 0, 0xf);
- rtl9310_sds_field_w(xsg_sdsid_1, 0x1, 0x1, 7, 4, 0xf);
- rtl9310_sds_field_w(xsg_sdsid_1, 0x1, 0x1, 3, 0, 0xf);
+ rtl9310_sds_field_w_new(sds, 0x201, 0x1, 7, 4, 0xf);
+ rtl9310_sds_field_w_new(sds, 0x201, 0x1, 3, 0, 0xf);
}
rtl9310_sds_field_w_new(sds, 0x100, 0xE, 12, 12, 1);
- rtl9310_sds_field_w(dSds + 1, 0x0, 0xE, 12, 12, 1);
+ rtl9310_sds_field_w_new(sds, 0x200, 0xE, 12, 12, 1);
break;
case PHY_INTERFACE_MODE_USXGMII: /* MII_USXGMII_10GSXGMII/10GDXGMII/10GQXGMII: */
{
u32 sts, sts1, latch_sts, latch_sts1;
if (0){
- u32 xsg_sdsid_0, xsg_sdsid_1;
-
- xsg_sdsid_0 = sds < 2 ? sds : (sds - 1) * 2;
- xsg_sdsid_1 = xsg_sdsid_0 + 1;
-
- sts = rtl9310_sds_field_r(xsg_sdsid_0, 0x1, 29, 8, 0);
- sts1 = rtl9310_sds_field_r(xsg_sdsid_1, 0x1, 29, 8, 0);
- latch_sts = rtl9310_sds_field_r(xsg_sdsid_0, 0x1, 30, 8, 0);
- latch_sts1 = rtl9310_sds_field_r(xsg_sdsid_1, 0x1, 30, 8, 0);
+ sts = rtl9310_sds_field_r_new(sds, 0x101, 29, 8, 0);
+ sts1 = rtl9310_sds_field_r_new(sds, 0x201, 29, 8, 0);
+ latch_sts = rtl9310_sds_field_r_new(sds, 0x101, 30, 8, 0);
+ latch_sts1 = rtl9310_sds_field_r_new(sds, 0x201, 30, 8, 0);
} else {
sts = rtl9310_sds_field_r_new(sds, 0x5, 0, 12, 12);
latch_sts = rtl9310_sds_field_r_new(sds, 0x4, 1, 2, 2);