Hi, On Mon, Mar 18, 2013 at 01:50:55PM +0530, kishon wrote: > >>>@@ -141,7 +141,7 @@ static inline void map_dma_buffer(struct musb_request *request, > >>> static inline void unmap_dma_buffer(struct musb_request *request, > >>> struct musb *musb) > >>> { > >>>- if (!is_buffer_mapped(request)) > >>>+ if (!is_buffer_mapped(request) || !musb_ep->dma) > >>> return; > >>> > >>> if (request->request.dma == DMA_ADDR_INVALID) { > >>>@@ -195,7 +195,10 @@ __acquires(ep->musb->lock) > >>> > >>> ep->busy = 1; > >>> spin_unlock(&musb->lock); > >>>- unmap_dma_buffer(req, musb); > >>>+ > >>>+ if (!dma_mapping_error(request->dma)) > >> > >>this should have been *dma_mapping_error(&musb->g.dev, request->dma)* > > > >indeed :-) > > > >>;-) But this doesn't work quite right. The dma_mapping_error > >>considers only *DMA_ERROR_CODE* as error. Maybe we should have > >>something like this > >> > >>*if (!dma_mapping_error(&musb->g.dev, request->dma) && request->dma)* > > > >won't 'is_buffer_mapped()' take care of the second check ? > > No, it doesn't. Btw you've removed is_buffer_mapped() macro in *usb: > musb: gadget: switch over to usb_gadget_map/unmap_request()* patch.. I dropped that patch since MUSB needs a bit more care when switching to generic map/unmap routines. We can do that for v3.11 instead. -- balbi
Attachment:
signature.asc
Description: Digital signature