diff options
Diffstat (limited to 'drivers/net/ethernet/amd/xgbe')
| -rw-r--r-- | drivers/net/ethernet/amd/xgbe/xgbe-common.h | 2 | ||||
| -rw-r--r-- | drivers/net/ethernet/amd/xgbe/xgbe-dev.c | 22 |
2 files changed, 16 insertions, 8 deletions
diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-common.h b/drivers/net/ethernet/amd/xgbe/xgbe-common.h index d272dc6984ac..b40d4377cc71 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-common.h +++ b/drivers/net/ethernet/amd/xgbe/xgbe-common.h | |||
| @@ -431,8 +431,6 @@ | |||
| 431 | #define MAC_MDIOSCAR_PA_WIDTH 5 | 431 | #define MAC_MDIOSCAR_PA_WIDTH 5 |
| 432 | #define MAC_MDIOSCAR_RA_INDEX 0 | 432 | #define MAC_MDIOSCAR_RA_INDEX 0 |
| 433 | #define MAC_MDIOSCAR_RA_WIDTH 16 | 433 | #define MAC_MDIOSCAR_RA_WIDTH 16 |
| 434 | #define MAC_MDIOSCAR_REG_INDEX 0 | ||
| 435 | #define MAC_MDIOSCAR_REG_WIDTH 21 | ||
| 436 | #define MAC_MDIOSCCDR_BUSY_INDEX 22 | 434 | #define MAC_MDIOSCCDR_BUSY_INDEX 22 |
| 437 | #define MAC_MDIOSCCDR_BUSY_WIDTH 1 | 435 | #define MAC_MDIOSCCDR_BUSY_WIDTH 1 |
| 438 | #define MAC_MDIOSCCDR_CMD_INDEX 16 | 436 | #define MAC_MDIOSCCDR_CMD_INDEX 16 |
diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-dev.c b/drivers/net/ethernet/amd/xgbe/xgbe-dev.c index 1e929a1e4ca7..4666084eda16 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-dev.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-dev.c | |||
| @@ -1284,6 +1284,20 @@ static void xgbe_write_mmd_regs(struct xgbe_prv_data *pdata, int prtad, | |||
| 1284 | } | 1284 | } |
| 1285 | } | 1285 | } |
| 1286 | 1286 | ||
| 1287 | static unsigned int xgbe_create_mdio_sca(int port, int reg) | ||
| 1288 | { | ||
| 1289 | unsigned int mdio_sca, da; | ||
| 1290 | |||
| 1291 | da = (reg & MII_ADDR_C45) ? reg >> 16 : 0; | ||
| 1292 | |||
| 1293 | mdio_sca = 0; | ||
| 1294 | XGMAC_SET_BITS(mdio_sca, MAC_MDIOSCAR, RA, reg); | ||
| 1295 | XGMAC_SET_BITS(mdio_sca, MAC_MDIOSCAR, PA, port); | ||
| 1296 | XGMAC_SET_BITS(mdio_sca, MAC_MDIOSCAR, DA, da); | ||
| 1297 | |||
| 1298 | return mdio_sca; | ||
| 1299 | } | ||
| 1300 | |||
| 1287 | static int xgbe_write_ext_mii_regs(struct xgbe_prv_data *pdata, int addr, | 1301 | static int xgbe_write_ext_mii_regs(struct xgbe_prv_data *pdata, int addr, |
| 1288 | int reg, u16 val) | 1302 | int reg, u16 val) |
| 1289 | { | 1303 | { |
| @@ -1291,9 +1305,7 @@ static int xgbe_write_ext_mii_regs(struct xgbe_prv_data *pdata, int addr, | |||
| 1291 | 1305 | ||
| 1292 | reinit_completion(&pdata->mdio_complete); | 1306 | reinit_completion(&pdata->mdio_complete); |
| 1293 | 1307 | ||
| 1294 | mdio_sca = 0; | 1308 | mdio_sca = xgbe_create_mdio_sca(addr, reg); |
| 1295 | XGMAC_SET_BITS(mdio_sca, MAC_MDIOSCAR, REG, reg); | ||
| 1296 | XGMAC_SET_BITS(mdio_sca, MAC_MDIOSCAR, DA, addr); | ||
| 1297 | XGMAC_IOWRITE(pdata, MAC_MDIOSCAR, mdio_sca); | 1309 | XGMAC_IOWRITE(pdata, MAC_MDIOSCAR, mdio_sca); |
| 1298 | 1310 | ||
| 1299 | mdio_sccd = 0; | 1311 | mdio_sccd = 0; |
| @@ -1317,9 +1329,7 @@ static int xgbe_read_ext_mii_regs(struct xgbe_prv_data *pdata, int addr, | |||
| 1317 | 1329 | ||
| 1318 | reinit_completion(&pdata->mdio_complete); | 1330 | reinit_completion(&pdata->mdio_complete); |
| 1319 | 1331 | ||
| 1320 | mdio_sca = 0; | 1332 | mdio_sca = xgbe_create_mdio_sca(addr, reg); |
| 1321 | XGMAC_SET_BITS(mdio_sca, MAC_MDIOSCAR, REG, reg); | ||
| 1322 | XGMAC_SET_BITS(mdio_sca, MAC_MDIOSCAR, DA, addr); | ||
| 1323 | XGMAC_IOWRITE(pdata, MAC_MDIOSCAR, mdio_sca); | 1333 | XGMAC_IOWRITE(pdata, MAC_MDIOSCAR, mdio_sca); |
| 1324 | 1334 | ||
| 1325 | mdio_sccd = 0; | 1335 | mdio_sccd = 0; |
