aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSergei Shtylyov <sergei.shtylyov@cogentembedded.com>2013-06-13 14:12:45 -0400
committerDavid S. Miller <davem@davemloft.net>2013-06-19 20:02:52 -0400
commitac8025a643a0e0beb81f3f37ca693364c6b77858 (patch)
treee68c66bd30ef37c6bc37c98ee8577b89dc57b491
parentc8bbe37aa60a3ef694df65fed4e905bd4b1bd73c (diff)
sh_eth: get R8A7740 Rx descriptor word 0 shift out of #ifdef
The only R8A7740 specific #ifdef hindering ARM multiplatform build is left in sh_eth_rx(): it covers the code shifting Rx buffer descriptor word 0 by 16. Get rid of the #ifdef by adding 'shift_rd0' field to the 'struct sh_eth_cpu_data', making the shift dependent on it, and setting it to 1 for the R8A7740 case... Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/renesas/sh_eth.c6
-rw-r--r--drivers/net/ethernet/renesas/sh_eth.h1
2 files changed, 4 insertions, 3 deletions
diff --git a/drivers/net/ethernet/renesas/sh_eth.c b/drivers/net/ethernet/renesas/sh_eth.c
index 4b4c586d2c4f..7732f11f14ad 100644
--- a/drivers/net/ethernet/renesas/sh_eth.c
+++ b/drivers/net/ethernet/renesas/sh_eth.c
@@ -656,6 +656,7 @@ static struct sh_eth_cpu_data r8a7740_data = {
656 .no_ade = 1, 656 .no_ade = 1,
657 .tsu = 1, 657 .tsu = 1,
658 .select_mii = 1, 658 .select_mii = 1,
659 .shift_rd0 = 1,
659}; 660};
660 661
661static struct sh_eth_cpu_data sh7619_data = { 662static struct sh_eth_cpu_data sh7619_data = {
@@ -1259,7 +1260,6 @@ static int sh_eth_rx(struct net_device *ndev, u32 intr_status, int *quota)
1259 if (!(desc_status & RDFEND)) 1260 if (!(desc_status & RDFEND))
1260 ndev->stats.rx_length_errors++; 1261 ndev->stats.rx_length_errors++;
1261 1262
1262#if defined(CONFIG_ARCH_R8A7740)
1263 /* 1263 /*
1264 * In case of almost all GETHER/ETHERs, the Receive Frame State 1264 * In case of almost all GETHER/ETHERs, the Receive Frame State
1265 * (RFS) bits in the Receive Descriptor 0 are from bit 9 to 1265 * (RFS) bits in the Receive Descriptor 0 are from bit 9 to
@@ -1267,8 +1267,8 @@ static int sh_eth_rx(struct net_device *ndev, u32 intr_status, int *quota)
1267 * bits are from bit 25 to bit 16. So, the driver needs right 1267 * bits are from bit 25 to bit 16. So, the driver needs right
1268 * shifting by 16. 1268 * shifting by 16.
1269 */ 1269 */
1270 desc_status >>= 16; 1270 if (mdp->cd->shift_rd0)
1271#endif 1271 desc_status >>= 16;
1272 1272
1273 if (desc_status & (RD_RFS1 | RD_RFS2 | RD_RFS3 | RD_RFS4 | 1273 if (desc_status & (RD_RFS1 | RD_RFS2 | RD_RFS3 | RD_RFS4 |
1274 RD_RFS5 | RD_RFS6 | RD_RFS10)) { 1274 RD_RFS5 | RD_RFS6 | RD_RFS10)) {
diff --git a/drivers/net/ethernet/renesas/sh_eth.h b/drivers/net/ethernet/renesas/sh_eth.h
index 7540dc35fdb8..a78fb0c424f8 100644
--- a/drivers/net/ethernet/renesas/sh_eth.h
+++ b/drivers/net/ethernet/renesas/sh_eth.h
@@ -481,6 +481,7 @@ struct sh_eth_cpu_data {
481 unsigned no_ade:1; /* E-DMAC DO NOT have ADE bit in EESR */ 481 unsigned no_ade:1; /* E-DMAC DO NOT have ADE bit in EESR */
482 unsigned hw_crc:1; /* E-DMAC have CSMR */ 482 unsigned hw_crc:1; /* E-DMAC have CSMR */
483 unsigned select_mii:1; /* EtherC have RMII_MII (MII select register) */ 483 unsigned select_mii:1; /* EtherC have RMII_MII (MII select register) */
484 unsigned shift_rd0:1; /* shift Rx descriptor word 0 right by 16 */
484}; 485};
485 486
486struct sh_eth_private { 487struct sh_eth_private {