On Thu, Oct 17, 2019 at 6:53 AM Peter Maydell <peter.mayd...@linaro.org> wrote: > > Switch the xilinx_axidma code away from bottom-half based ptimers to > the new transaction-based ptimer API. This just requires adding > begin/commit calls around the various places that modify the ptimer > state, and using the new ptimer_init() function to create the timer. > > Signed-off-by: Peter Maydell <peter.mayd...@linaro.org>
Reviewed-by: Alistair Francis <alistair.fran...@wdc.com> Alistair > --- > hw/dma/xilinx_axidma.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/hw/dma/xilinx_axidma.c b/hw/dma/xilinx_axidma.c > index e035d1f7504..fb3a978e282 100644 > --- a/hw/dma/xilinx_axidma.c > +++ b/hw/dma/xilinx_axidma.c > @@ -31,7 +31,6 @@ > #include "hw/ptimer.h" > #include "hw/qdev-properties.h" > #include "qemu/log.h" > -#include "qemu/main-loop.h" > #include "qemu/module.h" > > #include "hw/stream.h" > @@ -104,7 +103,6 @@ enum { > }; > > struct Stream { > - QEMUBH *bh; > ptimer_state *ptimer; > qemu_irq irq; > > @@ -242,6 +240,7 @@ static void stream_complete(struct Stream *s) > unsigned int comp_delay; > > /* Start the delayed timer. */ > + ptimer_transaction_begin(s->ptimer); > comp_delay = s->regs[R_DMACR] >> 24; > if (comp_delay) { > ptimer_stop(s->ptimer); > @@ -255,6 +254,7 @@ static void stream_complete(struct Stream *s) > s->regs[R_DMASR] |= DMASR_IOC_IRQ; > stream_reload_complete_cnt(s); > } > + ptimer_transaction_commit(s->ptimer); > } > > static void stream_process_mem2s(struct Stream *s, StreamSlave *tx_data_dev, > @@ -551,9 +551,10 @@ static void xilinx_axidma_realize(DeviceState *dev, > Error **errp) > struct Stream *st = &s->streams[i]; > > st->nr = i; > - st->bh = qemu_bh_new(timer_hit, st); > - st->ptimer = ptimer_init_with_bh(st->bh, PTIMER_POLICY_DEFAULT); > + st->ptimer = ptimer_init(timer_hit, st, PTIMER_POLICY_DEFAULT); > + ptimer_transaction_begin(st->ptimer); > ptimer_set_freq(st->ptimer, s->freqhz); > + ptimer_transaction_commit(st->ptimer); > } > return; > > -- > 2.20.1 > >