Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

USB: gadget: ci13xxx: don't assume that PAGE_SIZE is 4096

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>

authored by

Artem Leonenko and committed by
Greg Kroah-Hartman
0a313c4d 7c25a826

+6 -5
+5 -5
drivers/usb/gadget/ci13xxx_udc.c
··· 1460 1460 mReq->ptr->page[0] = mReq->req.dma; 1461 1461 for (i = 1; i < 5; i++) 1462 1462 mReq->ptr->page[i] = 1463 - (mReq->req.dma + i * PAGE_SIZE) & ~TD_RESERVED_MASK; 1463 + (mReq->req.dma + i * CI13XXX_PAGE_SIZE) & ~TD_RESERVED_MASK; 1464 1464 1465 1465 /* 1466 1466 * QH configuration ··· 2159 2159 goto done; 2160 2160 } 2161 2161 2162 - if (req->length > (4 * PAGE_SIZE)) { 2163 - req->length = (4 * PAGE_SIZE); 2162 + if (req->length > (4 * CI13XXX_PAGE_SIZE)) { 2163 + req->length = (4 * CI13XXX_PAGE_SIZE); 2164 2164 retval = -EMSGSIZE; 2165 2165 warn("request length truncated"); 2166 2166 } ··· 2410 2410 /* alloc resources */ 2411 2411 udc->qh_pool = dma_pool_create("ci13xxx_qh", &udc->gadget.dev, 2412 2412 sizeof(struct ci13xxx_qh), 2413 - 64, PAGE_SIZE); 2413 + 64, CI13XXX_PAGE_SIZE); 2414 2414 if (udc->qh_pool == NULL) 2415 2415 return -ENOMEM; 2416 2416 2417 2417 udc->td_pool = dma_pool_create("ci13xxx_td", &udc->gadget.dev, 2418 2418 sizeof(struct ci13xxx_td), 2419 - 64, PAGE_SIZE); 2419 + 64, CI13XXX_PAGE_SIZE); 2420 2420 if (udc->td_pool == NULL) { 2421 2421 dma_pool_destroy(udc->qh_pool); 2422 2422 udc->qh_pool = NULL;
+1
drivers/usb/gadget/ci13xxx_udc.h
··· 19 19 /****************************************************************************** 20 20 * DEFINE 21 21 *****************************************************************************/ 22 + #define CI13XXX_PAGE_SIZE 4096ul /* page size for TD's */ 22 23 #define ENDPT_MAX (16) 23 24 #define CTRL_PAYLOAD_MAX (64) 24 25 #define RX (0) /* similar to USB_DIR_OUT but can be used as an index */