]> git.karo-electronics.de Git - mv-sheeva.git/commitdiff
USB: gadget: ci13xxx: don't assume that PAGE_SIZE is 4096
authorArtem Leonenko <tikkeri@gmail.com>
Wed, 15 Dec 2010 07:47:06 +0000 (23:47 -0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 16 Dec 2010 21:32:37 +0000 (13:32 -0800)
Page size for transaction descriptors for CI13XXX has nothing
common with page size from MM. Using platform and configuration
specific PAGE_SIZE is wrong.

Signed-off-by: Artem Leonenko <tikkeri@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/gadget/ci13xxx_udc.c
drivers/usb/gadget/ci13xxx_udc.h

index 0060eef0e923b171a231a6323e83f364bfc99087..31656a2b4ab487a1ec14500664930c1c82401b70 100644 (file)
@@ -1460,7 +1460,7 @@ static int _hardware_enqueue(struct ci13xxx_ep *mEp, struct ci13xxx_req *mReq)
        mReq->ptr->page[0]  = mReq->req.dma;
        for (i = 1; i < 5; i++)
                mReq->ptr->page[i] =
-                       (mReq->req.dma + i * PAGE_SIZE) & ~TD_RESERVED_MASK;
+                       (mReq->req.dma + i * CI13XXX_PAGE_SIZE) & ~TD_RESERVED_MASK;
 
        /*
         *  QH configuration
@@ -2159,8 +2159,8 @@ static int ep_queue(struct usb_ep *ep, struct usb_request *req,
                goto done;
        }
 
-       if (req->length > (4 * PAGE_SIZE)) {
-               req->length = (4 * PAGE_SIZE);
+       if (req->length > (4 * CI13XXX_PAGE_SIZE)) {
+               req->length = (4 * CI13XXX_PAGE_SIZE);
                retval = -EMSGSIZE;
                warn("request length truncated");
        }
@@ -2410,13 +2410,13 @@ int usb_gadget_probe_driver(struct usb_gadget_driver *driver,
        /* alloc resources */
        udc->qh_pool = dma_pool_create("ci13xxx_qh", &udc->gadget.dev,
                                       sizeof(struct ci13xxx_qh),
-                                      64, PAGE_SIZE);
+                                      64, CI13XXX_PAGE_SIZE);
        if (udc->qh_pool == NULL)
                return -ENOMEM;
 
        udc->td_pool = dma_pool_create("ci13xxx_td", &udc->gadget.dev,
                                       sizeof(struct ci13xxx_td),
-                                      64, PAGE_SIZE);
+                                      64, CI13XXX_PAGE_SIZE);
        if (udc->td_pool == NULL) {
                dma_pool_destroy(udc->qh_pool);
                udc->qh_pool = NULL;
index 4fd19313e2389e3a538bb7b5281ff6bd758c4a21..f61fed07f76bb89d535cd181faf941b4178453d2 100644 (file)
@@ -19,6 +19,7 @@
 /******************************************************************************
  * DEFINE
  *****************************************************************************/
+#define CI13XXX_PAGE_SIZE  4096ul /* page size for TD's */
 #define ENDPT_MAX          (16)
 #define CTRL_PAYLOAD_MAX   (64)
 #define RX        (0)  /* similar to USB_DIR_OUT but can be used as an index */