diff options
author | Nicolas Ferre <nicolas.ferre@atmel.com> | 2012-11-22 22:49:01 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-11-23 14:29:51 -0500 |
commit | b3e3bd71b429c04490d6a57671f2bbe2121d4f5a (patch) | |
tree | e11921016138e5c9972524e1e1243ba0dfca501a | |
parent | 452b5ecda0f99a15d6900dd9f845b8a0c09b5aca (diff) |
net/macb: GEM DMA configuration register update
Add information to the DMA Configuration Register to
maximize system performance:
- rx/tx packet buffer full memory size
- allow possibility to use INCR16 if supported
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Acked-by: Joachim Eastwood <manabian@gmail.com
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/ethernet/cadence/macb.c | 10 | ||||
-rw-r--r-- | drivers/net/ethernet/cadence/macb.h | 11 |
2 files changed, 19 insertions, 2 deletions
diff --git a/drivers/net/ethernet/cadence/macb.c b/drivers/net/ethernet/cadence/macb.c index cc6e593dd65..6a59bce38a8 100644 --- a/drivers/net/ethernet/cadence/macb.c +++ b/drivers/net/ethernet/cadence/macb.c | |||
@@ -1033,8 +1033,12 @@ static u32 macb_dbw(struct macb *bp) | |||
1033 | } | 1033 | } |
1034 | 1034 | ||
1035 | /* | 1035 | /* |
1036 | * Configure the receive DMA engine to use the correct receive buffer size. | 1036 | * Configure the receive DMA engine |
1037 | * This is a configurable parameter for GEM. | 1037 | * - use the correct receive buffer size |
1038 | * - set the possibility to use INCR16 bursts | ||
1039 | * (if not supported by FIFO, it will fallback to default) | ||
1040 | * - set both rx/tx packet buffers to full memory size | ||
1041 | * These are configurable parameters for GEM. | ||
1038 | */ | 1042 | */ |
1039 | static void macb_configure_dma(struct macb *bp) | 1043 | static void macb_configure_dma(struct macb *bp) |
1040 | { | 1044 | { |
@@ -1043,6 +1047,8 @@ static void macb_configure_dma(struct macb *bp) | |||
1043 | if (macb_is_gem(bp)) { | 1047 | if (macb_is_gem(bp)) { |
1044 | dmacfg = gem_readl(bp, DMACFG) & ~GEM_BF(RXBS, -1L); | 1048 | dmacfg = gem_readl(bp, DMACFG) & ~GEM_BF(RXBS, -1L); |
1045 | dmacfg |= GEM_BF(RXBS, RX_BUFFER_SIZE / 64); | 1049 | dmacfg |= GEM_BF(RXBS, RX_BUFFER_SIZE / 64); |
1050 | dmacfg |= GEM_BF(FBLDO, 16); | ||
1051 | dmacfg |= GEM_BIT(TXPBMS) | GEM_BF(RXBMS, -1L); | ||
1046 | gem_writel(bp, DMACFG, dmacfg); | 1052 | gem_writel(bp, DMACFG, dmacfg); |
1047 | } | 1053 | } |
1048 | } | 1054 | } |
diff --git a/drivers/net/ethernet/cadence/macb.h b/drivers/net/ethernet/cadence/macb.h index 44144218dd3..570908b9357 100644 --- a/drivers/net/ethernet/cadence/macb.h +++ b/drivers/net/ethernet/cadence/macb.h | |||
@@ -171,8 +171,19 @@ | |||
171 | #define GEM_DBW128 2 | 171 | #define GEM_DBW128 2 |
172 | 172 | ||
173 | /* Bitfields in DMACFG. */ | 173 | /* Bitfields in DMACFG. */ |
174 | #define GEM_FBLDO_OFFSET 0 | ||
175 | #define GEM_FBLDO_SIZE 5 | ||
176 | #define GEM_RXBMS_OFFSET 8 | ||
177 | #define GEM_RXBMS_SIZE 2 | ||
178 | #define GEM_TXPBMS_OFFSET 10 | ||
179 | #define GEM_TXPBMS_SIZE 1 | ||
180 | #define GEM_TXCOEN_OFFSET 11 | ||
181 | #define GEM_TXCOEN_SIZE 1 | ||
174 | #define GEM_RXBS_OFFSET 16 | 182 | #define GEM_RXBS_OFFSET 16 |
175 | #define GEM_RXBS_SIZE 8 | 183 | #define GEM_RXBS_SIZE 8 |
184 | #define GEM_DDRP_OFFSET 24 | ||
185 | #define GEM_DDRP_SIZE 1 | ||
186 | |||
176 | 187 | ||
177 | /* Bitfields in NSR */ | 188 | /* Bitfields in NSR */ |
178 | #define MACB_NSR_LINK_OFFSET 0 | 189 | #define MACB_NSR_LINK_OFFSET 0 |