lkml.org 
[lkml]   [2011]   [Dec]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4/9] usb: renesas: gadget: use generic map/unmap routines
    Date
    those routines have everything we need to map/unmap
    USB requests and it's better to use them.

    Signed-off-by: Felipe Balbi <balbi@ti.com>
    ---
    drivers/usb/renesas_usbhs/mod_gadget.c | 60 ++++----------------------------
    1 files changed, 7 insertions(+), 53 deletions(-)

    diff --git a/drivers/usb/renesas_usbhs/mod_gadget.c b/drivers/usb/renesas_usbhs/mod_gadget.c
    index 528691d5f..cb92a1d 100644
    --- a/drivers/usb/renesas_usbhs/mod_gadget.c
    +++ b/drivers/usb/renesas_usbhs/mod_gadget.c
    @@ -165,69 +165,23 @@ static void usbhsg_queue_push(struct usbhsg_uep *uep,
    /*
    * dma map/unmap
    */
    -static int usbhsg_dma_map(struct device *dev,
    - struct usbhs_pkt *pkt,
    - enum dma_data_direction dir)
    -{
    - struct usbhsg_request *ureq = usbhsg_pkt_to_ureq(pkt);
    - struct usb_request *req = &ureq->req;
    -
    - if (pkt->dma != DMA_ADDR_INVALID) {
    - dev_err(dev, "dma is already mapped\n");
    - return -EIO;
    - }
    -
    - if (req->dma == DMA_ADDR_INVALID) {
    - pkt->dma = dma_map_single(dev, pkt->buf, pkt->length, dir);
    - } else {
    - dma_sync_single_for_device(dev, req->dma, req->length, dir);
    - pkt->dma = req->dma;
    - }
    -
    - if (dma_mapping_error(dev, pkt->dma)) {
    - dev_err(dev, "dma mapping error %llx\n", (u64)pkt->dma);
    - return -EIO;
    - }
    -
    - return 0;
    -}
    -
    -static int usbhsg_dma_unmap(struct device *dev,
    - struct usbhs_pkt *pkt,
    - enum dma_data_direction dir)
    +static int usbhsg_dma_map_ctrl(struct usbhs_pkt *pkt, int map)
    {
    struct usbhsg_request *ureq = usbhsg_pkt_to_ureq(pkt);
    struct usb_request *req = &ureq->req;
    -
    - if (pkt->dma == DMA_ADDR_INVALID) {
    - dev_err(dev, "dma is not mapped\n");
    - return -EIO;
    - }
    -
    - if (req->dma == DMA_ADDR_INVALID)
    - dma_unmap_single(dev, pkt->dma, pkt->length, dir);
    - else
    - dma_sync_single_for_cpu(dev, req->dma, req->length, dir);
    -
    - pkt->dma = DMA_ADDR_INVALID;
    -
    - return 0;
    -}
    -
    -static int usbhsg_dma_map_ctrl(struct usbhs_pkt *pkt, int map)
    -{
    struct usbhs_pipe *pipe = pkt->pipe;
    struct usbhsg_uep *uep = usbhsg_pipe_to_uep(pipe);
    struct usbhsg_gpriv *gpriv = usbhsg_uep_to_gpriv(uep);
    - struct device *dev = usbhsg_gpriv_to_dev(gpriv);
    enum dma_data_direction dir;

    dir = usbhs_pipe_is_dir_in(pipe) ? DMA_FROM_DEVICE : DMA_TO_DEVICE;

    - if (map)
    - return usbhsg_dma_map(dev, pkt, dir);
    - else
    - return usbhsg_dma_unmap(dev, pkt, dir);
    + if (map) {
    + return usb_gadget_map_request(&gpriv->gadget, req, dir);
    + } else {
    + usb_gadget_unmap_request(&gpriv->gadget, req, dir);
    + return 0;
    + }
    }

    /*
    --
    1.7.8.rc3


    \
     
     \ /
      Last update: 2011-12-19 11:35    [W:0.031 / U:125.432 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site