diff --git a/arch/arm/cpu/mmu.c b/arch/arm/cpu/mmu.c index 8465d1a..bb067e3 100644 --- a/arch/arm/cpu/mmu.c +++ b/arch/arm/cpu/mmu.c @@ -155,7 +155,7 @@ return (void *)(phys + dma_coherent_offset); } -void dma_free_coherent(void *mem) +void dma_free_coherent(void *mem, size_t size) { free(mem - dma_coherent_offset); } diff --git a/arch/arm/include/asm/mmu.h b/arch/arm/include/asm/mmu.h index d96c728..9ebc2cd 100644 --- a/arch/arm/include/asm/mmu.h +++ b/arch/arm/include/asm/mmu.h @@ -17,7 +17,7 @@ #ifdef CONFIG_MMU void *dma_alloc_coherent(size_t size); -void dma_free_coherent(void *mem); +void dma_free_coherent(void *mem, size_t size); void dma_clean_range(unsigned long, unsigned long); void dma_flush_range(unsigned long, unsigned long); @@ -26,12 +26,17 @@ void *phys_to_virt(unsigned long phys); #else +static inline int mmu_init(void) +{ + return -EINVAL; +} + static inline void *dma_alloc_coherent(size_t size) { return xmemalign(4096, size); } -static inline void dma_free_coherent(void *mem) +static inline void dma_free_coherent(void *mem, size_t size) { free(mem); } diff --git a/drivers/usb/gadget/fsl_udc.c b/drivers/usb/gadget/fsl_udc.c index c321e8f..1e4d4b0 100644 --- a/drivers/usb/gadget/fsl_udc.c +++ b/drivers/usb/gadget/fsl_udc.c @@ -560,7 +560,7 @@ if (j != req->dtd_count - 1) { next_td = curr_td->next_td_virt; } - dma_free_coherent(curr_td); + dma_free_coherent(curr_td, sizeof(struct ep_td_struct)); } dma_inv_range((unsigned long)req->req.buf,