diff --git a/io/dma.c b/io/dma.c index cf8b42f..3b219d5 100644 --- a/io/dma.c +++ b/io/dma.c @@ -248,3 +248,14 @@ void gb_dma_update (GBDMA *dma, RIO *io, ut32 cycles, bool pre_exec) { dma->seek &= (~GB_DMA_ACTIVE); } } + +void gb_dma_close (GBDMA *dma, RIO *io) { + if (!dma || !io) { + return; + } + r_io_bank_use (io, dma->default_bank_id); + r_io_bank_del (io, dma->dma_bank_id); + r_io_fd_close (io, dma->dma_bus_fd); + r_io_fd_close (io, dma->dma_fd); + free (dma); +}