summaryrefslogtreecommitdiff
path: root/cesar/hal/phy/src/bridgedma.c
diff options
context:
space:
mode:
Diffstat (limited to 'cesar/hal/phy/src/bridgedma.c')
-rw-r--r--cesar/hal/phy/src/bridgedma.c28
1 files changed, 13 insertions, 15 deletions
diff --git a/cesar/hal/phy/src/bridgedma.c b/cesar/hal/phy/src/bridgedma.c
index 1c95b9db06..67dcd285c7 100644
--- a/cesar/hal/phy/src/bridgedma.c
+++ b/cesar/hal/phy/src/bridgedma.c
@@ -61,13 +61,10 @@ phy_bridgedma_start_jobs_pending (phy_bridgedma_t *ctx)
(u32)ctx->jobs_pending.tail);
arch_write_buffer_flush ();
phy_bridge_dma_start__configure (ctx, ctx->jobs_pending.head);
- /* Bridge DMA head is not null, chain the list to the
- tail. */
- if (ctx->bridge.job_head)
- ctx->bridge.job_tail->next = ctx->jobs_pending.head;
- else
- ctx->bridge.job_head = ctx->jobs_pending.head;
- ctx->bridge.job_tail = ctx->jobs_pending.tail;
+ slist_push_back_range (ctx->bridge.jobs_process.,
+ ctx->jobs_pending.head,
+ ctx->jobs_pending.tail,
+ bare);
slist_init (ctx->jobs_pending., bare);
}
@@ -173,7 +170,7 @@ phy_bridgedma_init (void *user_data, phy_bridgedma_cb_t bridgedma_cb,
cyg_interrupt_acknowledge(PHY_BRIDGEDMA_END_INTERRUPT);
cyg_interrupt_unmask(PHY_BRIDGEDMA_END_INTERRUPT);
}
-
+ slist_init (phy_bridgedma_global.bridge.jobs_process., bare);
slist_init (phy_bridgedma_global.jobs_pending., bare);
return &phy_bridgedma_global;
}
@@ -226,15 +223,15 @@ phy_bridgedma_job_t *
phy_bridgedma_jobs_get_ended (phy_bridgedma_t *ctx)
{
dbg_assert (ctx);
- phy_bridgedma_job_t *job_head = ctx->bridge.job_head;
+ phy_bridgedma_job_t *job_head = ctx->bridge.jobs_process.head;
if (job_head)
{
/* Bridgedma is not running. */
if (!_phy_bridgedma_status (ctx))
{
- ctx->bridge.job_tail->next = NULL;
- ctx->bridge.job_head = ctx->bridge.job_tail = NULL;
+ ctx->bridge.jobs_process.tail->next = NULL;
+ slist_init (phy_bridgedma_global.bridge.jobs_process., bare);
}
else
{
@@ -251,15 +248,16 @@ phy_bridgedma_jobs_get_ended (phy_bridgedma_t *ctx)
{
if ((u32) job_current->next ==
PHY_BRGDMA_SPC_ADDRESS((u32)job_current))
- ctx->bridge.job_head = ctx->bridge.job_tail = NULL;
+ slist_init (
+ phy_bridgedma_global.bridge.jobs_process., bare);
else
- ctx->bridge.job_head = job_current->next;
+ ctx->bridge.jobs_process.head = job_current->next;
job_current->next = NULL;
}
else
{
- ctx->bridge.job_tail->next = NULL;
- ctx->bridge.job_head = ctx->bridge.job_tail = NULL;
+ ctx->bridge.jobs_process.tail->next = NULL;
+ slist_init (phy_bridgedma_global.bridge.jobs_process., bare);
}
}