diff options
Diffstat (limited to 'platform/linux-generic/odp_dma.c')
-rw-r--r-- | platform/linux-generic/odp_dma.c | 114 |
1 files changed, 14 insertions, 100 deletions
diff --git a/platform/linux-generic/odp_dma.c b/platform/linux-generic/odp_dma.c index fa45b3b02..8ac18260c 100644 --- a/platform/linux-generic/odp_dma.c +++ b/platform/linux-generic/odp_dma.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2021-2022, Nokia +/* Copyright (c) 2021-2023, Nokia * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -99,11 +99,12 @@ int odp_dma_capability(odp_dma_capability_t *capa) capa->queue_type_sched = 1; capa->queue_type_plain = 1; - capa->pool.max_pools = _odp_dma_glb->pool_capa.buf.max_pools; - capa->pool.max_num = _odp_dma_glb->pool_capa.buf.max_num; - capa->pool.max_uarea_size = _odp_dma_glb->pool_capa.buf.max_uarea_size; - capa->pool.min_cache_size = _odp_dma_glb->pool_capa.buf.min_cache_size; - capa->pool.max_cache_size = _odp_dma_glb->pool_capa.buf.max_cache_size; + capa->pool.max_pools = _odp_dma_glb->pool_capa.buf.max_pools; + capa->pool.max_num = _odp_dma_glb->pool_capa.buf.max_num; + capa->pool.max_uarea_size = _odp_dma_glb->pool_capa.buf.max_uarea_size; + capa->pool.uarea_persistence = _odp_dma_glb->pool_capa.buf.uarea_persistence; + capa->pool.min_cache_size = _odp_dma_glb->pool_capa.buf.min_cache_size; + capa->pool.max_cache_size = _odp_dma_glb->pool_capa.buf.max_cache_size; return 0; } @@ -321,16 +322,6 @@ odp_dma_t odp_dma_lookup(const char *name) return ODP_DMA_INVALID; } -void odp_dma_transfer_param_init(odp_dma_transfer_param_t *trs_param) -{ - memset(trs_param, 0, sizeof(odp_dma_transfer_param_t)); - - trs_param->src_format = ODP_DMA_FORMAT_ADDR; - trs_param->dst_format = ODP_DMA_FORMAT_ADDR; - trs_param->num_src = 1; - trs_param->num_dst = 1; -} - static uint32_t transfer_len(const odp_dma_transfer_param_t *trs_param) { uint32_t i; @@ -568,14 +559,6 @@ int odp_dma_transfer_multi(odp_dma_t dma, const odp_dma_transfer_param_t *trs_pa return i; } -void odp_dma_compl_param_init(odp_dma_compl_param_t *compl_param) -{ - memset(compl_param, 0, sizeof(odp_dma_compl_param_t)); - compl_param->queue = ODP_QUEUE_INVALID; - compl_param->event = ODP_EVENT_INVALID; - compl_param->transfer_id = ODP_DMA_TRANSFER_ID_INVALID; -} - odp_dma_transfer_id_t odp_dma_transfer_id_alloc(odp_dma_t dma) { int32_t num; @@ -756,83 +739,19 @@ odp_pool_t odp_dma_pool_create(const char *name, const odp_dma_pool_param_t *dma } odp_pool_param_init(&pool_param); - pool_param.type = ODP_POOL_BUFFER; - pool_param.buf.num = num; - pool_param.buf.uarea_size = uarea_size; - pool_param.buf.cache_size = cache_size; - pool_param.buf.size = sizeof(odp_dma_result_t); + pool_param.type = ODP_POOL_BUFFER; + pool_param.uarea_init.init_fn = dma_pool_param->uarea_init.init_fn; + pool_param.uarea_init.args = dma_pool_param->uarea_init.args; + pool_param.buf.num = num; + pool_param.buf.uarea_size = uarea_size; + pool_param.buf.cache_size = cache_size; + pool_param.buf.size = sizeof(odp_dma_result_t); pool = _odp_pool_create(name, &pool_param, ODP_POOL_DMA_COMPL); return pool; } -odp_dma_compl_t odp_dma_compl_alloc(odp_pool_t pool) -{ - odp_buffer_t buf; - odp_event_t ev; - odp_dma_result_t *result; - - buf = odp_buffer_alloc(pool); - - if (odp_unlikely(buf == ODP_BUFFER_INVALID)) - return ODP_DMA_COMPL_INVALID; - - result = odp_buffer_addr(buf); - memset(result, 0, sizeof(odp_dma_result_t)); - - ev = odp_buffer_to_event(buf); - _odp_event_type_set(ev, ODP_EVENT_DMA_COMPL); - - return (odp_dma_compl_t)(uintptr_t)buf; -} - -void odp_dma_compl_free(odp_dma_compl_t dma_compl) -{ - odp_event_t ev; - odp_buffer_t buf = (odp_buffer_t)(uintptr_t)dma_compl; - - if (odp_unlikely(dma_compl == ODP_DMA_COMPL_INVALID)) { - _ODP_ERR("Bad DMA compl handle\n"); - return; - } - - ev = odp_buffer_to_event(buf); - _odp_event_type_set(ev, ODP_EVENT_BUFFER); - - odp_buffer_free(buf); -} - -odp_dma_compl_t odp_dma_compl_from_event(odp_event_t ev) -{ - _ODP_ASSERT(odp_event_type(ev) == ODP_EVENT_DMA_COMPL); - - return (odp_dma_compl_t)(uintptr_t)ev; -} - -odp_event_t odp_dma_compl_to_event(odp_dma_compl_t dma_compl) -{ - return (odp_event_t)(uintptr_t)dma_compl; -} - -int odp_dma_compl_result(odp_dma_compl_t dma_compl, odp_dma_result_t *result_out) -{ - odp_dma_result_t *result; - odp_buffer_t buf = (odp_buffer_t)(uintptr_t)dma_compl; - - if (odp_unlikely(dma_compl == ODP_DMA_COMPL_INVALID)) { - _ODP_ERR("Bad DMA compl handle\n"); - return -1; - } - - result = odp_buffer_addr(buf); - - if (result_out) - *result_out = *result; - - return result->success ? 0 : -1; -} - uint64_t odp_dma_to_u64(odp_dma_t dma) { return (uint64_t)(uintptr_t)dma; @@ -843,11 +762,6 @@ uint64_t odp_dma_compl_to_u64(odp_dma_compl_t dma_compl) return (uint64_t)(uintptr_t)dma_compl; } -void *odp_dma_compl_user_area(odp_dma_compl_t dma_compl) -{ - return odp_buffer_user_area((odp_buffer_t)(uintptr_t)dma_compl); -} - void odp_dma_print(odp_dma_t dma) { dma_session_t *session = dma_session_from_handle(dma); |