Lines Matching refs:bm_pool

347 				struct mvpp2_bm_pool *bm_pool, int size)  in mvpp2_bm_pool_create()  argument
361 bm_pool->size_bytes = 2 * sizeof(u32) * size; in mvpp2_bm_pool_create()
363 bm_pool->size_bytes = 2 * sizeof(u64) * size; in mvpp2_bm_pool_create()
365 bm_pool->virt_addr = dma_alloc_coherent(dev, bm_pool->size_bytes, in mvpp2_bm_pool_create()
366 &bm_pool->dma_addr, in mvpp2_bm_pool_create()
368 if (!bm_pool->virt_addr) in mvpp2_bm_pool_create()
371 if (!IS_ALIGNED((unsigned long)bm_pool->virt_addr, in mvpp2_bm_pool_create()
373 dma_free_coherent(dev, bm_pool->size_bytes, in mvpp2_bm_pool_create()
374 bm_pool->virt_addr, bm_pool->dma_addr); in mvpp2_bm_pool_create()
376 bm_pool->id, MVPP2_BM_POOL_PTR_ALIGN); in mvpp2_bm_pool_create()
380 mvpp2_write(priv, MVPP2_BM_POOL_BASE_REG(bm_pool->id), in mvpp2_bm_pool_create()
381 lower_32_bits(bm_pool->dma_addr)); in mvpp2_bm_pool_create()
382 mvpp2_write(priv, MVPP2_BM_POOL_SIZE_REG(bm_pool->id), size); in mvpp2_bm_pool_create()
384 val = mvpp2_read(priv, MVPP2_BM_POOL_CTRL_REG(bm_pool->id)); in mvpp2_bm_pool_create()
386 mvpp2_write(priv, MVPP2_BM_POOL_CTRL_REG(bm_pool->id), val); in mvpp2_bm_pool_create()
388 bm_pool->size = size; in mvpp2_bm_pool_create()
389 bm_pool->pkt_size = 0; in mvpp2_bm_pool_create()
390 bm_pool->buf_num = 0; in mvpp2_bm_pool_create()
397 struct mvpp2_bm_pool *bm_pool, in mvpp2_bm_pool_bufsize_set() argument
402 bm_pool->buf_size = buf_size; in mvpp2_bm_pool_bufsize_set()
405 mvpp2_write(priv, MVPP2_POOL_BUF_SIZE_REG(bm_pool->id), val); in mvpp2_bm_pool_bufsize_set()
409 struct mvpp2_bm_pool *bm_pool, in mvpp2_bm_bufs_get_addrs() argument
416 MVPP2_BM_PHY_ALLOC_REG(bm_pool->id)); in mvpp2_bm_bufs_get_addrs()
440 struct mvpp2_bm_pool *bm_pool, int buf_num) in mvpp2_bm_bufs_free() argument
444 if (buf_num > bm_pool->buf_num) { in mvpp2_bm_bufs_free()
446 bm_pool->id, buf_num); in mvpp2_bm_bufs_free()
447 buf_num = bm_pool->buf_num; in mvpp2_bm_bufs_free()
455 mvpp2_bm_bufs_get_addrs(dev, priv, bm_pool, in mvpp2_bm_bufs_free()
459 bm_pool->buf_size, DMA_FROM_DEVICE); in mvpp2_bm_bufs_free()
465 mvpp2_frag_free(bm_pool, data); in mvpp2_bm_bufs_free()
469 bm_pool->buf_num -= i; in mvpp2_bm_bufs_free()
473 static int mvpp2_check_hw_buf_num(struct mvpp2 *priv, struct mvpp2_bm_pool *bm_pool) in mvpp2_check_hw_buf_num() argument
477 buf_num += mvpp2_read(priv, MVPP2_BM_POOL_PTRS_NUM_REG(bm_pool->id)) & in mvpp2_check_hw_buf_num()
479 buf_num += mvpp2_read(priv, MVPP2_BM_BPPI_PTRS_NUM_REG(bm_pool->id)) & in mvpp2_check_hw_buf_num()
491 struct mvpp2_bm_pool *bm_pool) in mvpp2_bm_pool_destroy() argument
496 buf_num = mvpp2_check_hw_buf_num(priv, bm_pool); in mvpp2_bm_pool_destroy()
497 mvpp2_bm_bufs_free(dev, priv, bm_pool, buf_num); in mvpp2_bm_pool_destroy()
500 buf_num = mvpp2_check_hw_buf_num(priv, bm_pool); in mvpp2_bm_pool_destroy()
503 bm_pool->id, bm_pool->buf_num); in mvpp2_bm_pool_destroy()
507 val = mvpp2_read(priv, MVPP2_BM_POOL_CTRL_REG(bm_pool->id)); in mvpp2_bm_pool_destroy()
509 mvpp2_write(priv, MVPP2_BM_POOL_CTRL_REG(bm_pool->id), val); in mvpp2_bm_pool_destroy()
511 dma_free_coherent(dev, bm_pool->size_bytes, in mvpp2_bm_pool_destroy()
512 bm_pool->virt_addr, in mvpp2_bm_pool_destroy()
513 bm_pool->dma_addr); in mvpp2_bm_pool_destroy()
520 struct mvpp2_bm_pool *bm_pool; in mvpp2_bm_pools_init() local
528 bm_pool = &priv->bm_pools[i]; in mvpp2_bm_pools_init()
529 bm_pool->id = i; in mvpp2_bm_pools_init()
530 err = mvpp2_bm_pool_create(dev, priv, bm_pool, size); in mvpp2_bm_pools_init()
533 mvpp2_bm_pool_bufsize_set(priv, bm_pool, 0); in mvpp2_bm_pools_init()
631 struct mvpp2_bm_pool *bm_pool, in mvpp2_buf_alloc() argument
639 data = mvpp2_frag_alloc(bm_pool); in mvpp2_buf_alloc()
644 MVPP2_RX_BUF_SIZE(bm_pool->pkt_size), in mvpp2_buf_alloc()
647 mvpp2_frag_free(bm_pool, data); in mvpp2_buf_alloc()
701 struct mvpp2_bm_pool *bm_pool, int buf_num) in mvpp2_bm_bufs_add() argument
709 bm_pool->pkt_size > MVPP2_BM_LONG_PKT_SIZE) { in mvpp2_bm_bufs_add()
715 buf_size = MVPP2_RX_BUF_SIZE(bm_pool->pkt_size); in mvpp2_bm_bufs_add()
719 (buf_num + bm_pool->buf_num > bm_pool->size)) { in mvpp2_bm_bufs_add()
722 buf_num, bm_pool->id); in mvpp2_bm_bufs_add()
727 buf = mvpp2_buf_alloc(port, bm_pool, &dma_addr, in mvpp2_bm_bufs_add()
732 mvpp2_bm_pool_put(port, bm_pool->id, dma_addr, in mvpp2_bm_bufs_add()
737 bm_pool->buf_num += i; in mvpp2_bm_bufs_add()
741 bm_pool->id, bm_pool->pkt_size, buf_size, total_size); in mvpp2_bm_bufs_add()
745 bm_pool->id, i, buf_num); in mvpp2_bm_bufs_add()
2868 struct mvpp2_bm_pool *bm_pool, int pool) in mvpp2_rx_refill() argument
2875 buf = mvpp2_buf_alloc(port, bm_pool, &dma_addr, &phys_addr, in mvpp2_rx_refill()
2934 struct mvpp2_bm_pool *bm_pool; in mvpp2_rx() local
2953 bm_pool = &port->priv->bm_pools[pool]; in mvpp2_rx()
2969 if (bm_pool->frag_size > PAGE_SIZE) in mvpp2_rx()
2972 frag_size = bm_pool->frag_size; in mvpp2_rx()
2980 err = mvpp2_rx_refill(port, bm_pool, pool); in mvpp2_rx()
2987 bm_pool->buf_size, DMA_FROM_DEVICE); in mvpp2_rx()
5942 struct mvpp2_bm_pool *bm_pool = &priv->bm_pools[i]; in mvpp2_remove() local
5944 mvpp2_bm_pool_destroy(&pdev->dev, priv, bm_pool); in mvpp2_remove()