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

usb: gadget: add "maxpacket_limit" field to struct usb_ep

This patch adds "maxpacket_limit" to struct usb_ep. This field contains
maximum value of maxpacket supported by driver, and is set in driver probe.
This value should be used by autoconfig() function, because value of field
"maxpacket" is set to value from endpoint descriptor when endpoint becomes
enabled. So when autoconfig() function will be called again for this endpoint,
"maxpacket" value will contain wMaxPacketSize from descriptior instead of
maximum packet size for this endpoint.

For this reason this patch adds new field "maxpacket_limit" which contains
value of maximum packet size (which defines maximum endpoint capabilities).
This value is used in ep_matches() function used by autoconfig().

Value of "maxpacket_limit" should be set in UDC driver probe function, using
usb_ep_set_maxpacket_limit() function, defined in gadget.h. This function
set choosen value to both "maxpacket_limit" and "maxpacket" fields.

This patch modifies UDC drivers by adding support for maxpacket_limit.

Signed-off-by: Robert Baldyga <r.baldyga@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>

authored by

Robert Baldyga and committed by
Felipe Balbi
e117e742 f8800d47

+92 -61
+2 -2
drivers/usb/chipidea/udc.c
··· 1566 1566 * eps, maxP is set by epautoconfig() called 1567 1567 * by gadget layer 1568 1568 */ 1569 - hwep->ep.maxpacket = (unsigned short)~0; 1569 + usb_ep_set_maxpacket_limit(&hwep->ep, (unsigned short)~0); 1570 1570 1571 1571 INIT_LIST_HEAD(&hwep->qh.queue); 1572 1572 hwep->qh.ptr = dma_pool_alloc(ci->qh_pool, GFP_KERNEL, ··· 1586 1586 else 1587 1587 ci->ep0in = hwep; 1588 1588 1589 - hwep->ep.maxpacket = CTRL_PAYLOAD_MAX; 1589 + usb_ep_set_maxpacket_limit(&hwep->ep, CTRL_PAYLOAD_MAX); 1590 1590 continue; 1591 1591 } 1592 1592
+2 -2
drivers/usb/dwc3/gadget.c
··· 1653 1653 dev_vdbg(dwc->dev, "initializing %s\n", dep->name); 1654 1654 1655 1655 if (epnum == 0 || epnum == 1) { 1656 - dep->endpoint.maxpacket = 512; 1656 + usb_ep_set_maxpacket_limit(&dep->endpoint, 512); 1657 1657 dep->endpoint.maxburst = 1; 1658 1658 dep->endpoint.ops = &dwc3_gadget_ep0_ops; 1659 1659 if (!epnum) ··· 1661 1661 } else { 1662 1662 int ret; 1663 1663 1664 - dep->endpoint.maxpacket = 1024; 1664 + usb_ep_set_maxpacket_limit(&dep->endpoint, 1024); 1665 1665 dep->endpoint.max_streams = 15; 1666 1666 dep->endpoint.ops = &dwc3_gadget_ep_ops; 1667 1667 list_add_tail(&dep->endpoint.ep_list,
+9 -6
drivers/usb/gadget/amd5536udc.c
··· 446 446 ep->ep.ops = &udc_ep_ops; 447 447 INIT_LIST_HEAD(&ep->queue); 448 448 449 - ep->ep.maxpacket = (u16) ~0; 449 + usb_ep_set_maxpacket_limit(&ep->ep,(u16) ~0); 450 450 /* set NAK */ 451 451 tmp = readl(&ep->regs->ctl); 452 452 tmp |= AMD_BIT(UDC_EPCTL_SNAK); ··· 1564 1564 } 1565 1565 /* EP0 max packet */ 1566 1566 if (dev->gadget.speed == USB_SPEED_FULL) { 1567 - dev->ep[UDC_EP0IN_IX].ep.maxpacket = UDC_FS_EP0IN_MAX_PKT_SIZE; 1568 - dev->ep[UDC_EP0OUT_IX].ep.maxpacket = 1569 - UDC_FS_EP0OUT_MAX_PKT_SIZE; 1567 + usb_ep_set_maxpacket_limit(&dev->ep[UDC_EP0IN_IX].ep, 1568 + UDC_FS_EP0IN_MAX_PKT_SIZE); 1569 + usb_ep_set_maxpacket_limit(&dev->ep[UDC_EP0OUT_IX].ep, 1570 + UDC_FS_EP0OUT_MAX_PKT_SIZE); 1570 1571 } else if (dev->gadget.speed == USB_SPEED_HIGH) { 1571 - dev->ep[UDC_EP0IN_IX].ep.maxpacket = UDC_EP0IN_MAX_PKT_SIZE; 1572 - dev->ep[UDC_EP0OUT_IX].ep.maxpacket = UDC_EP0OUT_MAX_PKT_SIZE; 1572 + usb_ep_set_maxpacket_limit(&dev->ep[UDC_EP0IN_IX].ep, 1573 + UDC_EP0IN_MAX_PKT_SIZE); 1574 + usb_ep_set_maxpacket_limit(&dev->ep[UDC_EP0OUT_IX].ep, 1575 + UDC_EP0OUT_MAX_PKT_SIZE); 1573 1576 } 1574 1577 1575 1578 /*
+8 -8
drivers/usb/gadget/at91_udc.c
··· 834 834 ep->ep.desc = NULL; 835 835 ep->stopped = 0; 836 836 ep->fifo_bank = 0; 837 - ep->ep.maxpacket = ep->maxpacket; 837 + usb_ep_set_maxpacket_limit(&ep->ep, ep->maxpacket); 838 838 ep->creg = (void __iomem *) udc->udp_baseaddr + AT91_UDP_CSR(i); 839 839 /* initialize one queue per endpoint */ 840 840 INIT_LIST_HEAD(&ep->queue); ··· 1759 1759 1760 1760 /* newer chips have more FIFO memory than rm9200 */ 1761 1761 if (cpu_is_at91sam9260() || cpu_is_at91sam9g20()) { 1762 - udc->ep[0].maxpacket = 64; 1763 - udc->ep[3].maxpacket = 64; 1764 - udc->ep[4].maxpacket = 512; 1765 - udc->ep[5].maxpacket = 512; 1762 + usb_ep_set_maxpacket_limit(&udc->ep[0], 64); 1763 + usb_ep_set_maxpacket_limit(&udc->ep[3], 64); 1764 + usb_ep_set_maxpacket_limit(&udc->ep[4], 512); 1765 + usb_ep_set_maxpacket_limit(&udc->ep[5], 512); 1766 1766 } else if (cpu_is_at91sam9261() || cpu_is_at91sam9g10()) { 1767 - udc->ep[3].maxpacket = 64; 1767 + usb_ep_set_maxpacket_limit(&udc->ep[3], 64); 1768 1768 } else if (cpu_is_at91sam9263()) { 1769 - udc->ep[0].maxpacket = 64; 1770 - udc->ep[3].maxpacket = 64; 1769 + usb_ep_set_maxpacket_limit(&udc->ep[0], 64); 1770 + usb_ep_set_maxpacket_limit(&udc->ep[3], 64); 1771 1771 } 1772 1772 1773 1773 udc->udp_baseaddr = ioremap(res->start, resource_size(res));
+3 -2
drivers/usb/gadget/atmel_usba_udc.c
··· 1904 1904 ep->dma_regs = udc->regs + USBA_DMA_BASE(i); 1905 1905 ep->fifo = udc->fifo + USBA_FIFO_BASE(i); 1906 1906 ep->ep.ops = &usba_ep_ops; 1907 - ep->ep.maxpacket = ep->fifo_size; 1907 + usb_ep_set_maxpacket_limit(&ep->ep, ep->fifo_size); 1908 1908 ep->udc = udc; 1909 1909 INIT_LIST_HEAD(&ep->queue); 1910 1910 ··· 1957 1957 ep->fifo = udc->fifo + USBA_FIFO_BASE(i); 1958 1958 ep->ep.ops = &usba_ep_ops; 1959 1959 ep->ep.name = pdata->ep[i].name; 1960 - ep->fifo_size = ep->ep.maxpacket = pdata->ep[i].fifo_size; 1960 + ep->fifo_size = pdata->ep[i].fifo_size; 1961 + usb_ep_set_maxpacket_limit(&ep->ep, ep->fifo_size); 1961 1962 ep->udc = udc; 1962 1963 INIT_LIST_HEAD(&ep->queue); 1963 1964 ep->nr_banks = pdata->ep[i].nr_banks;
+2 -2
drivers/usb/gadget/bcm63xx_udc.c
··· 549 549 550 550 if (idx < 0) 551 551 continue; 552 - udc->bep[idx].ep.maxpacket = max_pkt; 552 + usb_ep_set_maxpacket_limit(&udc->bep[idx].ep, max_pkt); 553 553 554 554 val = (idx << USBD_CSR_EP_LOG_SHIFT) | 555 555 (cfg->dir << USBD_CSR_EP_DIR_SHIFT) | ··· 943 943 bep->ep.ops = &bcm63xx_udc_ep_ops; 944 944 list_add_tail(&bep->ep.ep_list, &udc->gadget.ep_list); 945 945 bep->halted = 0; 946 - bep->ep.maxpacket = BCM63XX_MAX_CTRL_PKT; 946 + usb_ep_set_maxpacket_limit(&bep->ep, BCM63XX_MAX_CTRL_PKT); 947 947 bep->udc = udc; 948 948 bep->ep.desc = NULL; 949 949 INIT_LIST_HEAD(&bep->queue);
+1 -1
drivers/usb/gadget/dummy_hcd.c
··· 951 951 list_add_tail(&ep->ep.ep_list, &dum->gadget.ep_list); 952 952 ep->halted = ep->wedged = ep->already_seen = 953 953 ep->setup_stage = 0; 954 - ep->ep.maxpacket = ~0; 954 + usb_ep_set_maxpacket_limit(&ep->ep, ~0); 955 955 ep->ep.max_streams = 16; 956 956 ep->last_io = jiffies; 957 957 ep->gadget = &dum->gadget;
+3 -3
drivers/usb/gadget/epautoconf.c
··· 129 129 * and wants to know the maximum possible, provide the info. 130 130 */ 131 131 if (desc->wMaxPacketSize == 0) 132 - desc->wMaxPacketSize = cpu_to_le16(ep->maxpacket); 132 + desc->wMaxPacketSize = cpu_to_le16(ep->maxpacket_limit); 133 133 134 134 /* endpoint maxpacket size is an input parameter, except for bulk 135 135 * where it's an output parameter representing the full speed limit. ··· 145 145 146 146 case USB_ENDPOINT_XFER_ISOC: 147 147 /* ISO: limit 1023 bytes full speed, 1024 high/super speed */ 148 - if (ep->maxpacket < max) 148 + if (ep->maxpacket_limit < max) 149 149 return 0; 150 150 if (!gadget_is_dualspeed(gadget) && max > 1023) 151 151 return 0; ··· 178 178 179 179 /* report (variable) full speed bulk maxpacket */ 180 180 if ((USB_ENDPOINT_XFER_BULK == type) && !ep_comp) { 181 - int size = ep->maxpacket; 181 + int size = ep->maxpacket_limit; 182 182 183 183 /* min() doesn't work on bitfields with gcc-3.5 */ 184 184 if (size > 64)
+2 -1
drivers/usb/gadget/fotg210-udc.c
··· 1157 1157 INIT_LIST_HEAD(&ep->queue); 1158 1158 ep->ep.name = fotg210_ep_name[i]; 1159 1159 ep->ep.ops = &fotg210_ep_ops; 1160 + usb_ep_set_maxpacket_limit(&ep->ep, (unsigned short) ~0); 1160 1161 } 1161 - fotg210->ep[0]->ep.maxpacket = 0x40; 1162 + usb_ep_set_maxpacket_limit(&fotg210->ep[0]->ep, 0x40); 1162 1163 fotg210->gadget.ep0 = &fotg210->ep[0]->ep; 1163 1164 INIT_LIST_HEAD(&fotg210->gadget.ep0->ep_list); 1164 1165
+1 -1
drivers/usb/gadget/fsl_qe_udc.c
··· 2429 2429 2430 2430 ep->ep.ops = &qe_ep_ops; 2431 2431 ep->stopped = 1; 2432 - ep->ep.maxpacket = (unsigned short) ~0; 2432 + usb_ep_set_maxpacket_limit(&ep->ep, (unsigned short) ~0); 2433 2433 ep->ep.desc = NULL; 2434 2434 ep->dir = 0xff; 2435 2435 ep->epnum = (u8)pipe_num;
+3 -2
drivers/usb/gadget/fsl_udc_core.c
··· 2311 2311 /* for ep0: maxP defined in desc 2312 2312 * for other eps, maxP is set by epautoconfig() called by gadget layer 2313 2313 */ 2314 - ep->ep.maxpacket = (unsigned short) ~0; 2314 + usb_ep_set_maxpacket_limit(&ep->ep, (unsigned short) ~0); 2315 2315 2316 2316 /* the queue lists any req for this ep */ 2317 2317 INIT_LIST_HEAD(&ep->queue); ··· 2469 2469 * for other eps, gadget layer called ep_enable with defined desc 2470 2470 */ 2471 2471 udc_controller->eps[0].ep.desc = &fsl_ep0_desc; 2472 - udc_controller->eps[0].ep.maxpacket = USB_MAX_CTRL_PAYLOAD; 2472 + usb_ep_set_maxpacket_limit(&udc_controller->eps[0].ep, 2473 + USB_MAX_CTRL_PAYLOAD); 2473 2474 2474 2475 /* setup the udc->eps[] for non-control endpoints and link 2475 2476 * to gadget.ep_list */
+2 -2
drivers/usb/gadget/fusb300_udc.c
··· 1452 1452 INIT_LIST_HEAD(&ep->queue); 1453 1453 ep->ep.name = fusb300_ep_name[i]; 1454 1454 ep->ep.ops = &fusb300_ep_ops; 1455 - ep->ep.maxpacket = HS_BULK_MAX_PACKET_SIZE; 1455 + usb_ep_set_maxpacket_limit(&ep->ep, HS_BULK_MAX_PACKET_SIZE); 1456 1456 } 1457 - fusb300->ep[0]->ep.maxpacket = HS_CTL_MAX_PACKET_SIZE; 1457 + usb_ep_set_maxpacket_limit(&fusb300->ep[0]->ep, HS_CTL_MAX_PACKET_SIZE); 1458 1458 fusb300->ep[0]->epnum = 0; 1459 1459 fusb300->gadget.ep0 = &fusb300->ep[0]->ep; 1460 1460 INIT_LIST_HEAD(&fusb300->gadget.ep0->ep_list);
+2 -2
drivers/usb/gadget/goku_udc.c
··· 231 231 } 232 232 } 233 233 234 - ep->ep.maxpacket = MAX_FIFO_SIZE; 234 + usb_ep_set_maxpacket_limit(&ep->ep, MAX_FIFO_SIZE); 235 235 ep->ep.desc = NULL; 236 236 ep->stopped = 1; 237 237 ep->irqs = 0; ··· 1251 1251 } 1252 1252 1253 1253 dev->ep[0].reg_mode = NULL; 1254 - dev->ep[0].ep.maxpacket = MAX_EP0_SIZE; 1254 + usb_ep_set_maxpacket_limit(&dev->ep[0].ep, MAX_EP0_SIZE); 1255 1255 list_del_init (&dev->ep[0].ep.ep_list); 1256 1256 } 1257 1257
+1 -1
drivers/usb/gadget/lpc32xx_udc.c
··· 1449 1449 1450 1450 if (i != 0) 1451 1451 list_add_tail(&ep->ep.ep_list, &udc->gadget.ep_list); 1452 - ep->ep.maxpacket = ep->maxpacket; 1452 + usb_ep_set_maxpacket_limit(&ep->ep, ep->maxpacket); 1453 1453 INIT_LIST_HEAD(&ep->queue); 1454 1454 ep->req_pending = 0; 1455 1455 }
+2 -2
drivers/usb/gadget/m66592-udc.c
··· 1647 1647 INIT_LIST_HEAD(&ep->queue); 1648 1648 ep->ep.name = m66592_ep_name[i]; 1649 1649 ep->ep.ops = &m66592_ep_ops; 1650 - ep->ep.maxpacket = 512; 1650 + usb_ep_set_maxpacket_limit(&ep->ep, 512); 1651 1651 } 1652 - m66592->ep[0].ep.maxpacket = 64; 1652 + usb_ep_set_maxpacket_limit(&m66592->ep[0].ep, 64); 1653 1653 m66592->ep[0].pipenum = 0; 1654 1654 m66592->ep[0].fifoaddr = M66592_CFIFO; 1655 1655 m66592->ep[0].fifosel = M66592_CFIFOSEL;
+2 -2
drivers/usb/gadget/mv_u3d_core.c
··· 1336 1336 ep->ep.name = ep->name; 1337 1337 ep->ep.ops = &mv_u3d_ep_ops; 1338 1338 ep->wedge = 0; 1339 - ep->ep.maxpacket = MV_U3D_EP0_MAX_PKT_SIZE; 1339 + usb_ep_set_maxpacket_limit(&ep->ep, MV_U3D_EP0_MAX_PKT_SIZE); 1340 1340 ep->ep_num = 0; 1341 1341 ep->ep.desc = &mv_u3d_ep0_desc; 1342 1342 INIT_LIST_HEAD(&ep->queue); ··· 1361 1361 ep->ep.name = ep->name; 1362 1362 1363 1363 ep->ep.ops = &mv_u3d_ep_ops; 1364 - ep->ep.maxpacket = (unsigned short) ~0; 1364 + usb_ep_set_maxpacket_limit(&ep->ep, (unsigned short) ~0); 1365 1365 ep->ep_num = i / 2; 1366 1366 1367 1367 INIT_LIST_HEAD(&ep->queue);
+2 -2
drivers/usb/gadget/mv_udc_core.c
··· 1261 1261 ep->ep.ops = &mv_ep_ops; 1262 1262 ep->wedge = 0; 1263 1263 ep->stopped = 0; 1264 - ep->ep.maxpacket = EP0_MAX_PKT_SIZE; 1264 + usb_ep_set_maxpacket_limit(&ep->ep, EP0_MAX_PKT_SIZE); 1265 1265 ep->ep_num = 0; 1266 1266 ep->ep.desc = &mv_ep0_desc; 1267 1267 INIT_LIST_HEAD(&ep->queue); ··· 1284 1284 1285 1285 ep->ep.ops = &mv_ep_ops; 1286 1286 ep->stopped = 0; 1287 - ep->ep.maxpacket = (unsigned short) ~0; 1287 + usb_ep_set_maxpacket_limit(&ep->ep, (unsigned short) ~0); 1288 1288 ep->ep_num = i / 2; 1289 1289 1290 1290 INIT_LIST_HEAD(&ep->queue);
+2 -2
drivers/usb/gadget/net2272.c
··· 266 266 ep->desc = NULL; 267 267 INIT_LIST_HEAD(&ep->queue); 268 268 269 - ep->ep.maxpacket = ~0; 269 + usb_ep_set_maxpacket_limit(&ep->ep, ~0); 270 270 ep->ep.ops = &net2272_ep_ops; 271 271 272 272 /* disable irqs, endpoint */ ··· 1409 1409 ep->fifo_size = 64; 1410 1410 net2272_ep_reset(ep); 1411 1411 } 1412 - dev->ep[0].ep.maxpacket = 64; 1412 + usb_ep_set_maxpacket_limit(&dev->ep[0].ep, 64); 1413 1413 1414 1414 dev->gadget.ep0 = &dev->ep[0].ep; 1415 1415 dev->ep[0].stopped = 0;
+4 -4
drivers/usb/gadget/net2280.c
··· 293 293 ep->desc = NULL; 294 294 INIT_LIST_HEAD (&ep->queue); 295 295 296 - ep->ep.maxpacket = ~0; 296 + usb_ep_set_maxpacket_limit(&ep->ep, ~0); 297 297 ep->ep.ops = &net2280_ep_ops; 298 298 299 299 /* disable the dma, irqs, endpoint... */ ··· 1805 1805 ep->regs = &dev->epregs [tmp]; 1806 1806 ep_reset (dev->regs, ep); 1807 1807 } 1808 - dev->ep [0].ep.maxpacket = 64; 1809 - dev->ep [5].ep.maxpacket = 64; 1810 - dev->ep [6].ep.maxpacket = 64; 1808 + usb_ep_set_maxpacket_limit(&dev->ep [0].ep, 64); 1809 + usb_ep_set_maxpacket_limit(&dev->ep [5].ep, 64); 1810 + usb_ep_set_maxpacket_limit(&dev->ep [6].ep, 64); 1811 1811 1812 1812 dev->gadget.ep0 = &dev->ep [0].ep; 1813 1813 dev->ep [0].stopped = 0;
+2 -1
drivers/usb/gadget/omap_udc.c
··· 2586 2586 2587 2587 ep->ep.name = ep->name; 2588 2588 ep->ep.ops = &omap_ep_ops; 2589 - ep->ep.maxpacket = ep->maxpacket = maxp; 2589 + ep->maxpacket = maxp; 2590 + usb_ep_set_maxpacket_limit(&ep->ep, ep->maxpacket); 2590 2591 list_add_tail(&ep->ep.ep_list, &udc->gadget.ep_list); 2591 2592 2592 2593 return buf;
+3 -3
drivers/usb/gadget/pch_udc.c
··· 2896 2896 ep->offset_addr = (UDC_EPINT_OUT_SHIFT + ep->num) * 2897 2897 UDC_EP_REG_SHIFT; 2898 2898 /* need to set ep->ep.maxpacket and set Default Configuration?*/ 2899 - ep->ep.maxpacket = UDC_BULK_MAX_PKT_SIZE; 2899 + usb_ep_set_maxpacket_limit(&ep->ep, UDC_BULK_MAX_PKT_SIZE); 2900 2900 list_add_tail(&ep->ep.ep_list, &dev->gadget.ep_list); 2901 2901 INIT_LIST_HEAD(&ep->queue); 2902 2902 } 2903 - dev->ep[UDC_EP0IN_IDX].ep.maxpacket = UDC_EP0IN_MAX_PKT_SIZE; 2904 - dev->ep[UDC_EP0OUT_IDX].ep.maxpacket = UDC_EP0OUT_MAX_PKT_SIZE; 2903 + usb_ep_set_maxpacket_limit(&dev->ep[UDC_EP0IN_IDX].ep, UDC_EP0IN_MAX_PKT_SIZE); 2904 + usb_ep_set_maxpacket_limit(&dev->ep[UDC_EP0OUT_IDX].ep, UDC_EP0OUT_MAX_PKT_SIZE); 2905 2905 2906 2906 /* remove ep0 in and out from the list. They have own pointer */ 2907 2907 list_del_init(&dev->ep[UDC_EP0IN_IDX].ep.ep_list);
+1
drivers/usb/gadget/pxa25x_udc.c
··· 1193 1193 ep->stopped = 0; 1194 1194 INIT_LIST_HEAD (&ep->queue); 1195 1195 ep->pio_irqs = 0; 1196 + usb_ep_set_maxpacket_limit(&ep->ep, ep->ep.maxpacket); 1196 1197 } 1197 1198 1198 1199 /* the rest was statically initialized, and is read-only */
+4 -1
drivers/usb/gadget/pxa27x_udc.c
··· 1737 1737 } 1738 1738 1739 1739 /* USB endpoints init */ 1740 - for (i = 1; i < NR_USB_ENDPOINTS; i++) 1740 + for (i = 1; i < NR_USB_ENDPOINTS; i++) { 1741 1741 list_add_tail(&dev->udc_usb_ep[i].usb_ep.ep_list, 1742 1742 &dev->gadget.ep_list); 1743 + usb_ep_set_maxpacket_limit(&dev->udc_usb_ep[i].usb_ep, 1744 + dev->udc_usb_ep[i].usb_ep.maxpacket); 1745 + } 1743 1746 } 1744 1747 1745 1748 /**
+2 -2
drivers/usb/gadget/r8a66597-udc.c
··· 1964 1964 INIT_LIST_HEAD(&ep->queue); 1965 1965 ep->ep.name = r8a66597_ep_name[i]; 1966 1966 ep->ep.ops = &r8a66597_ep_ops; 1967 - ep->ep.maxpacket = 512; 1967 + usb_ep_set_maxpacket_limit(&ep->ep, 512); 1968 1968 } 1969 - r8a66597->ep[0].ep.maxpacket = 64; 1969 + usb_ep_set_maxpacket_limit(&r8a66597->ep[0].ep, 64); 1970 1970 r8a66597->ep[0].pipenum = 0; 1971 1971 r8a66597->ep[0].fifoaddr = CFIFO; 1972 1972 r8a66597->ep[0].fifosel = CFIFOSEL;
+1 -1
drivers/usb/gadget/s3c-hsotg.c
··· 3150 3150 3151 3151 hs_ep->parent = hsotg; 3152 3152 hs_ep->ep.name = hs_ep->name; 3153 - hs_ep->ep.maxpacket = epnum ? 1024 : EP0_MPS_LIMIT; 3153 + usb_ep_set_maxpacket_limit(&hs_ep->ep, epnum ? 1024 : EP0_MPS_LIMIT); 3154 3154 hs_ep->ep.ops = &s3c_hsotg_ep_ops; 3155 3155 3156 3156 /*
+1 -1
drivers/usb/gadget/s3c-hsudc.c
··· 999 999 1000 1000 hsep->dev = hsudc; 1001 1001 hsep->ep.name = hsep->name; 1002 - hsep->ep.maxpacket = epnum ? 512 : 64; 1002 + usb_ep_set_maxpacket_limit(&hsep->ep, epnum ? 512 : 64); 1003 1003 hsep->ep.ops = &s3c_hsudc_ep_ops; 1004 1004 hsep->fifo = hsudc->regs + S3C_BR(epnum); 1005 1005 hsep->ep.desc = NULL;
+1
drivers/usb/gadget/s3c2410_udc.c
··· 1629 1629 ep->ep.desc = NULL; 1630 1630 ep->halted = 0; 1631 1631 INIT_LIST_HEAD(&ep->queue); 1632 + usb_ep_set_maxpacket_limit(&ep->ep, &ep->ep.maxpacket); 1632 1633 } 1633 1634 } 1634 1635
+3 -3
drivers/usb/musb/musb_gadget.c
··· 1727 1727 ep->end_point.name = ep->name; 1728 1728 INIT_LIST_HEAD(&ep->end_point.ep_list); 1729 1729 if (!epnum) { 1730 - ep->end_point.maxpacket = 64; 1730 + usb_ep_set_maxpacket_limit(&ep->end_point, 64); 1731 1731 ep->end_point.ops = &musb_g_ep0_ops; 1732 1732 musb->g.ep0 = &ep->end_point; 1733 1733 } else { 1734 1734 if (is_in) 1735 - ep->end_point.maxpacket = hw_ep->max_packet_sz_tx; 1735 + usb_ep_set_maxpacket_limit(&ep->end_point, hw_ep->max_packet_sz_tx); 1736 1736 else 1737 - ep->end_point.maxpacket = hw_ep->max_packet_sz_rx; 1737 + usb_ep_set_maxpacket_limit(&ep->end_point, hw_ep->max_packet_sz_rx); 1738 1738 ep->end_point.ops = &musb_ep_ops; 1739 1739 list_add_tail(&ep->end_point.ep_list, &musb->g.ep_list); 1740 1740 }
+2 -2
drivers/usb/renesas_usbhs/mod_gadget.c
··· 987 987 /* init DCP */ 988 988 if (usbhsg_is_dcp(uep)) { 989 989 gpriv->gadget.ep0 = &uep->ep; 990 - uep->ep.maxpacket = 64; 990 + usb_ep_set_maxpacket_limit(&uep->ep, 64); 991 991 } 992 992 /* init normal pipe */ 993 993 else { 994 - uep->ep.maxpacket = 512; 994 + usb_ep_set_maxpacket_limit(&uep->ep, 512); 995 995 list_add_tail(&uep->ep.ep_list, &gpriv->gadget.ep_list); 996 996 } 997 997 }
+19
include/linux/usb/gadget.h
··· 148 148 * @maxpacket:The maximum packet size used on this endpoint. The initial 149 149 * value can sometimes be reduced (hardware allowing), according to 150 150 * the endpoint descriptor used to configure the endpoint. 151 + * @maxpacket_limit:The maximum packet size value which can be handled by this 152 + * endpoint. It's set once by UDC driver when endpoint is initialized, and 153 + * should not be changed. Should not be confused with maxpacket. 151 154 * @max_streams: The maximum number of streams supported 152 155 * by this EP (0 - 16, actual number is 2^n) 153 156 * @mult: multiplier, 'mult' value for SS Isoc EPs ··· 174 171 const struct usb_ep_ops *ops; 175 172 struct list_head ep_list; 176 173 unsigned maxpacket:16; 174 + unsigned maxpacket_limit:16; 177 175 unsigned max_streams:16; 178 176 unsigned mult:2; 179 177 unsigned maxburst:5; ··· 184 180 }; 185 181 186 182 /*-------------------------------------------------------------------------*/ 183 + 184 + /** 185 + * usb_ep_set_maxpacket_limit - set maximum packet size limit for endpoint 186 + * @ep:the endpoint being configured 187 + * @maxpacket_limit:value of maximum packet size limit 188 + * 189 + * This function shoud be used only in UDC drivers to initialize endpoint 190 + * (usually in probe function). 191 + */ 192 + static inline void usb_ep_set_maxpacket_limit(struct usb_ep *ep, 193 + unsigned maxpacket_limit) 194 + { 195 + ep->maxpacket_limit = maxpacket_limit; 196 + ep->maxpacket = maxpacket_limit; 197 + } 187 198 188 199 /** 189 200 * usb_ep_enable - configure endpoint, making it usable