diff options
Diffstat (limited to 'drivers/net/ethernet')
-rw-r--r-- | drivers/net/ethernet/ti/davinci_cpdma.c | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/drivers/net/ethernet/ti/davinci_cpdma.c b/drivers/net/ethernet/ti/davinci_cpdma.c index 19e5f32a8a64..cf72b3390d85 100644 --- a/drivers/net/ethernet/ti/davinci_cpdma.c +++ b/drivers/net/ethernet/ti/davinci_cpdma.c | |||
@@ -86,7 +86,7 @@ struct cpdma_desc_pool { | |||
86 | void __iomem *iomap; /* ioremap map */ | 86 | void __iomem *iomap; /* ioremap map */ |
87 | void *cpumap; /* dma_alloc map */ | 87 | void *cpumap; /* dma_alloc map */ |
88 | int desc_size, mem_size; | 88 | int desc_size, mem_size; |
89 | int num_desc, used_desc; | 89 | int num_desc; |
90 | struct device *dev; | 90 | struct device *dev; |
91 | struct gen_pool *gen_pool; | 91 | struct gen_pool *gen_pool; |
92 | }; | 92 | }; |
@@ -148,7 +148,10 @@ static void cpdma_desc_pool_destroy(struct cpdma_desc_pool *pool) | |||
148 | if (!pool) | 148 | if (!pool) |
149 | return; | 149 | return; |
150 | 150 | ||
151 | WARN_ON(pool->used_desc); | 151 | WARN(gen_pool_size(pool->gen_pool) != gen_pool_avail(pool->gen_pool), |
152 | "cpdma_desc_pool size %d != avail %d", | ||
153 | gen_pool_size(pool->gen_pool), | ||
154 | gen_pool_avail(pool->gen_pool)); | ||
152 | if (pool->cpumap) | 155 | if (pool->cpumap) |
153 | dma_free_coherent(pool->dev, pool->mem_size, pool->cpumap, | 156 | dma_free_coherent(pool->dev, pool->mem_size, pool->cpumap, |
154 | pool->phys); | 157 | pool->phys); |
@@ -232,21 +235,14 @@ desc_from_phys(struct cpdma_desc_pool *pool, dma_addr_t dma) | |||
232 | static struct cpdma_desc __iomem * | 235 | static struct cpdma_desc __iomem * |
233 | cpdma_desc_alloc(struct cpdma_desc_pool *pool) | 236 | cpdma_desc_alloc(struct cpdma_desc_pool *pool) |
234 | { | 237 | { |
235 | struct cpdma_desc __iomem *desc = NULL; | 238 | return (struct cpdma_desc __iomem *) |
236 | 239 | gen_pool_alloc(pool->gen_pool, pool->desc_size); | |
237 | desc = (struct cpdma_desc __iomem *)gen_pool_alloc(pool->gen_pool, | ||
238 | pool->desc_size); | ||
239 | if (desc) | ||
240 | pool->used_desc++; | ||
241 | |||
242 | return desc; | ||
243 | } | 240 | } |
244 | 241 | ||
245 | static void cpdma_desc_free(struct cpdma_desc_pool *pool, | 242 | static void cpdma_desc_free(struct cpdma_desc_pool *pool, |
246 | struct cpdma_desc __iomem *desc, int num_desc) | 243 | struct cpdma_desc __iomem *desc, int num_desc) |
247 | { | 244 | { |
248 | gen_pool_free(pool->gen_pool, (unsigned long)desc, pool->desc_size); | 245 | gen_pool_free(pool->gen_pool, (unsigned long)desc, pool->desc_size); |
249 | pool->used_desc--; | ||
250 | } | 246 | } |
251 | 247 | ||
252 | struct cpdma_ctlr *cpdma_ctlr_create(struct cpdma_params *params) | 248 | struct cpdma_ctlr *cpdma_ctlr_create(struct cpdma_params *params) |