ravb: TROCR register is only present on R-Car Gen3
Only use the TROCR register on R-Car Gen3 as it is not present on other SoCs. Offsets used for the undocumented registers are considered reserved and should not be written to. After some internal investigation with Renesas it remains unclear why this driver accesses these fields on R-Car Gen2 but regardless of what the historical reasons are the current code is considered incorrect. Signed-off-by: Simon Horman <horms+renesas@verge.net.au> Reviewed-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> Acked-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
2d957a7e2a
Коммит
fd8ab76a85
|
@ -193,7 +193,7 @@ enum ravb_reg {
|
|||
GECMR = 0x05b0,
|
||||
MAHR = 0x05c0,
|
||||
MALR = 0x05c8,
|
||||
TROCR = 0x0700, /* Undocumented? */
|
||||
TROCR = 0x0700, /* R-Car Gen3 only */
|
||||
CEFCR = 0x0740,
|
||||
FRECR = 0x0748,
|
||||
TSFRCR = 0x0750,
|
||||
|
|
|
@ -1621,8 +1621,10 @@ static struct net_device_stats *ravb_get_stats(struct net_device *ndev)
|
|||
stats0 = &priv->stats[RAVB_BE];
|
||||
stats1 = &priv->stats[RAVB_NC];
|
||||
|
||||
nstats->tx_dropped += ravb_read(ndev, TROCR);
|
||||
ravb_write(ndev, 0, TROCR); /* (write clear) */
|
||||
if (priv->chip_id == RCAR_GEN3) {
|
||||
nstats->tx_dropped += ravb_read(ndev, TROCR);
|
||||
ravb_write(ndev, 0, TROCR); /* (write clear) */
|
||||
}
|
||||
|
||||
nstats->rx_packets = stats0->rx_packets + stats1->rx_packets;
|
||||
nstats->tx_packets = stats0->tx_packets + stats1->tx_packets;
|
||||
|
|
Загрузка…
Ссылка в новой задаче