All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alan Stern <stern@rowland.harvard.edu>
To: Felipe Balbi <balbi@ti.com>
Cc: Linux USB Mailing List <linux-usb@vger.kernel.org>,
	Greg Kroah-Hartman <gregkh@suse.de>,
	Thomas Dahlmann <dahlmann.thomas@arcor.de>,
	Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>,
	"open list:DESIGNWARE USB3 D..." <linux-omap@vger.kernel.org>,
	open list <linux-kernel@vger.kernel.org>,
	"open list:AMD GEODE CS5536..." <linux-geode@lists.infradead.org>
Subject: Re: [PATCH 1/9] usb: gadget: add generic map/unmap request utilities
Date: Mon, 19 Dec 2011 10:19:46 -0500 (EST)	[thread overview]
Message-ID: <Pine.LNX.4.44L0.1112191018320.1746-100000@iolanthe.rowland.org> (raw)
In-Reply-To: <1324290632-23758-2-git-send-email-balbi@ti.com>

On Mon, 19 Dec 2011, Felipe Balbi wrote:

> such utilities are currently duplicated on all UDC
> drivers basically with the same structure. Let's group
> all implementations into one generic implementation
> and get rid of that duplication.
> 
> Signed-off-by: Felipe Balbi <balbi@ti.com>
> ---
>  drivers/usb/gadget/udc-core.c |   53 +++++++++++++++++++++++++++++++++++++++++
>  include/linux/usb/gadget.h    |   10 +++++++
>  2 files changed, 63 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/usb/gadget/udc-core.c b/drivers/usb/gadget/udc-core.c
> index 0b0d12c..2031c11 100644
> --- a/drivers/usb/gadget/udc-core.c
> +++ b/drivers/usb/gadget/udc-core.c
> @@ -22,6 +22,7 @@
>  #include <linux/device.h>
>  #include <linux/list.h>
>  #include <linux/err.h>
> +#include <linux/dma-mapping.h>
>  
>  #include <linux/usb/ch9.h>
>  #include <linux/usb/gadget.h>
> @@ -49,6 +50,58 @@ static DEFINE_MUTEX(udc_lock);
>  
>  /* ------------------------------------------------------------------------- */
>  
> +int usb_gadget_map_request(struct usb_gadget *gadget,
> +		struct usb_request *req, int direction)
> +{
> +	if (req->length == 0)
> +		return 0;
> +
> +	if (req->num_sgs) {
> +		int     mapped;
> +
> +		mapped = dma_map_sg(&gadget->dev, req->sg, req->num_sgs,
> +				direction ? DMA_TO_DEVICE
> +				: DMA_FROM_DEVICE);
> +		if (mapped == 0) {
> +			dev_err(&gadget->dev, "failed to map SGs\n");
> +			return -EFAULT;
> +		}
> +
> +		req->num_mapped_sgs = mapped;
> +	} else {
> +		req->dma = dma_map_single(&gadget->dev, req->buf, req->length,
> +				direction ? DMA_TO_DEVICE : DMA_FROM_DEVICE);
> +
> +		if (dma_mapping_error(&gadget->dev, req->dma)) {
> +			dev_err(&gadget->dev, "failed to map buffer\n");
> +			return -EFAULT;
> +		}
> +	}
> +
> +	return 0;

You forgot to set req->mapped.

> +}
> +EXPORT_SYMBOL_GPL(usb_gadget_map_request);
> +
> +void usb_gadget_unmap_request(struct usb_gadget *gadget,
> +		struct usb_request *req, int direction)
> +{
> +	if (req->length == 0)
> +		return;
> +
> +	if (req->num_mapped_sgs) {
> +		dma_unmap_sg(&gadget->dev, req->sg, req->num_sgs,
> +				direction ? DMA_TO_DEVICE : DMA_FROM_DEVICE);
> +
> +		req->num_mapped_sgs = 0;
> +	} else {
> +		dma_unmap_single(&gadget->dev, req->dma, req->length,
> +				direction ? DMA_TO_DEVICE : DMA_FROM_DEVICE);
> +	}

You forgot to clear req->mapped.

Alan Stern


  reply	other threads:[~2011-12-19 15:19 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-12-19 10:30 [PATCH 0/9] Add a generic request map/unmap routine Felipe Balbi
2011-12-19 10:30 ` Felipe Balbi
2011-12-19 10:30 ` [PATCH 1/9] usb: gadget: add generic map/unmap request utilities Felipe Balbi
2011-12-19 10:30   ` Felipe Balbi
2011-12-19 15:19   ` Alan Stern [this message]
2011-12-19 15:49     ` Felipe Balbi
2011-12-19 15:49       ` Felipe Balbi
2011-12-19 16:27       ` Alan Stern
2011-12-19 10:30 ` [PATCH 2/9] usb: dwc3: gadget: use generic map/unmap routines Felipe Balbi
2011-12-19 10:30   ` Felipe Balbi
2011-12-19 10:30 ` [PATCH 3/9] usb: gadget: langwell: use generic map/unmap functions Felipe Balbi
2011-12-19 10:30   ` Felipe Balbi
2011-12-19 10:30 ` [PATCH 4/9] usb: renesas: gadget: use generic map/unmap routines Felipe Balbi
2011-12-19 10:30   ` Felipe Balbi
2011-12-20  1:46   ` Kuninori Morimoto
2011-12-20  1:46     ` Kuninori Morimoto
2011-12-20 10:51     ` Felipe Balbi
2011-12-20  2:29   ` Kuninori Morimoto
2011-12-20  2:29     ` Kuninori Morimoto
2011-12-19 10:30 ` [PATCH 5/9] usb: gadget: amd5536: " Felipe Balbi
2011-12-19 10:30   ` Felipe Balbi
2011-12-19 10:30 ` [PATCH 6/9] usb: gadget: r8a66597: " Felipe Balbi
2011-12-19 10:30   ` Felipe Balbi
2011-12-19 10:30 ` [PATCH 7/9] usb: gadget: net2272: use generic map/umap routines Felipe Balbi
2011-12-19 10:30   ` Felipe Balbi
2011-12-19 10:30 ` [PATCH 8/9] usb: gadget: net2280: use generic map/unmap routines Felipe Balbi
2011-12-19 10:30   ` Felipe Balbi
2011-12-19 15:21   ` Alan Stern
2011-12-19 15:49     ` Felipe Balbi
2011-12-19 10:30 ` [PATCH 9/9] usb: gadget: goku: " Felipe Balbi
2011-12-19 10:30   ` Felipe Balbi
2011-12-19 13:02   ` Sergei Shtylyov
2011-12-19 13:02     ` Sergei Shtylyov
2011-12-19 13:05     ` Sergei Shtylyov
2011-12-19 13:05       ` Sergei Shtylyov
2011-12-19 13:09     ` Felipe Balbi
2011-12-19 13:09       ` Felipe Balbi
2011-12-19 13:10       ` Sergei Shtylyov
2011-12-19 13:10         ` Sergei Shtylyov
2012-01-24 11:45 [PATCH 0/9] usb: gadget: " Felipe Balbi
2012-01-24 11:45 ` [PATCH 1/9] usb: gadget: add generic map/unmap request utilities Felipe Balbi
2012-01-24 11:45   ` Felipe Balbi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Pine.LNX.4.44L0.1112191018320.1746-100000@iolanthe.rowland.org \
    --to=stern@rowland.harvard.edu \
    --cc=balbi@ti.com \
    --cc=dahlmann.thomas@arcor.de \
    --cc=gregkh@suse.de \
    --cc=kuninori.morimoto.gx@renesas.com \
    --cc=linux-geode@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.