drivers: net: xgene: Workaround for HW errata 10GE_4
This patch adds workaround for HW errata 10GE_4: "XGENET_ICM_ECM_DROP_COUNT_REG_0 reg not clear on read". Signed-off-by: Quan Nguyen <qnguyen@apm.com> Signed-off-by: Iyappan Subramanian <isubramanian@apm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
ca6d550c5d
commit
a844e7d1fa
|
@ -626,6 +626,8 @@ static void xgene_gmac_get_drop_cnt(struct xgene_enet_pdata *pdata,
|
|||
xgene_enet_rd_mcx_csr(pdata, ICM_ECM_DROP_COUNT_REG0_ADDR, &count);
|
||||
*rx = ICM_DROP_COUNT(count);
|
||||
*tx = ECM_DROP_COUNT(count);
|
||||
/* Errata: 10GE_4 - Fix ICM_ECM_DROP_COUNT not clear-on-read */
|
||||
xgene_enet_rd_mcx_csr(pdata, ECM_CONFIG0_REG_0_ADDR, &count);
|
||||
}
|
||||
|
||||
static void xgene_enet_config_ring_if_assoc(struct xgene_enet_pdata *pdata)
|
||||
|
|
|
@ -106,6 +106,11 @@ static void xgene_sgmac_get_drop_cnt(struct xgene_enet_pdata *pdata,
|
|||
count = xgene_enet_rd_mcx_csr(pdata, addr);
|
||||
*rx = ICM_DROP_COUNT(count);
|
||||
*tx = ECM_DROP_COUNT(count);
|
||||
/* Errata: 10GE_4 - ICM_ECM_DROP_COUNT not clear-on-read */
|
||||
addr = (pdata->enet_id != XGENE_ENET1) ?
|
||||
XG_MCX_ECM_CONFIG0_REG_0_ADDR :
|
||||
ECM_CONFIG0_REG_0_ADDR + pdata->port_id * OFFSET_4;
|
||||
xgene_enet_rd_mcx_csr(pdata, addr);
|
||||
}
|
||||
|
||||
static void xgene_enet_config_ring_if_assoc(struct xgene_enet_pdata *p)
|
||||
|
|
|
@ -188,6 +188,8 @@ static void xgene_xgmac_get_drop_cnt(struct xgene_enet_pdata *pdata,
|
|||
xgene_enet_rd_axg_csr(pdata, XGENET_ICM_ECM_DROP_COUNT_REG0, &count);
|
||||
*rx = ICM_DROP_COUNT(count);
|
||||
*tx = ECM_DROP_COUNT(count);
|
||||
/* Errata: 10GE_4 - ICM_ECM_DROP_COUNT not clear-on-read */
|
||||
xgene_enet_rd_axg_csr(pdata, XGENET_ECM_CONFIG0_REG_0, &count);
|
||||
}
|
||||
|
||||
static void xgene_enet_config_ring_if_assoc(struct xgene_enet_pdata *pdata)
|
||||
|
|
Loading…
Reference in New Issue