diff options
author | Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> | 2013-06-13 14:12:45 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-06-19 20:02:52 -0400 |
commit | ac8025a643a0e0beb81f3f37ca693364c6b77858 (patch) | |
tree | e68c66bd30ef37c6bc37c98ee8577b89dc57b491 | |
parent | c8bbe37aa60a3ef694df65fed4e905bd4b1bd73c (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.c | 6 | ||||
-rw-r--r-- | drivers/net/ethernet/renesas/sh_eth.h | 1 |
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 | ||
661 | static struct sh_eth_cpu_data sh7619_data = { | 662 | static 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 | ||
486 | struct sh_eth_private { | 487 | struct sh_eth_private { |