Lines Matching refs:bm_pool
95 struct mvneta_bm_pool *bm_pool = in mvneta_bm_construct() local
97 struct mvneta_bm *priv = bm_pool->priv; in mvneta_bm_construct()
105 phys_addr = dma_map_single(&priv->pdev->dev, buf, bm_pool->buf_size, in mvneta_bm_construct()
110 mvneta_bm_pool_put_bp(priv, bm_pool, phys_addr); in mvneta_bm_construct()
117 struct mvneta_bm_pool *bm_pool) in mvneta_bm_pool_create() argument
122 size_bytes = sizeof(u32) * bm_pool->hwbm_pool.size; in mvneta_bm_pool_create()
123 bm_pool->virt_addr = dma_alloc_coherent(&pdev->dev, size_bytes, in mvneta_bm_pool_create()
124 &bm_pool->phys_addr, in mvneta_bm_pool_create()
126 if (!bm_pool->virt_addr) in mvneta_bm_pool_create()
129 if (!IS_ALIGNED((u32)bm_pool->virt_addr, MVNETA_BM_POOL_PTR_ALIGN)) { in mvneta_bm_pool_create()
130 dma_free_coherent(&pdev->dev, size_bytes, bm_pool->virt_addr, in mvneta_bm_pool_create()
131 bm_pool->phys_addr); in mvneta_bm_pool_create()
133 bm_pool->id, MVNETA_BM_POOL_PTR_ALIGN); in mvneta_bm_pool_create()
137 err = mvebu_mbus_get_dram_win_info(bm_pool->phys_addr, &target_id, in mvneta_bm_pool_create()
140 dma_free_coherent(&pdev->dev, size_bytes, bm_pool->virt_addr, in mvneta_bm_pool_create()
141 bm_pool->phys_addr); in mvneta_bm_pool_create()
146 mvneta_bm_write(priv, MVNETA_BM_POOL_BASE_REG(bm_pool->id), in mvneta_bm_pool_create()
147 bm_pool->phys_addr); in mvneta_bm_pool_create()
149 mvneta_bm_pool_target_set(priv, bm_pool->id, target_id, attr); in mvneta_bm_pool_create()
150 mvneta_bm_pool_enable(priv, bm_pool->id); in mvneta_bm_pool_create()
217 void mvneta_bm_bufs_free(struct mvneta_bm *priv, struct mvneta_bm_pool *bm_pool, in mvneta_bm_bufs_free() argument
222 bm_pool->port_map &= ~port_map; in mvneta_bm_bufs_free()
223 if (bm_pool->port_map) in mvneta_bm_bufs_free()
228 for (i = 0; i < bm_pool->hwbm_pool.buf_num; i++) { in mvneta_bm_bufs_free()
233 buf_phys_addr = mvneta_bm_pool_get_bp(priv, bm_pool); in mvneta_bm_bufs_free()
246 bm_pool->buf_size, DMA_FROM_DEVICE); in mvneta_bm_bufs_free()
247 hwbm_buf_free(&bm_pool->hwbm_pool, vaddr); in mvneta_bm_bufs_free()
253 bm_pool->hwbm_pool.buf_num -= i; in mvneta_bm_bufs_free()
259 struct mvneta_bm_pool *bm_pool, u8 port_map) in mvneta_bm_pool_destroy() argument
261 struct hwbm_pool *hwbm_pool = &bm_pool->hwbm_pool; in mvneta_bm_pool_destroy()
262 bm_pool->port_map &= ~port_map; in mvneta_bm_pool_destroy()
263 if (bm_pool->port_map) in mvneta_bm_pool_destroy()
266 bm_pool->type = MVNETA_BM_FREE; in mvneta_bm_pool_destroy()
268 mvneta_bm_bufs_free(priv, bm_pool, port_map); in mvneta_bm_pool_destroy()
270 WARN(1, "cannot free all buffers in pool %d\n", bm_pool->id); in mvneta_bm_pool_destroy()
272 if (bm_pool->virt_addr) { in mvneta_bm_pool_destroy()
275 bm_pool->virt_addr, bm_pool->phys_addr); in mvneta_bm_pool_destroy()
276 bm_pool->virt_addr = NULL; in mvneta_bm_pool_destroy()
279 mvneta_bm_pool_disable(priv, bm_pool->id); in mvneta_bm_pool_destroy()
286 struct mvneta_bm_pool *bm_pool; in mvneta_bm_pools_init() local
296 bm_pool = &priv->bm_pools[i]; in mvneta_bm_pools_init()
297 bm_pool->id = i; in mvneta_bm_pools_init()
298 bm_pool->type = MVNETA_BM_FREE; in mvneta_bm_pools_init()
327 bm_pool->hwbm_pool.size = size; in mvneta_bm_pools_init()
330 bm_pool->hwbm_pool.size); in mvneta_bm_pools_init()
334 if (of_property_read_u32(dn, prop, &bm_pool->pkt_size)) in mvneta_bm_pools_init()
335 bm_pool->pkt_size = 0; in mvneta_bm_pools_init()
467 struct mvneta_bm_pool *bm_pool = &priv->bm_pools[i]; in mvneta_bm_remove() local
469 mvneta_bm_pool_destroy(priv, bm_pool, all_ports_map); in mvneta_bm_remove()