diff options
-rw-r--r-- | hw/omap_dma.c | 3 | ||||
-rw-r--r-- | hw/soc_dma.c | 3 |
2 files changed, 5 insertions, 1 deletions
diff --git a/hw/omap_dma.c b/hw/omap_dma.c index df4fb01..ba980df 100644 --- a/hw/omap_dma.c +++ b/hw/omap_dma.c @@ -668,6 +668,9 @@ static void omap_dma_transfer_setup(struct soc_dma_ch_s *dma) /* If the channel is async, update cpc */ if (!ch->sync && frames) ch->cpc = a->dest & 0xffff; + + /* TODO: if the destination port is IMIF or EMIFF, set the dirty + * bits on it. */ } omap_dma_interrupts_update(s); diff --git a/hw/soc_dma.c b/hw/soc_dma.c index f46e260..4ff8cae 100644 --- a/hw/soc_dma.c +++ b/hw/soc_dma.c @@ -49,7 +49,7 @@ static void *fifo_buf; static int fifo_size; void transfer_fifo2fifo(struct soc_dma_ch_s *ch) { - if (ch->bytes < fifo_size) + if (ch->bytes > fifo_size) fifo_buf = realloc(fifo_buf, fifo_size = ch->bytes); /* Implement as transfer_fifo2linear + transfer_linear2fifo. */ @@ -251,6 +251,7 @@ struct soc_dma_s *soc_dma_init(int n) } soc_dma_reset(&s->soc); + fifo_size = 0; return &s->soc; } |