static inline void channel_start(struct fs_dma_ctrl *ctrl, int c) { if (ctrl->channels[c].client) { ctrl->channels[c].eol = 0; ctrl->channels[c].state = RUNNING; if (!ctrl->channels[c].input) channel_out_run(ctrl, c); } else printf("WARNING: starting DMA ch %d with no client\n", c); qemu_bh_schedule_idle(ctrl->bh); }
void etraxfs_dmac_run(void *opaque) { struct fs_dma_ctrl *ctrl = opaque; int i; int p = 0; for (i = 0; i < ctrl->nr_channels; i++) { if (ctrl->channels[i].state == RUNNING) { p++; if (ctrl->channels[i].input) channel_in_run(ctrl, i); else channel_out_run(ctrl, i); } } }