162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci/* TI K3 CPPI5 descriptors pool
362306a36Sopenharmony_ci *
462306a36Sopenharmony_ci * Copyright (C) 2020 Texas Instruments Incorporated - http://www.ti.com
562306a36Sopenharmony_ci */
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci#ifndef K3_CPPI_DESC_POOL_H_
862306a36Sopenharmony_ci#define K3_CPPI_DESC_POOL_H_
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci#include <linux/device.h>
1162306a36Sopenharmony_ci#include <linux/types.h>
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_cistruct k3_cppi_desc_pool;
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_civoid k3_cppi_desc_pool_destroy(struct k3_cppi_desc_pool *pool);
1662306a36Sopenharmony_cistruct k3_cppi_desc_pool *
1762306a36Sopenharmony_cik3_cppi_desc_pool_create_name(struct device *dev, size_t size,
1862306a36Sopenharmony_ci			      size_t desc_size,
1962306a36Sopenharmony_ci			      const char *name);
2062306a36Sopenharmony_ci#define k3_cppi_desc_pool_create(dev, size, desc_size) \
2162306a36Sopenharmony_ci		k3_cppi_desc_pool_create_name(dev, size, desc_size, NULL)
2262306a36Sopenharmony_cidma_addr_t
2362306a36Sopenharmony_cik3_cppi_desc_pool_virt2dma(struct k3_cppi_desc_pool *pool, void *addr);
2462306a36Sopenharmony_civoid *
2562306a36Sopenharmony_cik3_cppi_desc_pool_dma2virt(struct k3_cppi_desc_pool *pool, dma_addr_t dma);
2662306a36Sopenharmony_civoid *k3_cppi_desc_pool_alloc(struct k3_cppi_desc_pool *pool);
2762306a36Sopenharmony_civoid k3_cppi_desc_pool_free(struct k3_cppi_desc_pool *pool, void *addr);
2862306a36Sopenharmony_cisize_t k3_cppi_desc_pool_avail(struct k3_cppi_desc_pool *pool);
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ci#endif /* K3_CPPI_DESC_POOL_H_ */
31