diff --git a/arch/arm/cpu/mmu.c b/arch/arm/cpu/mmu.c index 8465d1a5a..bb067e36b 100644 --- a/arch/arm/cpu/mmu.c +++ b/arch/arm/cpu/mmu.c @@ -155,7 +155,7 @@ void *phys_to_virt(unsigned long phys) 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 d96c7289a..9ebc2cd4c 100644 --- a/arch/arm/include/asm/mmu.h +++ b/arch/arm/include/asm/mmu.h @@ -17,7 +17,7 @@ void setup_dma_coherent(unsigned long offset); #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 @@ unsigned long virt_to_phys(void *virt); 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 c321e8fb8..1e4d4b08f 100644 --- a/drivers/usb/gadget/fsl_udc.c +++ b/drivers/usb/gadget/fsl_udc.c @@ -560,7 +560,7 @@ static void done(struct fsl_ep *ep, struct fsl_req *req, int status) 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,