|
199 | 199 | #define OCP_EEE_AR 0xa41a
|
200 | 200 | #define OCP_EEE_DATA 0xa41c
|
201 | 201 | #define OCP_PHY_STATUS 0xa420
|
| 202 | +#define OCP_INTR_EN 0xa424 |
202 | 203 | #define OCP_NCTL_CFG 0xa42c
|
203 | 204 | #define OCP_POWER_CFG 0xa430
|
204 | 205 | #define OCP_EEE_CFG 0xa432
|
@@ -620,6 +621,9 @@ enum spd_duplex {
|
620 | 621 | #define PHY_STAT_LAN_ON 3
|
621 | 622 | #define PHY_STAT_PWRDN 5
|
622 | 623 |
|
| 624 | +/* OCP_INTR_EN */ |
| 625 | +#define INTR_SPEED_FORCE BIT(3) |
| 626 | + |
623 | 627 | /* OCP_NCTL_CFG */
|
624 | 628 | #define PGA_RETURN_EN BIT(1)
|
625 | 629 |
|
@@ -7554,6 +7558,11 @@ static void r8156_hw_phy_cfg(struct r8152 *tp)
|
7554 | 7558 | ((swap_a & 0x1f) << 8) |
|
7555 | 7559 | ((swap_a >> 8) & 0x1f));
|
7556 | 7560 | }
|
| 7561 | + |
| 7562 | + /* Notify the MAC when the speed is changed to force mode. */ |
| 7563 | + data = ocp_reg_read(tp, OCP_INTR_EN); |
| 7564 | + data |= INTR_SPEED_FORCE; |
| 7565 | + ocp_reg_write(tp, OCP_INTR_EN, data); |
7557 | 7566 | break;
|
7558 | 7567 | default:
|
7559 | 7568 | break;
|
@@ -7949,6 +7958,11 @@ static void r8156b_hw_phy_cfg(struct r8152 *tp)
|
7949 | 7958 | break;
|
7950 | 7959 | }
|
7951 | 7960 |
|
| 7961 | + /* Notify the MAC when the speed is changed to force mode. */ |
| 7962 | + data = ocp_reg_read(tp, OCP_INTR_EN); |
| 7963 | + data |= INTR_SPEED_FORCE; |
| 7964 | + ocp_reg_write(tp, OCP_INTR_EN, data); |
| 7965 | + |
7952 | 7966 | if (rtl_phy_patch_request(tp, true, true))
|
7953 | 7967 | return;
|
7954 | 7968 |
|
|
0 commit comments