drivers/usb/dwc2/platform.c
622
hsotg->gadget.udc = NULL;
drivers/usb/dwc3/dwc3-meson-g12a.c
613
priv->switch_desc.udc = dwc3_meson_g12_find_child(dev, "snps,dwc2");
drivers/usb/dwc3/dwc3-meson-g12a.c
840
put_device(priv->switch_desc.udc);
drivers/usb/gadget/udc/amd5536udc.h
517
struct udc *dev;
drivers/usb/gadget/udc/amd5536udc.h
578
#define to_amd5536_udc(g) (container_of((g), struct udc, gadget))
drivers/usb/gadget/udc/amd5536udc.h
587
int udc_enable_dev_setup_interrupts(struct udc *dev);
drivers/usb/gadget/udc/amd5536udc.h
588
int udc_mask_unused_interrupts(struct udc *dev);
drivers/usb/gadget/udc/amd5536udc.h
592
void udc_basic_init(struct udc *dev);
drivers/usb/gadget/udc/amd5536udc.h
593
void free_dma_pools(struct udc *dev);
drivers/usb/gadget/udc/amd5536udc.h
594
int init_dma_pools(struct udc *dev);
drivers/usb/gadget/udc/amd5536udc.h
595
void udc_remove(struct udc *dev);
drivers/usb/gadget/udc/amd5536udc.h
596
int udc_probe(struct udc *dev);
drivers/usb/gadget/udc/amd5536udc.h
653
#define DBG(udc , args...) dev_dbg(udc->dev, args)
drivers/usb/gadget/udc/amd5536udc.h
658
#define VDBG(udc , args...) do {} while (0)
drivers/usb/gadget/udc/amd5536udc_pci.c
174
udc = dev;
drivers/usb/gadget/udc/amd5536udc_pci.c
49
static struct udc *udc;
drivers/usb/gadget/udc/amd5536udc_pci.c
57
struct udc *dev;
drivers/usb/gadget/udc/amd5536udc_pci.c
61
usb_del_gadget_udc(&udc->gadget);
drivers/usb/gadget/udc/amd5536udc_pci.c
86
struct udc *dev;
drivers/usb/gadget/udc/amd5536udc_pci.c
92
if (udc) {
drivers/usb/gadget/udc/amd5536udc_pci.c
98
dev = kzalloc_obj(struct udc);
drivers/usb/gadget/udc/aspeed-vhub/vhub.h
533
#define ast_vhub_simple_reply(udc, ...) \
drivers/usb/gadget/udc/aspeed-vhub/vhub.h
534
__ast_vhub_simple_reply((udc), \
drivers/usb/gadget/udc/aspeed_udc.c
1001
memcpy_fromio(&crq, udc->creq, sizeof(crq));
drivers/usb/gadget/udc/aspeed_udc.c
1014
status = udc->ep[epnum].stopped;
drivers/usb/gadget/udc/aspeed_udc.c
1020
ep = &udc->ep[epnum];
drivers/usb/gadget/udc/aspeed_udc.c
1022
ast_udc_ep0_data_tx(udc, (u8 *)&status, sizeof(status));
drivers/usb/gadget/udc/aspeed_udc.c
1028
ast_udc_write(udc, ast_udc_read(udc, AST_UDC_EP0_CTRL) | EP0_STALL,
drivers/usb/gadget/udc/aspeed_udc.c
1032
static void ast_udc_ep0_handle_setup(struct ast_udc_dev *udc)
drivers/usb/gadget/udc/aspeed_udc.c
1034
struct ast_udc_ep *ep = &udc->ep[0];
drivers/usb/gadget/udc/aspeed_udc.c
1041
memcpy_fromio(&crq, udc->creq, sizeof(crq));
drivers/usb/gadget/udc/aspeed_udc.c
1043
SETUP_DBG(udc, "SETUP packet: %02x/%02x/%04x/%04x/%04x\n",
drivers/usb/gadget/udc/aspeed_udc.c
1051
list_for_each_entry(req, &udc->ep[0].queue, queue) {
drivers/usb/gadget/udc/aspeed_udc.c
1057
ast_udc_nuke(&udc->ep[0], -ETIMEDOUT);
drivers/usb/gadget/udc/aspeed_udc.c
1059
udc->ep[0].dir_in = crq.bRequestType & USB_DIR_IN;
drivers/usb/gadget/udc/aspeed_udc.c
1064
if (ast_udc_read(udc, AST_UDC_STS) & UDC_STS_HIGHSPEED)
drivers/usb/gadget/udc/aspeed_udc.c
1065
udc->gadget.speed = USB_SPEED_HIGH;
drivers/usb/gadget/udc/aspeed_udc.c
1067
udc->gadget.speed = USB_SPEED_FULL;
drivers/usb/gadget/udc/aspeed_udc.c
1069
SETUP_DBG(udc, "set addr: 0x%x\n", crq.wValue);
drivers/usb/gadget/udc/aspeed_udc.c
1070
reg = ast_udc_read(udc, AST_UDC_CONFIG);
drivers/usb/gadget/udc/aspeed_udc.c
1073
ast_udc_write(udc, reg, AST_UDC_CONFIG);
drivers/usb/gadget/udc/aspeed_udc.c
1077
SETUP_DBG(udc, "ep0: CLEAR FEATURE\n");
drivers/usb/gadget/udc/aspeed_udc.c
1081
SETUP_DBG(udc, "ep0: SET FEATURE\n");
drivers/usb/gadget/udc/aspeed_udc.c
1085
ast_udc_getstatus(udc);
drivers/usb/gadget/udc/aspeed_udc.c
1095
if (udc->driver) {
drivers/usb/gadget/udc/aspeed_udc.c
1096
SETUP_DBG(udc, "Forwarding %s to gadget...\n",
drivers/usb/gadget/udc/aspeed_udc.c
1097
udc->gadget.name);
drivers/usb/gadget/udc/aspeed_udc.c
1099
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/aspeed_udc.c
1100
rc = udc->driver->setup(&udc->gadget, &crq);
drivers/usb/gadget/udc/aspeed_udc.c
1101
spin_lock(&udc->lock);
drivers/usb/gadget/udc/aspeed_udc.c
1104
SETUP_DBG(udc, "No gadget for request !\n");
drivers/usb/gadget/udc/aspeed_udc.c
1111
SETUP_DBG(udc, "Stalling, rc:0x%x\n", rc);
drivers/usb/gadget/udc/aspeed_udc.c
1112
ast_udc_write(udc, ast_udc_read(udc, AST_UDC_EP0_CTRL) | EP0_STALL,
drivers/usb/gadget/udc/aspeed_udc.c
1117
SETUP_DBG(udc, "ep0: Sending IN status without data\n");
drivers/usb/gadget/udc/aspeed_udc.c
1118
ast_udc_write(udc, EP0_TX_BUFF_RDY, AST_UDC_EP0_CTRL);
drivers/usb/gadget/udc/aspeed_udc.c
1123
struct ast_udc_dev *udc = (struct ast_udc_dev *)data;
drivers/usb/gadget/udc/aspeed_udc.c
1128
spin_lock(&udc->lock);
drivers/usb/gadget/udc/aspeed_udc.c
1130
isr = ast_udc_read(udc, AST_UDC_ISR);
drivers/usb/gadget/udc/aspeed_udc.c
1135
ast_udc_write(udc, isr, AST_UDC_ISR);
drivers/usb/gadget/udc/aspeed_udc.c
1138
ISR_DBG(udc, "UDC_IRQ_BUS_RESET\n");
drivers/usb/gadget/udc/aspeed_udc.c
1139
udc->gadget.speed = USB_SPEED_UNKNOWN;
drivers/usb/gadget/udc/aspeed_udc.c
1141
ep = &udc->ep[1];
drivers/usb/gadget/udc/aspeed_udc.c
1145
if (udc->driver && udc->driver->reset) {
drivers/usb/gadget/udc/aspeed_udc.c
1146
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/aspeed_udc.c
1147
udc->driver->reset(&udc->gadget);
drivers/usb/gadget/udc/aspeed_udc.c
1148
spin_lock(&udc->lock);
drivers/usb/gadget/udc/aspeed_udc.c
1153
ISR_DBG(udc, "UDC_IRQ_BUS_SUSPEND\n");
drivers/usb/gadget/udc/aspeed_udc.c
1154
udc->suspended_from = udc->gadget.state;
drivers/usb/gadget/udc/aspeed_udc.c
1155
usb_gadget_set_state(&udc->gadget, USB_STATE_SUSPENDED);
drivers/usb/gadget/udc/aspeed_udc.c
1157
if (udc->driver && udc->driver->suspend) {
drivers/usb/gadget/udc/aspeed_udc.c
1158
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/aspeed_udc.c
1159
udc->driver->suspend(&udc->gadget);
drivers/usb/gadget/udc/aspeed_udc.c
1160
spin_lock(&udc->lock);
drivers/usb/gadget/udc/aspeed_udc.c
1165
ISR_DBG(udc, "UDC_IRQ_BUS_RESUME\n");
drivers/usb/gadget/udc/aspeed_udc.c
1166
usb_gadget_set_state(&udc->gadget, udc->suspended_from);
drivers/usb/gadget/udc/aspeed_udc.c
1168
if (udc->driver && udc->driver->resume) {
drivers/usb/gadget/udc/aspeed_udc.c
1169
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/aspeed_udc.c
1170
udc->driver->resume(&udc->gadget);
drivers/usb/gadget/udc/aspeed_udc.c
1171
spin_lock(&udc->lock);
drivers/usb/gadget/udc/aspeed_udc.c
1176
ISR_DBG(udc, "UDC_IRQ_EP0_IN_ACK_STALL\n");
drivers/usb/gadget/udc/aspeed_udc.c
1177
ast_udc_ep0_in(udc);
drivers/usb/gadget/udc/aspeed_udc.c
1181
ISR_DBG(udc, "UDC_IRQ_EP0_OUT_ACK_STALL\n");
drivers/usb/gadget/udc/aspeed_udc.c
1182
ast_udc_ep0_out(udc);
drivers/usb/gadget/udc/aspeed_udc.c
1186
ISR_DBG(udc, "UDC_IRQ_EP0_SETUP\n");
drivers/usb/gadget/udc/aspeed_udc.c
1187
ast_udc_ep0_handle_setup(udc);
drivers/usb/gadget/udc/aspeed_udc.c
1191
ISR_DBG(udc, "UDC_IRQ_EP_POOL_ACK_STALL\n");
drivers/usb/gadget/udc/aspeed_udc.c
1192
ep_isr = ast_udc_read(udc, AST_UDC_EP_ACK_ISR);
drivers/usb/gadget/udc/aspeed_udc.c
1195
ast_udc_write(udc, ep_isr, AST_UDC_EP_ACK_ISR);
drivers/usb/gadget/udc/aspeed_udc.c
1200
ep = &udc->ep[i + 1];
drivers/usb/gadget/udc/aspeed_udc.c
1202
ast_udc_epn_handle_desc(udc, i + 1);
drivers/usb/gadget/udc/aspeed_udc.c
1204
ast_udc_epn_handle(udc, i + 1);
drivers/usb/gadget/udc/aspeed_udc.c
1210
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/aspeed_udc.c
1216
struct ast_udc_dev *udc = to_ast_dev(gadget);
drivers/usb/gadget/udc/aspeed_udc.c
1218
return (ast_udc_read(udc, AST_UDC_STS) >> 16) & 0x7ff;
drivers/usb/gadget/udc/aspeed_udc.c
1223
struct ast_udc_dev *udc = container_of(work, struct ast_udc_dev,
drivers/usb/gadget/udc/aspeed_udc.c
1228
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/aspeed_udc.c
1230
UDC_DBG(udc, "Wakeup Host !\n");
drivers/usb/gadget/udc/aspeed_udc.c
1231
ctrl = ast_udc_read(udc, AST_UDC_FUNC_CTRL);
drivers/usb/gadget/udc/aspeed_udc.c
1232
ast_udc_write(udc, ctrl | USB_REMOTE_WAKEUP_EN, AST_UDC_FUNC_CTRL);
drivers/usb/gadget/udc/aspeed_udc.c
1234
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/aspeed_udc.c
1237
static void ast_udc_wakeup_all(struct ast_udc_dev *udc)
drivers/usb/gadget/udc/aspeed_udc.c
1244
schedule_work(&udc->wake_work);
drivers/usb/gadget/udc/aspeed_udc.c
1249
struct ast_udc_dev *udc = to_ast_dev(gadget);
drivers/usb/gadget/udc/aspeed_udc.c
1253
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/aspeed_udc.c
1255
if (!udc->wakeup_en) {
drivers/usb/gadget/udc/aspeed_udc.c
1256
UDC_DBG(udc, "Remote Wakeup is disabled\n");
drivers/usb/gadget/udc/aspeed_udc.c
1261
UDC_DBG(udc, "Device initiated wakeup\n");
drivers/usb/gadget/udc/aspeed_udc.c
1262
ast_udc_wakeup_all(udc);
drivers/usb/gadget/udc/aspeed_udc.c
1265
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/aspeed_udc.c
1274
struct ast_udc_dev *udc = to_ast_dev(gadget);
drivers/usb/gadget/udc/aspeed_udc.c
1278
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/aspeed_udc.c
1280
UDC_DBG(udc, "is_on: %d\n", is_on);
drivers/usb/gadget/udc/aspeed_udc.c
1282
ctrl = ast_udc_read(udc, AST_UDC_FUNC_CTRL) | USB_UPSTREAM_EN;
drivers/usb/gadget/udc/aspeed_udc.c
1284
ctrl = ast_udc_read(udc, AST_UDC_FUNC_CTRL) & ~USB_UPSTREAM_EN;
drivers/usb/gadget/udc/aspeed_udc.c
1286
ast_udc_write(udc, ctrl, AST_UDC_FUNC_CTRL);
drivers/usb/gadget/udc/aspeed_udc.c
1288
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/aspeed_udc.c
1296
struct ast_udc_dev *udc = to_ast_dev(gadget);
drivers/usb/gadget/udc/aspeed_udc.c
1301
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/aspeed_udc.c
1303
UDC_DBG(udc, "\n");
drivers/usb/gadget/udc/aspeed_udc.c
1304
udc->driver = driver;
drivers/usb/gadget/udc/aspeed_udc.c
1305
udc->gadget.dev.of_node = udc->pdev->dev.of_node;
drivers/usb/gadget/udc/aspeed_udc.c
1308
ep = &udc->ep[i];
drivers/usb/gadget/udc/aspeed_udc.c
1312
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/aspeed_udc.c
1319
struct ast_udc_dev *udc = to_ast_dev(gadget);
drivers/usb/gadget/udc/aspeed_udc.c
1323
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/aspeed_udc.c
1325
UDC_DBG(udc, "\n");
drivers/usb/gadget/udc/aspeed_udc.c
1326
ctrl = ast_udc_read(udc, AST_UDC_FUNC_CTRL) & ~USB_UPSTREAM_EN;
drivers/usb/gadget/udc/aspeed_udc.c
1327
ast_udc_write(udc, ctrl, AST_UDC_FUNC_CTRL);
drivers/usb/gadget/udc/aspeed_udc.c
1329
udc->gadget.speed = USB_SPEED_UNKNOWN;
drivers/usb/gadget/udc/aspeed_udc.c
1330
udc->driver = NULL;
drivers/usb/gadget/udc/aspeed_udc.c
1332
ast_udc_stop_activity(udc);
drivers/usb/gadget/udc/aspeed_udc.c
1333
usb_gadget_set_state(&udc->gadget, USB_STATE_NOTATTACHED);
drivers/usb/gadget/udc/aspeed_udc.c
1335
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/aspeed_udc.c
1353
static void ast_udc_init_ep(struct ast_udc_dev *udc)
drivers/usb/gadget/udc/aspeed_udc.c
1359
ep = &udc->ep[i];
drivers/usb/gadget/udc/aspeed_udc.c
1372
ep->udc = udc;
drivers/usb/gadget/udc/aspeed_udc.c
1382
ep->ep_reg = udc->reg + AST_UDC_EP_BASE +
drivers/usb/gadget/udc/aspeed_udc.c
1385
ep->epn_buf = udc->ep0_buf + (i * AST_UDC_EP_DMA_SIZE);
drivers/usb/gadget/udc/aspeed_udc.c
1386
ep->epn_buf_dma = udc->ep0_buf_dma + (i * AST_UDC_EP_DMA_SIZE);
drivers/usb/gadget/udc/aspeed_udc.c
1393
list_add_tail(&ep->ep.ep_list, &udc->gadget.ep_list);
drivers/usb/gadget/udc/aspeed_udc.c
1397
static void ast_udc_init_dev(struct ast_udc_dev *udc)
drivers/usb/gadget/udc/aspeed_udc.c
1399
INIT_WORK(&udc->wake_work, ast_udc_wake_work);
drivers/usb/gadget/udc/aspeed_udc.c
1402
static void ast_udc_init_hw(struct ast_udc_dev *udc)
drivers/usb/gadget/udc/aspeed_udc.c
1408
ast_udc_write(udc, ctrl, AST_UDC_FUNC_CTRL);
drivers/usb/gadget/udc/aspeed_udc.c
1411
ast_udc_write(udc, 0, AST_UDC_DEV_RESET);
drivers/usb/gadget/udc/aspeed_udc.c
1416
ast_udc_write(udc, ctrl, AST_UDC_FUNC_CTRL);
drivers/usb/gadget/udc/aspeed_udc.c
1420
ast_udc_write(udc, 0, AST_UDC_IER);
drivers/usb/gadget/udc/aspeed_udc.c
1421
ast_udc_write(udc, UDC_IRQ_ACK_ALL, AST_UDC_ISR);
drivers/usb/gadget/udc/aspeed_udc.c
1428
ast_udc_write(udc, ctrl, AST_UDC_IER);
drivers/usb/gadget/udc/aspeed_udc.c
1431
ast_udc_write(udc, UDC_IRQ_EP_ACK_ALL, AST_UDC_EP_ACK_IER);
drivers/usb/gadget/udc/aspeed_udc.c
1432
ast_udc_write(udc, UDC_IRQ_EP_ACK_ALL, AST_UDC_EP_ACK_ISR);
drivers/usb/gadget/udc/aspeed_udc.c
1434
ast_udc_write(udc, 0, AST_UDC_EP0_CTRL);
drivers/usb/gadget/udc/aspeed_udc.c
1439
struct ast_udc_dev *udc = platform_get_drvdata(pdev);
drivers/usb/gadget/udc/aspeed_udc.c
1443
usb_del_gadget_udc(&udc->gadget);
drivers/usb/gadget/udc/aspeed_udc.c
1444
if (udc->driver) {
drivers/usb/gadget/udc/aspeed_udc.c
1456
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/aspeed_udc.c
1459
ctrl = ast_udc_read(udc, AST_UDC_FUNC_CTRL) & ~USB_UPSTREAM_EN;
drivers/usb/gadget/udc/aspeed_udc.c
1460
ast_udc_write(udc, ctrl, AST_UDC_FUNC_CTRL);
drivers/usb/gadget/udc/aspeed_udc.c
1462
clk_disable_unprepare(udc->clk);
drivers/usb/gadget/udc/aspeed_udc.c
1464
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/aspeed_udc.c
1466
if (udc->ep0_buf)
drivers/usb/gadget/udc/aspeed_udc.c
1469
udc->ep0_buf,
drivers/usb/gadget/udc/aspeed_udc.c
1470
udc->ep0_buf_dma);
drivers/usb/gadget/udc/aspeed_udc.c
1472
udc->ep0_buf = NULL;
drivers/usb/gadget/udc/aspeed_udc.c
1479
struct ast_udc_dev *udc;
drivers/usb/gadget/udc/aspeed_udc.c
1482
udc = devm_kzalloc(&pdev->dev, sizeof(struct ast_udc_dev), GFP_KERNEL);
drivers/usb/gadget/udc/aspeed_udc.c
1483
if (!udc)
drivers/usb/gadget/udc/aspeed_udc.c
1486
udc->gadget.dev.parent = dev;
drivers/usb/gadget/udc/aspeed_udc.c
1487
udc->pdev = pdev;
drivers/usb/gadget/udc/aspeed_udc.c
1488
spin_lock_init(&udc->lock);
drivers/usb/gadget/udc/aspeed_udc.c
1490
udc->gadget.ops = &ast_udc_ops;
drivers/usb/gadget/udc/aspeed_udc.c
1491
udc->gadget.ep0 = &udc->ep[0].ep;
drivers/usb/gadget/udc/aspeed_udc.c
1492
udc->gadget.name = "aspeed-udc";
drivers/usb/gadget/udc/aspeed_udc.c
1493
udc->gadget.dev.init_name = "gadget";
drivers/usb/gadget/udc/aspeed_udc.c
1495
udc->reg = devm_platform_ioremap_resource(pdev, 0);
drivers/usb/gadget/udc/aspeed_udc.c
1496
if (IS_ERR(udc->reg)) {
drivers/usb/gadget/udc/aspeed_udc.c
1498
return PTR_ERR(udc->reg);
drivers/usb/gadget/udc/aspeed_udc.c
1501
platform_set_drvdata(pdev, udc);
drivers/usb/gadget/udc/aspeed_udc.c
1503
udc->clk = devm_clk_get(&pdev->dev, NULL);
drivers/usb/gadget/udc/aspeed_udc.c
1504
if (IS_ERR(udc->clk)) {
drivers/usb/gadget/udc/aspeed_udc.c
1505
rc = PTR_ERR(udc->clk);
drivers/usb/gadget/udc/aspeed_udc.c
1508
rc = clk_prepare_enable(udc->clk);
drivers/usb/gadget/udc/aspeed_udc.c
1517
udc->force_usb1 = true;
drivers/usb/gadget/udc/aspeed_udc.c
1522
udc->ep0_buf = dma_alloc_coherent(&pdev->dev,
drivers/usb/gadget/udc/aspeed_udc.c
1525
&udc->ep0_buf_dma, GFP_KERNEL);
drivers/usb/gadget/udc/aspeed_udc.c
1527
udc->gadget.speed = USB_SPEED_UNKNOWN;
drivers/usb/gadget/udc/aspeed_udc.c
1528
udc->gadget.max_speed = USB_SPEED_HIGH;
drivers/usb/gadget/udc/aspeed_udc.c
1529
udc->creq = udc->reg + AST_UDC_SETUP0;
drivers/usb/gadget/udc/aspeed_udc.c
1535
udc->desc_mode = AST_UDC_DESC_MODE;
drivers/usb/gadget/udc/aspeed_udc.c
1537
dev_info(&pdev->dev, "DMA %s\n", udc->desc_mode ?
drivers/usb/gadget/udc/aspeed_udc.c
1540
INIT_LIST_HEAD(&udc->gadget.ep_list);
drivers/usb/gadget/udc/aspeed_udc.c
1541
INIT_LIST_HEAD(&udc->gadget.ep0->ep_list);
drivers/usb/gadget/udc/aspeed_udc.c
1544
ast_udc_init_ep(udc);
drivers/usb/gadget/udc/aspeed_udc.c
1547
ast_udc_init_dev(udc);
drivers/usb/gadget/udc/aspeed_udc.c
1550
ast_udc_init_hw(udc);
drivers/usb/gadget/udc/aspeed_udc.c
1553
udc->irq = platform_get_irq(pdev, 0);
drivers/usb/gadget/udc/aspeed_udc.c
1554
if (udc->irq < 0) {
drivers/usb/gadget/udc/aspeed_udc.c
1555
rc = udc->irq;
drivers/usb/gadget/udc/aspeed_udc.c
1559
rc = devm_request_irq(&pdev->dev, udc->irq, ast_udc_isr, 0,
drivers/usb/gadget/udc/aspeed_udc.c
1560
KBUILD_MODNAME, udc);
drivers/usb/gadget/udc/aspeed_udc.c
1566
rc = usb_add_gadget_udc(&pdev->dev, &udc->gadget);
drivers/usb/gadget/udc/aspeed_udc.c
1573
udc->force_usb1 ? "1" : "2");
drivers/usb/gadget/udc/aspeed_udc.c
182
struct ast_udc_dev *udc;
drivers/usb/gadget/udc/aspeed_udc.c
248
dev_dbg(&(e)->udc->pdev->dev, "%s():%s " fmt, __func__, \
drivers/usb/gadget/udc/aspeed_udc.c
269
#define ast_udc_read(udc, offset) \
drivers/usb/gadget/udc/aspeed_udc.c
270
readl((udc)->reg + (offset))
drivers/usb/gadget/udc/aspeed_udc.c
271
#define ast_udc_write(udc, val, offset) \
drivers/usb/gadget/udc/aspeed_udc.c
272
writel((val), (udc)->reg + (offset))
drivers/usb/gadget/udc/aspeed_udc.c
284
struct ast_udc_dev *udc = ep->udc;
drivers/usb/gadget/udc/aspeed_udc.c
300
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/aspeed_udc.c
302
spin_lock(&udc->lock);
drivers/usb/gadget/udc/aspeed_udc.c
329
static void ast_udc_stop_activity(struct ast_udc_dev *udc)
drivers/usb/gadget/udc/aspeed_udc.c
335
ep = &udc->ep[i];
drivers/usb/gadget/udc/aspeed_udc.c
346
struct ast_udc_dev *udc = ep->udc;
drivers/usb/gadget/udc/aspeed_udc.c
359
if (!udc->driver) {
drivers/usb/gadget/udc/aspeed_udc.c
366
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/aspeed_udc.c
399
ep->desc_mode = udc->desc_mode && ep->descs_dma && ep->dir_in;
drivers/usb/gadget/udc/aspeed_udc.c
418
ast_udc_write(udc, EP_TOGGLE_SET_EPNUM(epnum), AST_VHUB_EP_DATA);
drivers/usb/gadget/udc/aspeed_udc.c
425
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/aspeed_udc.c
433
struct ast_udc_dev *udc = ep->udc;
drivers/usb/gadget/udc/aspeed_udc.c
436
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/aspeed_udc.c
444
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/aspeed_udc.c
477
struct ast_udc_dev *udc = ep->udc;
drivers/usb/gadget/udc/aspeed_udc.c
478
struct device *dev = &udc->pdev->dev;
drivers/usb/gadget/udc/aspeed_udc.c
585
struct ast_udc_dev *udc = ep->udc;
drivers/usb/gadget/udc/aspeed_udc.c
592
ast_udc_write(udc, req->req.dma + req->req.actual,
drivers/usb/gadget/udc/aspeed_udc.c
597
SETUP_DBG(udc, "IN: %s:0x%x, %s:0x%x, %s:%d (%d/%d), %s:%d\n",
drivers/usb/gadget/udc/aspeed_udc.c
605
ast_udc_write(udc, EP0_TX_LEN(tx_len), AST_UDC_EP0_CTRL);
drivers/usb/gadget/udc/aspeed_udc.c
606
ast_udc_write(udc, EP0_TX_LEN(tx_len) | EP0_TX_BUFF_RDY,
drivers/usb/gadget/udc/aspeed_udc.c
611
SETUP_DBG(udc, "OUT: %s:%x, %s:%x, %s:(%d/%d), %s:%d\n",
drivers/usb/gadget/udc/aspeed_udc.c
619
ast_udc_write(udc, EP0_TX_BUFF_RDY, AST_UDC_EP0_CTRL);
drivers/usb/gadget/udc/aspeed_udc.c
622
ast_udc_write(udc, EP0_RX_BUFF_RDY, AST_UDC_EP0_CTRL);
drivers/usb/gadget/udc/aspeed_udc.c
631
struct ast_udc_dev *udc = ep->udc;
drivers/usb/gadget/udc/aspeed_udc.c
632
struct device *dev = &udc->pdev->dev;
drivers/usb/gadget/udc/aspeed_udc.c
646
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/aspeed_udc.c
654
rc = usb_gadget_map_request(&udc->gadget, &req->req, ep->dir_in);
drivers/usb/gadget/udc/aspeed_udc.c
686
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/aspeed_udc.c
694
struct ast_udc_dev *udc = ep->udc;
drivers/usb/gadget/udc/aspeed_udc.c
699
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/aspeed_udc.c
715
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/aspeed_udc.c
723
struct ast_udc_dev *udc = ep->udc;
drivers/usb/gadget/udc/aspeed_udc.c
730
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/aspeed_udc.c
736
ctrl = ast_udc_read(udc, AST_UDC_EP0_CTRL);
drivers/usb/gadget/udc/aspeed_udc.c
742
ast_udc_write(udc, ctrl, AST_UDC_EP0_CTRL);
drivers/usb/gadget/udc/aspeed_udc.c
746
ctrl = ast_udc_read(udc, AST_UDC_EP_CONFIG);
drivers/usb/gadget/udc/aspeed_udc.c
758
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/aspeed_udc.c
774
static void ast_udc_ep0_rx(struct ast_udc_dev *udc)
drivers/usb/gadget/udc/aspeed_udc.c
776
ast_udc_write(udc, udc->ep0_buf_dma, AST_UDC_EP0_DATA_BUFF);
drivers/usb/gadget/udc/aspeed_udc.c
777
ast_udc_write(udc, EP0_RX_BUFF_RDY, AST_UDC_EP0_CTRL);
drivers/usb/gadget/udc/aspeed_udc.c
780
static void ast_udc_ep0_tx(struct ast_udc_dev *udc)
drivers/usb/gadget/udc/aspeed_udc.c
782
ast_udc_write(udc, udc->ep0_buf_dma, AST_UDC_EP0_DATA_BUFF);
drivers/usb/gadget/udc/aspeed_udc.c
783
ast_udc_write(udc, EP0_TX_BUFF_RDY, AST_UDC_EP0_CTRL);
drivers/usb/gadget/udc/aspeed_udc.c
786
static void ast_udc_ep0_out(struct ast_udc_dev *udc)
drivers/usb/gadget/udc/aspeed_udc.c
788
struct device *dev = &udc->pdev->dev;
drivers/usb/gadget/udc/aspeed_udc.c
789
struct ast_udc_ep *ep = &udc->ep[0];
drivers/usb/gadget/udc/aspeed_udc.c
798
rx_len = EP0_GET_RX_LEN(ast_udc_read(udc, AST_UDC_EP0_CTRL));
drivers/usb/gadget/udc/aspeed_udc.c
801
SETUP_DBG(udc, "req %p (%d/%d)\n", req,
drivers/usb/gadget/udc/aspeed_udc.c
806
ast_udc_ep0_tx(udc);
drivers/usb/gadget/udc/aspeed_udc.c
815
ast_udc_ep0_tx(udc);
drivers/usb/gadget/udc/aspeed_udc.c
827
static void ast_udc_ep0_in(struct ast_udc_dev *udc)
drivers/usb/gadget/udc/aspeed_udc.c
829
struct ast_udc_ep *ep = &udc->ep[0];
drivers/usb/gadget/udc/aspeed_udc.c
833
if (udc->is_control_tx) {
drivers/usb/gadget/udc/aspeed_udc.c
834
ast_udc_ep0_rx(udc);
drivers/usb/gadget/udc/aspeed_udc.c
835
udc->is_control_tx = 0;
drivers/usb/gadget/udc/aspeed_udc.c
843
SETUP_DBG(udc, "req %p (%d/%d)\n", req,
drivers/usb/gadget/udc/aspeed_udc.c
848
ast_udc_ep0_rx(udc);
drivers/usb/gadget/udc/aspeed_udc.c
859
static void ast_udc_epn_handle(struct ast_udc_dev *udc, u16 ep_num)
drivers/usb/gadget/udc/aspeed_udc.c
861
struct ast_udc_ep *ep = &udc->ep[ep_num];
drivers/usb/gadget/udc/aspeed_udc.c
898
static void ast_udc_epn_handle_desc(struct ast_udc_dev *udc, u16 ep_num)
drivers/usb/gadget/udc/aspeed_udc.c
900
struct ast_udc_ep *ep = &udc->ep[ep_num];
drivers/usb/gadget/udc/aspeed_udc.c
901
struct device *dev = &udc->pdev->dev;
drivers/usb/gadget/udc/aspeed_udc.c
979
static void ast_udc_ep0_data_tx(struct ast_udc_dev *udc, u8 *tx_data, u32 len)
drivers/usb/gadget/udc/aspeed_udc.c
982
memcpy(udc->ep0_buf, tx_data, len);
drivers/usb/gadget/udc/aspeed_udc.c
984
ast_udc_write(udc, udc->ep0_buf_dma, AST_UDC_EP0_DATA_BUFF);
drivers/usb/gadget/udc/aspeed_udc.c
985
ast_udc_write(udc, EP0_TX_LEN(len), AST_UDC_EP0_CTRL);
drivers/usb/gadget/udc/aspeed_udc.c
986
ast_udc_write(udc, EP0_TX_LEN(len) | EP0_TX_BUFF_RDY,
drivers/usb/gadget/udc/aspeed_udc.c
988
udc->is_control_tx = 1;
drivers/usb/gadget/udc/aspeed_udc.c
991
ast_udc_write(udc, EP0_TX_BUFF_RDY, AST_UDC_EP0_CTRL);
drivers/usb/gadget/udc/aspeed_udc.c
994
static void ast_udc_getstatus(struct ast_udc_dev *udc)
drivers/usb/gadget/udc/at91_udc.c
1048
static void handle_setup(struct at91_udc *udc, struct at91_ep *ep, u32 csr)
drivers/usb/gadget/udc/at91_udc.c
1077
udc->wait_for_addr_ack = 0;
drivers/usb/gadget/udc/at91_udc.c
1078
udc->wait_for_config_ack = 0;
drivers/usb/gadget/udc/at91_udc.c
1095
udc->req_pending = 1;
drivers/usb/gadget/udc/at91_udc.c
1104
udc->addr = w_value;
drivers/usb/gadget/udc/at91_udc.c
1105
udc->wait_for_addr_ack = 1;
drivers/usb/gadget/udc/at91_udc.c
1106
udc->req_pending = 0;
drivers/usb/gadget/udc/at91_udc.c
1112
tmp = at91_udp_read(udc, AT91_UDP_GLB_STAT) & AT91_UDP_CONFG;
drivers/usb/gadget/udc/at91_udc.c
1114
udc->wait_for_config_ack = (tmp == 0);
drivers/usb/gadget/udc/at91_udc.c
1116
udc->wait_for_config_ack = (tmp != 0);
drivers/usb/gadget/udc/at91_udc.c
1117
if (udc->wait_for_config_ack)
drivers/usb/gadget/udc/at91_udc.c
1128
tmp = (udc->gadget.is_selfpowered << USB_DEVICE_SELF_POWERED);
drivers/usb/gadget/udc/at91_udc.c
1129
if (at91_udp_read(udc, AT91_UDP_GLB_STAT) & AT91_UDP_ESR)
drivers/usb/gadget/udc/at91_udc.c
1140
tmp = at91_udp_read(udc, AT91_UDP_GLB_STAT);
drivers/usb/gadget/udc/at91_udc.c
1142
at91_udp_write(udc, AT91_UDP_GLB_STAT, tmp);
drivers/usb/gadget/udc/at91_udc.c
1148
tmp = at91_udp_read(udc, AT91_UDP_GLB_STAT);
drivers/usb/gadget/udc/at91_udc.c
115
struct at91_udc *udc = ep->udc;
drivers/usb/gadget/udc/at91_udc.c
1150
at91_udp_write(udc, AT91_UDP_GLB_STAT, tmp);
drivers/usb/gadget/udc/at91_udc.c
117
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/at91_udc.c
1177
ep = &udc->ep[tmp];
drivers/usb/gadget/udc/at91_udc.c
1200
ep = &udc->ep[tmp];
drivers/usb/gadget/udc/at91_udc.c
1219
ep = &udc->ep[tmp];
drivers/usb/gadget/udc/at91_udc.c
1232
at91_udp_write(udc, AT91_UDP_RST_EP, ep->int_mask);
drivers/usb/gadget/udc/at91_udc.c
1233
at91_udp_write(udc, AT91_UDP_RST_EP, 0);
drivers/usb/gadget/udc/at91_udc.c
1248
if (udc->driver) {
drivers/usb/gadget/udc/at91_udc.c
1249
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/at91_udc.c
1250
status = udc->driver->setup(&udc->gadget, &pkt.r);
drivers/usb/gadget/udc/at91_udc.c
1251
spin_lock(&udc->lock);
drivers/usb/gadget/udc/at91_udc.c
1261
udc->req_pending = 0;
drivers/usb/gadget/udc/at91_udc.c
1271
udc->req_pending = 0;
drivers/usb/gadget/udc/at91_udc.c
1274
static void handle_ep0(struct at91_udc *udc)
drivers/usb/gadget/udc/at91_udc.c
1276
struct at91_ep *ep0 = &udc->ep[0];
drivers/usb/gadget/udc/at91_udc.c
1283
udc->req_pending = 0;
drivers/usb/gadget/udc/at91_udc.c
1292
udc->req_pending = 0;
drivers/usb/gadget/udc/at91_udc.c
1293
handle_setup(udc, ep0, csr);
drivers/usb/gadget/udc/at91_udc.c
1310
udc->req_pending = 0;
drivers/usb/gadget/udc/at91_udc.c
1321
udc->req_pending = 0;
drivers/usb/gadget/udc/at91_udc.c
1328
if (udc->wait_for_addr_ack) {
drivers/usb/gadget/udc/at91_udc.c
1331
at91_udp_write(udc, AT91_UDP_FADDR,
drivers/usb/gadget/udc/at91_udc.c
1332
AT91_UDP_FEN | udc->addr);
drivers/usb/gadget/udc/at91_udc.c
1333
tmp = at91_udp_read(udc, AT91_UDP_GLB_STAT);
drivers/usb/gadget/udc/at91_udc.c
1335
if (udc->addr)
drivers/usb/gadget/udc/at91_udc.c
1337
at91_udp_write(udc, AT91_UDP_GLB_STAT, tmp);
drivers/usb/gadget/udc/at91_udc.c
1339
udc->wait_for_addr_ack = 0;
drivers/usb/gadget/udc/at91_udc.c
1340
VDBG("address %d\n", udc->addr);
drivers/usb/gadget/udc/at91_udc.c
1360
udc->req_pending = 0;
drivers/usb/gadget/udc/at91_udc.c
1362
} else if (udc->req_pending) {
drivers/usb/gadget/udc/at91_udc.c
1382
udc->req_pending = 0;
drivers/usb/gadget/udc/at91_udc.c
1399
struct at91_udc *udc = _udc;
drivers/usb/gadget/udc/at91_udc.c
1404
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/at91_udc.c
1406
if (!udc->clocked) {
drivers/usb/gadget/udc/at91_udc.c
1407
clk_on(udc);
drivers/usb/gadget/udc/at91_udc.c
1414
status = at91_udp_read(udc, AT91_UDP_ISR)
drivers/usb/gadget/udc/at91_udc.c
1415
& at91_udp_read(udc, AT91_UDP_IMR);
drivers/usb/gadget/udc/at91_udc.c
1421
at91_udp_write(udc, AT91_UDP_IDR, ~MINIMUS_INTERRUPTUS);
drivers/usb/gadget/udc/at91_udc.c
1422
at91_udp_write(udc, AT91_UDP_IER, MINIMUS_INTERRUPTUS);
drivers/usb/gadget/udc/at91_udc.c
1424
at91_udp_write(udc, AT91_UDP_ICR, AT91_UDP_ENDBUSRES);
drivers/usb/gadget/udc/at91_udc.c
1425
at91_udp_write(udc, AT91_UDP_ICR, AT91_UDP_ENDBUSRES);
drivers/usb/gadget/udc/at91_udc.c
1427
udc->addr = 0;
drivers/usb/gadget/udc/at91_udc.c
1428
reset_gadget(udc);
drivers/usb/gadget/udc/at91_udc.c
1431
at91_udp_write(udc, AT91_UDP_CSR(0),
drivers/usb/gadget/udc/at91_udc.c
1433
udc->gadget.speed = USB_SPEED_FULL;
drivers/usb/gadget/udc/at91_udc.c
1434
udc->suspended = 0;
drivers/usb/gadget/udc/at91_udc.c
1435
at91_udp_write(udc, AT91_UDP_IER, AT91_UDP_EP(0));
drivers/usb/gadget/udc/at91_udc.c
1446
at91_udp_write(udc, AT91_UDP_IDR, AT91_UDP_RXSUSP);
drivers/usb/gadget/udc/at91_udc.c
1447
at91_udp_write(udc, AT91_UDP_IER, AT91_UDP_RXRSM);
drivers/usb/gadget/udc/at91_udc.c
1448
at91_udp_write(udc, AT91_UDP_ICR, AT91_UDP_RXSUSP);
drivers/usb/gadget/udc/at91_udc.c
1450
if (udc->suspended)
drivers/usb/gadget/udc/at91_udc.c
1452
udc->suspended = 1;
drivers/usb/gadget/udc/at91_udc.c
1460
if (udc->driver && udc->driver->suspend) {
drivers/usb/gadget/udc/at91_udc.c
1461
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/at91_udc.c
1462
udc->driver->suspend(&udc->gadget);
drivers/usb/gadget/udc/at91_udc.c
1463
spin_lock(&udc->lock);
drivers/usb/gadget/udc/at91_udc.c
1468
at91_udp_write(udc, AT91_UDP_IDR, AT91_UDP_RXRSM);
drivers/usb/gadget/udc/at91_udc.c
1469
at91_udp_write(udc, AT91_UDP_IER, AT91_UDP_RXSUSP);
drivers/usb/gadget/udc/at91_udc.c
1470
at91_udp_write(udc, AT91_UDP_ICR, AT91_UDP_RXRSM);
drivers/usb/gadget/udc/at91_udc.c
1472
if (!udc->suspended)
drivers/usb/gadget/udc/at91_udc.c
1474
udc->suspended = 0;
drivers/usb/gadget/udc/at91_udc.c
1481
if (udc->driver && udc->driver->resume) {
drivers/usb/gadget/udc/at91_udc.c
1482
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/at91_udc.c
1483
udc->driver->resume(&udc->gadget);
drivers/usb/gadget/udc/at91_udc.c
1484
spin_lock(&udc->lock);
drivers/usb/gadget/udc/at91_udc.c
1491
struct at91_ep *ep = &udc->ep[1];
drivers/usb/gadget/udc/at91_udc.c
1494
handle_ep0(udc);
drivers/usb/gadget/udc/at91_udc.c
1505
clk_off(udc);
drivers/usb/gadget/udc/at91_udc.c
1507
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/at91_udc.c
1514
static void at91_vbus_update(struct at91_udc *udc, unsigned value)
drivers/usb/gadget/udc/at91_udc.c
1516
if (value != udc->vbus)
drivers/usb/gadget/udc/at91_udc.c
1517
at91_vbus_session(&udc->gadget, value);
drivers/usb/gadget/udc/at91_udc.c
1522
struct at91_udc *udc = _udc;
drivers/usb/gadget/udc/at91_udc.c
1526
at91_vbus_update(udc, gpiod_get_value(udc->board.vbus_pin));
drivers/usb/gadget/udc/at91_udc.c
1533
struct at91_udc *udc = container_of(work, struct at91_udc,
drivers/usb/gadget/udc/at91_udc.c
1536
at91_vbus_update(udc, gpiod_get_value_cansleep(udc->board.vbus_pin));
drivers/usb/gadget/udc/at91_udc.c
1538
if (!timer_pending(&udc->vbus_timer))
drivers/usb/gadget/udc/at91_udc.c
1539
mod_timer(&udc->vbus_timer, jiffies + VBUS_POLL_TIMEOUT);
drivers/usb/gadget/udc/at91_udc.c
1544
struct at91_udc *udc = timer_container_of(udc, t, vbus_timer);
drivers/usb/gadget/udc/at91_udc.c
1551
schedule_work(&udc->vbus_timer_work);
drivers/usb/gadget/udc/at91_udc.c
1557
struct at91_udc *udc;
drivers/usb/gadget/udc/at91_udc.c
1559
udc = container_of(gadget, struct at91_udc, gadget);
drivers/usb/gadget/udc/at91_udc.c
1560
udc->driver = driver;
drivers/usb/gadget/udc/at91_udc.c
1561
udc->gadget.dev.of_node = udc->pdev->dev.of_node;
drivers/usb/gadget/udc/at91_udc.c
1562
udc->enabled = 1;
drivers/usb/gadget/udc/at91_udc.c
1563
udc->gadget.is_selfpowered = 1;
drivers/usb/gadget/udc/at91_udc.c
1570
struct at91_udc *udc;
drivers/usb/gadget/udc/at91_udc.c
1573
udc = container_of(gadget, struct at91_udc, gadget);
drivers/usb/gadget/udc/at91_udc.c
1574
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/at91_udc.c
1575
udc->enabled = 0;
drivers/usb/gadget/udc/at91_udc.c
1576
at91_udp_write(udc, AT91_UDP_IDR, ~0);
drivers/usb/gadget/udc/at91_udc.c
1577
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/at91_udc.c
1579
udc->driver = NULL;
drivers/usb/gadget/udc/at91_udc.c
1588
struct at91_udc *udc = platform_get_drvdata(dev);
drivers/usb/gadget/udc/at91_udc.c
1592
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/at91_udc.c
1594
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/at91_udc.c
1597
static int at91rm9200_udc_init(struct at91_udc *udc)
drivers/usb/gadget/udc/at91_udc.c
1603
ep = &udc->ep[i];
drivers/usb/gadget/udc/at91_udc.c
161
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/at91_udc.c
1619
if (!udc->board.pullup_pin) {
drivers/usb/gadget/udc/at91_udc.c
1624
gpiod_direction_output(udc->board.pullup_pin,
drivers/usb/gadget/udc/at91_udc.c
1625
gpiod_is_active_low(udc->board.pullup_pin));
drivers/usb/gadget/udc/at91_udc.c
1630
static void at91rm9200_udc_pullup(struct at91_udc *udc, int is_on)
drivers/usb/gadget/udc/at91_udc.c
1632
gpiod_set_value(udc->board.pullup_pin, is_on);
drivers/usb/gadget/udc/at91_udc.c
1640
static int at91sam9260_udc_init(struct at91_udc *udc)
drivers/usb/gadget/udc/at91_udc.c
1646
ep = &udc->ep[i];
drivers/usb/gadget/udc/at91_udc.c
1661
static void at91sam9260_udc_pullup(struct at91_udc *udc, int is_on)
drivers/usb/gadget/udc/at91_udc.c
1663
u32 txvc = at91_udp_read(udc, AT91_UDP_TXVC);
drivers/usb/gadget/udc/at91_udc.c
1670
at91_udp_write(udc, AT91_UDP_TXVC, txvc);
drivers/usb/gadget/udc/at91_udc.c
1678
static int at91sam9261_udc_init(struct at91_udc *udc)
drivers/usb/gadget/udc/at91_udc.c
1684
ep = &udc->ep[i];
drivers/usb/gadget/udc/at91_udc.c
1699
udc->matrix = syscon_regmap_lookup_by_phandle(udc->pdev->dev.of_node,
drivers/usb/gadget/udc/at91_udc.c
1701
return PTR_ERR_OR_ZERO(udc->matrix);
drivers/usb/gadget/udc/at91_udc.c
1704
static void at91sam9261_udc_pullup(struct at91_udc *udc, int is_on)
drivers/usb/gadget/udc/at91_udc.c
1711
regmap_update_bits(udc->matrix, AT91SAM9261_MATRIX_USBPUCR,
drivers/usb/gadget/udc/at91_udc.c
1720
static int at91sam9263_udc_init(struct at91_udc *udc)
drivers/usb/gadget/udc/at91_udc.c
1726
ep = &udc->ep[i];
drivers/usb/gadget/udc/at91_udc.c
1771
static void at91udc_of_init(struct at91_udc *udc, struct device_node *np)
drivers/usb/gadget/udc/at91_udc.c
1773
struct at91_udc_data *board = &udc->board;
drivers/usb/gadget/udc/at91_udc.c
1794
udc->caps = match->data;
drivers/usb/gadget/udc/at91_udc.c
1800
struct at91_udc *udc;
drivers/usb/gadget/udc/at91_udc.c
1805
udc = devm_kzalloc(dev, sizeof(*udc), GFP_KERNEL);
drivers/usb/gadget/udc/at91_udc.c
1806
if (!udc)
drivers/usb/gadget/udc/at91_udc.c
1810
udc->gadget.dev.parent = dev;
drivers/usb/gadget/udc/at91_udc.c
1811
at91udc_of_init(udc, pdev->dev.of_node);
drivers/usb/gadget/udc/at91_udc.c
1812
udc->pdev = pdev;
drivers/usb/gadget/udc/at91_udc.c
1813
udc->enabled = 0;
drivers/usb/gadget/udc/at91_udc.c
1814
spin_lock_init(&udc->lock);
drivers/usb/gadget/udc/at91_udc.c
1816
udc->gadget.ops = &at91_udc_ops;
drivers/usb/gadget/udc/at91_udc.c
1817
udc->gadget.ep0 = &udc->ep[0].ep;
drivers/usb/gadget/udc/at91_udc.c
1818
udc->gadget.name = driver_name;
drivers/usb/gadget/udc/at91_udc.c
1819
udc->gadget.dev.init_name = "gadget";
drivers/usb/gadget/udc/at91_udc.c
1822
ep = &udc->ep[i];
drivers/usb/gadget/udc/at91_udc.c
1826
ep->udc = udc;
drivers/usb/gadget/udc/at91_udc.c
1832
udc->udp_baseaddr = devm_platform_ioremap_resource(pdev, 0);
drivers/usb/gadget/udc/at91_udc.c
1833
if (IS_ERR(udc->udp_baseaddr))
drivers/usb/gadget/udc/at91_udc.c
1834
return PTR_ERR(udc->udp_baseaddr);
drivers/usb/gadget/udc/at91_udc.c
1836
if (udc->caps && udc->caps->init) {
drivers/usb/gadget/udc/at91_udc.c
1837
retval = udc->caps->init(udc);
drivers/usb/gadget/udc/at91_udc.c
1842
udc_reinit(udc);
drivers/usb/gadget/udc/at91_udc.c
1845
udc->iclk = devm_clk_get(dev, "pclk");
drivers/usb/gadget/udc/at91_udc.c
1846
if (IS_ERR(udc->iclk))
drivers/usb/gadget/udc/at91_udc.c
1847
return PTR_ERR(udc->iclk);
drivers/usb/gadget/udc/at91_udc.c
1849
udc->fclk = devm_clk_get(dev, "hclk");
drivers/usb/gadget/udc/at91_udc.c
185
struct at91_udc *udc = s->private;
drivers/usb/gadget/udc/at91_udc.c
1850
if (IS_ERR(udc->fclk))
drivers/usb/gadget/udc/at91_udc.c
1851
return PTR_ERR(udc->fclk);
drivers/usb/gadget/udc/at91_udc.c
1854
clk_set_rate(udc->fclk, 48000000);
drivers/usb/gadget/udc/at91_udc.c
1855
retval = clk_prepare(udc->fclk);
drivers/usb/gadget/udc/at91_udc.c
1859
retval = clk_prepare_enable(udc->iclk);
drivers/usb/gadget/udc/at91_udc.c
1863
at91_udp_write(udc, AT91_UDP_TXVC, AT91_UDP_TXVC_TXVDIS);
drivers/usb/gadget/udc/at91_udc.c
1864
at91_udp_write(udc, AT91_UDP_IDR, 0xffffffff);
drivers/usb/gadget/udc/at91_udc.c
1866
at91_udp_write(udc, AT91_UDP_ICR, 0xffffffff);
drivers/usb/gadget/udc/at91_udc.c
1867
clk_disable(udc->iclk);
drivers/usb/gadget/udc/at91_udc.c
1870
udc->udp_irq = retval = platform_get_irq(pdev, 0);
drivers/usb/gadget/udc/at91_udc.c
1873
retval = devm_request_irq(dev, udc->udp_irq, at91_udc_irq, 0,
drivers/usb/gadget/udc/at91_udc.c
1874
driver_name, udc);
drivers/usb/gadget/udc/at91_udc.c
1876
DBG("request irq %d failed\n", udc->udp_irq);
drivers/usb/gadget/udc/at91_udc.c
1880
if (udc->board.vbus_pin) {
drivers/usb/gadget/udc/at91_udc.c
1881
gpiod_direction_input(udc->board.vbus_pin);
drivers/usb/gadget/udc/at91_udc.c
1887
udc->vbus = gpiod_get_value_cansleep(udc->board.vbus_pin);
drivers/usb/gadget/udc/at91_udc.c
1889
if (udc->board.vbus_polled) {
drivers/usb/gadget/udc/at91_udc.c
1890
INIT_WORK(&udc->vbus_timer_work, at91_vbus_timer_work);
drivers/usb/gadget/udc/at91_udc.c
1891
timer_setup(&udc->vbus_timer, at91_vbus_timer, 0);
drivers/usb/gadget/udc/at91_udc.c
1892
mod_timer(&udc->vbus_timer,
drivers/usb/gadget/udc/at91_udc.c
1896
gpiod_to_irq(udc->board.vbus_pin),
drivers/usb/gadget/udc/at91_udc.c
1897
at91_vbus_irq, 0, driver_name, udc);
drivers/usb/gadget/udc/at91_udc.c
1900
desc_to_gpio(udc->board.vbus_pin));
drivers/usb/gadget/udc/at91_udc.c
1906
udc->vbus = 1;
drivers/usb/gadget/udc/at91_udc.c
1908
retval = usb_add_gadget_udc(dev, &udc->gadget);
drivers/usb/gadget/udc/at91_udc.c
1911
dev_set_drvdata(dev, udc);
drivers/usb/gadget/udc/at91_udc.c
1913
create_debug_file(udc);
drivers/usb/gadget/udc/at91_udc.c
1919
clk_unprepare(udc->iclk);
drivers/usb/gadget/udc/at91_udc.c
192
udc->vbus ? "present" : "off",
drivers/usb/gadget/udc/at91_udc.c
1921
clk_unprepare(udc->fclk);
drivers/usb/gadget/udc/at91_udc.c
193
udc->enabled
drivers/usb/gadget/udc/at91_udc.c
1930
struct at91_udc *udc = platform_get_drvdata(pdev);
drivers/usb/gadget/udc/at91_udc.c
1935
usb_del_gadget_udc(&udc->gadget);
drivers/usb/gadget/udc/at91_udc.c
1936
if (udc->driver) {
drivers/usb/gadget/udc/at91_udc.c
194
? (udc->vbus ? "active" : "enabled")
drivers/usb/gadget/udc/at91_udc.c
1942
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/at91_udc.c
1943
pullup(udc, 0);
drivers/usb/gadget/udc/at91_udc.c
1944
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/at91_udc.c
1947
remove_debug_file(udc);
drivers/usb/gadget/udc/at91_udc.c
1948
clk_unprepare(udc->fclk);
drivers/usb/gadget/udc/at91_udc.c
1949
clk_unprepare(udc->iclk);
drivers/usb/gadget/udc/at91_udc.c
1955
struct at91_udc *udc = platform_get_drvdata(pdev);
drivers/usb/gadget/udc/at91_udc.c
1956
int wake = udc->driver && device_may_wakeup(&pdev->dev);
drivers/usb/gadget/udc/at91_udc.c
196
udc->gadget.is_selfpowered ? "self" : "VBUS",
drivers/usb/gadget/udc/at91_udc.c
1964
if ((!udc->suspended && udc->addr)
drivers/usb/gadget/udc/at91_udc.c
1967
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/at91_udc.c
1968
pullup(udc, 0);
drivers/usb/gadget/udc/at91_udc.c
197
udc->suspended ? ", suspended" : "",
drivers/usb/gadget/udc/at91_udc.c
1970
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/at91_udc.c
1972
enable_irq_wake(udc->udp_irq);
drivers/usb/gadget/udc/at91_udc.c
1974
udc->active_suspend = wake;
drivers/usb/gadget/udc/at91_udc.c
1975
if (udc->board.vbus_pin && !udc->board.vbus_polled && wake)
drivers/usb/gadget/udc/at91_udc.c
1976
enable_irq_wake(gpiod_to_irq(udc->board.vbus_pin));
drivers/usb/gadget/udc/at91_udc.c
198
udc->driver ? udc->driver->driver.name : "(none)");
drivers/usb/gadget/udc/at91_udc.c
1982
struct at91_udc *udc = platform_get_drvdata(pdev);
drivers/usb/gadget/udc/at91_udc.c
1985
if (udc->board.vbus_pin && !udc->board.vbus_polled &&
drivers/usb/gadget/udc/at91_udc.c
1986
udc->active_suspend)
drivers/usb/gadget/udc/at91_udc.c
1987
disable_irq_wake(gpiod_to_irq(udc->board.vbus_pin));
drivers/usb/gadget/udc/at91_udc.c
1990
if (udc->active_suspend)
drivers/usb/gadget/udc/at91_udc.c
1991
disable_irq_wake(udc->udp_irq);
drivers/usb/gadget/udc/at91_udc.c
1993
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/at91_udc.c
1994
pullup(udc, 1);
drivers/usb/gadget/udc/at91_udc.c
1995
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/at91_udc.c
201
if (!udc->clocked) {
drivers/usb/gadget/udc/at91_udc.c
206
tmp = at91_udp_read(udc, AT91_UDP_FRM_NUM);
drivers/usb/gadget/udc/at91_udc.c
212
tmp = at91_udp_read(udc, AT91_UDP_GLB_STAT);
drivers/usb/gadget/udc/at91_udc.c
220
tmp = at91_udp_read(udc, AT91_UDP_FADDR);
drivers/usb/gadget/udc/at91_udc.c
225
proc_irq_show(s, "imr ", at91_udp_read(udc, AT91_UDP_IMR));
drivers/usb/gadget/udc/at91_udc.c
226
proc_irq_show(s, "isr ", at91_udp_read(udc, AT91_UDP_ISR));
drivers/usb/gadget/udc/at91_udc.c
228
if (udc->enabled && udc->vbus) {
drivers/usb/gadget/udc/at91_udc.c
229
proc_ep_show(s, &udc->ep[0]);
drivers/usb/gadget/udc/at91_udc.c
230
list_for_each_entry (ep, &udc->gadget.ep_list, ep.ep_list) {
drivers/usb/gadget/udc/at91_udc.c
238
static void create_debug_file(struct at91_udc *udc)
drivers/usb/gadget/udc/at91_udc.c
240
udc->pde = proc_create_single_data(debug_filename, 0, NULL,
drivers/usb/gadget/udc/at91_udc.c
241
proc_udc_show, udc);
drivers/usb/gadget/udc/at91_udc.c
244
static void remove_debug_file(struct at91_udc *udc)
drivers/usb/gadget/udc/at91_udc.c
246
if (udc->pde)
drivers/usb/gadget/udc/at91_udc.c
252
static inline void create_debug_file(struct at91_udc *udc) {}
drivers/usb/gadget/udc/at91_udc.c
253
static inline void remove_debug_file(struct at91_udc *udc) {}
drivers/usb/gadget/udc/at91_udc.c
263
struct at91_udc *udc = ep->udc;
drivers/usb/gadget/udc/at91_udc.c
274
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/at91_udc.c
276
spin_lock(&udc->lock);
drivers/usb/gadget/udc/at91_udc.c
281
at91_udp_write(udc, AT91_UDP_IDR, ep->int_mask);
drivers/usb/gadget/udc/at91_udc.c
476
struct at91_udc *udc;
drivers/usb/gadget/udc/at91_udc.c
490
udc = ep->udc;
drivers/usb/gadget/udc/at91_udc.c
491
if (!udc->driver || udc->gadget.speed == USB_SPEED_UNKNOWN) {
drivers/usb/gadget/udc/at91_udc.c
525
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/at91_udc.c
543
at91_udp_write(udc, AT91_UDP_RST_EP, ep->int_mask);
drivers/usb/gadget/udc/at91_udc.c
544
at91_udp_write(udc, AT91_UDP_RST_EP, 0);
drivers/usb/gadget/udc/at91_udc.c
546
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/at91_udc.c
553
struct at91_udc *udc = ep->udc;
drivers/usb/gadget/udc/at91_udc.c
556
if (ep == &ep->udc->ep[0])
drivers/usb/gadget/udc/at91_udc.c
559
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/at91_udc.c
568
if (ep->udc->clocked) {
drivers/usb/gadget/udc/at91_udc.c
569
at91_udp_write(udc, AT91_UDP_RST_EP, ep->int_mask);
drivers/usb/gadget/udc/at91_udc.c
570
at91_udp_write(udc, AT91_UDP_RST_EP, 0);
drivers/usb/gadget/udc/at91_udc.c
574
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/at91_udc.c
610
struct at91_udc *udc;
drivers/usb/gadget/udc/at91_udc.c
628
udc = ep->udc;
drivers/usb/gadget/udc/at91_udc.c
630
if (!udc || !udc->driver || udc->gadget.speed == USB_SPEED_UNKNOWN) {
drivers/usb/gadget/udc/at91_udc.c
638
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/at91_udc.c
656
if (!udc->req_pending) {
drivers/usb/gadget/udc/at91_udc.c
665
if (udc->wait_for_config_ack) {
drivers/usb/gadget/udc/at91_udc.c
666
tmp = at91_udp_read(udc, AT91_UDP_GLB_STAT);
drivers/usb/gadget/udc/at91_udc.c
669
at91_udp_write(udc, AT91_UDP_GLB_STAT, tmp);
drivers/usb/gadget/udc/at91_udc.c
679
udc->req_pending = 0;
drivers/usb/gadget/udc/at91_udc.c
698
at91_udp_write(udc, AT91_UDP_IER, ep->int_mask);
drivers/usb/gadget/udc/at91_udc.c
701
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/at91_udc.c
710
struct at91_udc *udc;
drivers/usb/gadget/udc/at91_udc.c
716
udc = ep->udc;
drivers/usb/gadget/udc/at91_udc.c
718
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/at91_udc.c
728
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/at91_udc.c
733
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/at91_udc.c
740
struct at91_udc *udc = ep->udc;
drivers/usb/gadget/udc/at91_udc.c
746
if (!_ep || ep->is_iso || !ep->udc->clocked)
drivers/usb/gadget/udc/at91_udc.c
750
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/at91_udc.c
768
at91_udp_write(udc, AT91_UDP_RST_EP, ep->int_mask);
drivers/usb/gadget/udc/at91_udc.c
769
at91_udp_write(udc, AT91_UDP_RST_EP, 0);
drivers/usb/gadget/udc/at91_udc.c
775
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/at91_udc.c
794
struct at91_udc *udc = to_udc(gadget);
drivers/usb/gadget/udc/at91_udc.c
798
return at91_udp_read(udc, AT91_UDP_FRM_NUM) & AT91_UDP_NUM;
drivers/usb/gadget/udc/at91_udc.c
803
struct at91_udc *udc = to_udc(gadget);
drivers/usb/gadget/udc/at91_udc.c
808
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/at91_udc.c
810
if (!udc->clocked || !udc->suspended)
drivers/usb/gadget/udc/at91_udc.c
815
glbstate = at91_udp_read(udc, AT91_UDP_GLB_STAT);
drivers/usb/gadget/udc/at91_udc.c
819
at91_udp_write(udc, AT91_UDP_GLB_STAT, glbstate);
drivers/usb/gadget/udc/at91_udc.c
822
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/at91_udc.c
827
static void udc_reinit(struct at91_udc *udc)
drivers/usb/gadget/udc/at91_udc.c
831
INIT_LIST_HEAD(&udc->gadget.ep_list);
drivers/usb/gadget/udc/at91_udc.c
832
INIT_LIST_HEAD(&udc->gadget.ep0->ep_list);
drivers/usb/gadget/udc/at91_udc.c
833
udc->gadget.quirk_stall_not_supp = 1;
drivers/usb/gadget/udc/at91_udc.c
836
struct at91_ep *ep = &udc->ep[i];
drivers/usb/gadget/udc/at91_udc.c
839
list_add_tail(&ep->ep.ep_list, &udc->gadget.ep_list);
drivers/usb/gadget/udc/at91_udc.c
844
ep->creg = (void __iomem *) udc->udp_baseaddr + AT91_UDP_CSR(i);
drivers/usb/gadget/udc/at91_udc.c
850
static void reset_gadget(struct at91_udc *udc)
drivers/usb/gadget/udc/at91_udc.c
852
struct usb_gadget_driver *driver = udc->driver;
drivers/usb/gadget/udc/at91_udc.c
855
if (udc->gadget.speed == USB_SPEED_UNKNOWN)
drivers/usb/gadget/udc/at91_udc.c
857
udc->gadget.speed = USB_SPEED_UNKNOWN;
drivers/usb/gadget/udc/at91_udc.c
858
udc->suspended = 0;
drivers/usb/gadget/udc/at91_udc.c
861
struct at91_ep *ep = &udc->ep[i];
drivers/usb/gadget/udc/at91_udc.c
867
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/at91_udc.c
868
usb_gadget_udc_reset(&udc->gadget, driver);
drivers/usb/gadget/udc/at91_udc.c
869
spin_lock(&udc->lock);
drivers/usb/gadget/udc/at91_udc.c
872
udc_reinit(udc);
drivers/usb/gadget/udc/at91_udc.c
875
static void stop_activity(struct at91_udc *udc)
drivers/usb/gadget/udc/at91_udc.c
877
struct usb_gadget_driver *driver = udc->driver;
drivers/usb/gadget/udc/at91_udc.c
880
if (udc->gadget.speed == USB_SPEED_UNKNOWN)
drivers/usb/gadget/udc/at91_udc.c
882
udc->gadget.speed = USB_SPEED_UNKNOWN;
drivers/usb/gadget/udc/at91_udc.c
883
udc->suspended = 0;
drivers/usb/gadget/udc/at91_udc.c
886
struct at91_ep *ep = &udc->ep[i];
drivers/usb/gadget/udc/at91_udc.c
891
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/at91_udc.c
892
driver->disconnect(&udc->gadget);
drivers/usb/gadget/udc/at91_udc.c
893
spin_lock(&udc->lock);
drivers/usb/gadget/udc/at91_udc.c
896
udc_reinit(udc);
drivers/usb/gadget/udc/at91_udc.c
899
static void clk_on(struct at91_udc *udc)
drivers/usb/gadget/udc/at91_udc.c
90
#define at91_udp_read(udc, reg) \
drivers/usb/gadget/udc/at91_udc.c
901
if (udc->clocked)
drivers/usb/gadget/udc/at91_udc.c
903
udc->clocked = 1;
drivers/usb/gadget/udc/at91_udc.c
905
clk_enable(udc->iclk);
drivers/usb/gadget/udc/at91_udc.c
906
clk_enable(udc->fclk);
drivers/usb/gadget/udc/at91_udc.c
909
static void clk_off(struct at91_udc *udc)
drivers/usb/gadget/udc/at91_udc.c
91
__raw_readl((udc)->udp_baseaddr + (reg))
drivers/usb/gadget/udc/at91_udc.c
911
if (!udc->clocked)
drivers/usb/gadget/udc/at91_udc.c
913
udc->clocked = 0;
drivers/usb/gadget/udc/at91_udc.c
914
udc->gadget.speed = USB_SPEED_UNKNOWN;
drivers/usb/gadget/udc/at91_udc.c
915
clk_disable(udc->fclk);
drivers/usb/gadget/udc/at91_udc.c
916
clk_disable(udc->iclk);
drivers/usb/gadget/udc/at91_udc.c
92
#define at91_udp_write(udc, reg, val) \
drivers/usb/gadget/udc/at91_udc.c
923
static void pullup(struct at91_udc *udc, int is_on)
drivers/usb/gadget/udc/at91_udc.c
925
if (!udc->enabled || !udc->vbus)
drivers/usb/gadget/udc/at91_udc.c
93
__raw_writel((val), (udc)->udp_baseaddr + (reg))
drivers/usb/gadget/udc/at91_udc.c
930
clk_on(udc);
drivers/usb/gadget/udc/at91_udc.c
931
at91_udp_write(udc, AT91_UDP_ICR, AT91_UDP_RXRSM);
drivers/usb/gadget/udc/at91_udc.c
932
at91_udp_write(udc, AT91_UDP_TXVC, 0);
drivers/usb/gadget/udc/at91_udc.c
934
stop_activity(udc);
drivers/usb/gadget/udc/at91_udc.c
935
at91_udp_write(udc, AT91_UDP_IDR, AT91_UDP_RXRSM);
drivers/usb/gadget/udc/at91_udc.c
936
at91_udp_write(udc, AT91_UDP_TXVC, AT91_UDP_TXVC_TXVDIS);
drivers/usb/gadget/udc/at91_udc.c
937
clk_off(udc);
drivers/usb/gadget/udc/at91_udc.c
940
if (udc->caps && udc->caps->pullup)
drivers/usb/gadget/udc/at91_udc.c
941
udc->caps->pullup(udc, is_on);
drivers/usb/gadget/udc/at91_udc.c
947
struct at91_udc *udc = to_udc(gadget);
drivers/usb/gadget/udc/at91_udc.c
951
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/at91_udc.c
952
udc->vbus = (is_active != 0);
drivers/usb/gadget/udc/at91_udc.c
953
if (udc->driver)
drivers/usb/gadget/udc/at91_udc.c
954
pullup(udc, is_active);
drivers/usb/gadget/udc/at91_udc.c
956
pullup(udc, 0);
drivers/usb/gadget/udc/at91_udc.c
957
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/at91_udc.c
963
struct at91_udc *udc = to_udc(gadget);
drivers/usb/gadget/udc/at91_udc.c
966
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/at91_udc.c
967
udc->enabled = is_on = !!is_on;
drivers/usb/gadget/udc/at91_udc.c
968
pullup(udc, is_on);
drivers/usb/gadget/udc/at91_udc.c
969
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/at91_udc.c
975
struct at91_udc *udc = to_udc(gadget);
drivers/usb/gadget/udc/at91_udc.c
978
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/at91_udc.c
980
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/at91_udc.h
107
int (*init)(struct at91_udc *udc);
drivers/usb/gadget/udc/at91_udc.h
108
void (*pullup)(struct at91_udc *udc, int is_on);
drivers/usb/gadget/udc/at91_udc.h
93
struct at91_udc *udc;
drivers/usb/gadget/udc/atmel_usba_udc.c
1004
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/atmel_usba_udc.c
1005
if (udc->devstatus & (1 << USB_DEVICE_REMOTE_WAKEUP)) {
drivers/usb/gadget/udc/atmel_usba_udc.c
1006
ctrl = usba_readl(udc, CTRL);
drivers/usb/gadget/udc/atmel_usba_udc.c
1007
usba_writel(udc, CTRL, ctrl | USBA_REMOTE_WAKE_UP);
drivers/usb/gadget/udc/atmel_usba_udc.c
1010
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/atmel_usba_udc.c
1018
struct usba_udc *udc = to_usba_udc(gadget);
drivers/usb/gadget/udc/atmel_usba_udc.c
1022
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/atmel_usba_udc.c
1024
udc->devstatus |= 1 << USB_DEVICE_SELF_POWERED;
drivers/usb/gadget/udc/atmel_usba_udc.c
1026
udc->devstatus &= ~(1 << USB_DEVICE_SELF_POWERED);
drivers/usb/gadget/udc/atmel_usba_udc.c
1027
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/atmel_usba_udc.c
1065
if (ep->udc->ep_prealloc)
drivers/usb/gadget/udc/atmel_usba_udc.c
1071
if (ep->udc->ep_prealloc)
drivers/usb/gadget/udc/atmel_usba_udc.c
1082
if (ep->udc->ep_prealloc)
drivers/usb/gadget/udc/atmel_usba_udc.c
1133
static void reset_all_endpoints(struct usba_udc *udc)
drivers/usb/gadget/udc/atmel_usba_udc.c
1138
usba_writel(udc, EPT_RST, ~0UL);
drivers/usb/gadget/udc/atmel_usba_udc.c
1140
ep = to_usba_ep(udc->gadget.ep0);
drivers/usb/gadget/udc/atmel_usba_udc.c
1147
static struct usba_ep *get_ep_by_addr(struct usba_udc *udc, u16 wIndex)
drivers/usb/gadget/udc/atmel_usba_udc.c
1152
return to_usba_ep(udc->gadget.ep0);
drivers/usb/gadget/udc/atmel_usba_udc.c
1154
list_for_each_entry (ep, &udc->gadget.ep_list, ep.ep_list) {
drivers/usb/gadget/udc/atmel_usba_udc.c
1171
static inline void set_protocol_stall(struct usba_udc *udc, struct usba_ep *ep)
drivers/usb/gadget/udc/atmel_usba_udc.c
1177
static inline int is_stalled(struct usba_udc *udc, struct usba_ep *ep)
drivers/usb/gadget/udc/atmel_usba_udc.c
1184
static inline void set_address(struct usba_udc *udc, unsigned int addr)
drivers/usb/gadget/udc/atmel_usba_udc.c
1189
regval = usba_readl(udc, CTRL);
drivers/usb/gadget/udc/atmel_usba_udc.c
1191
usba_writel(udc, CTRL, regval);
drivers/usb/gadget/udc/atmel_usba_udc.c
1194
static int do_test_mode(struct usba_udc *udc)
drivers/usb/gadget/udc/atmel_usba_udc.c
1212
struct device *dev = &udc->pdev->dev;
drivers/usb/gadget/udc/atmel_usba_udc.c
1215
test_mode = udc->test_mode;
drivers/usb/gadget/udc/atmel_usba_udc.c
1218
reset_all_endpoints(udc);
drivers/usb/gadget/udc/atmel_usba_udc.c
1223
usba_writel(udc, TST, USBA_TST_J_MODE);
drivers/usb/gadget/udc/atmel_usba_udc.c
1228
usba_writel(udc, TST, USBA_TST_K_MODE);
drivers/usb/gadget/udc/atmel_usba_udc.c
1236
ep = &udc->usba_ep[0];
drivers/usb/gadget/udc/atmel_usba_udc.c
1237
usba_writel(udc, TST,
drivers/usb/gadget/udc/atmel_usba_udc.c
1245
set_protocol_stall(udc, ep);
drivers/usb/gadget/udc/atmel_usba_udc.c
1254
ep = &udc->usba_ep[0];
drivers/usb/gadget/udc/atmel_usba_udc.c
1261
set_protocol_stall(udc, ep);
drivers/usb/gadget/udc/atmel_usba_udc.c
1265
usba_writel(udc, TST, USBA_TST_PKT_MODE);
drivers/usb/gadget/udc/atmel_usba_udc.c
1302
static int handle_ep0_setup(struct usba_udc *udc, struct usba_ep *ep,
drivers/usb/gadget/udc/atmel_usba_udc.c
1312
status = cpu_to_le16(udc->devstatus);
drivers/usb/gadget/udc/atmel_usba_udc.c
1320
target = get_ep_by_addr(udc, le16_to_cpu(crq->wIndex));
drivers/usb/gadget/udc/atmel_usba_udc.c
1325
if (is_stalled(udc, target))
drivers/usb/gadget/udc/atmel_usba_udc.c
1342
udc->devstatus
drivers/usb/gadget/udc/atmel_usba_udc.c
1353
target = get_ep_by_addr(udc, le16_to_cpu(crq->wIndex));
drivers/usb/gadget/udc/atmel_usba_udc.c
1365
send_status(udc, ep);
drivers/usb/gadget/udc/atmel_usba_udc.c
1372
send_status(udc, ep);
drivers/usb/gadget/udc/atmel_usba_udc.c
1374
udc->test_mode = le16_to_cpu(crq->wIndex);
drivers/usb/gadget/udc/atmel_usba_udc.c
1377
udc->devstatus |= 1 << USB_DEVICE_REMOTE_WAKEUP;
drivers/usb/gadget/udc/atmel_usba_udc.c
1388
target = get_ep_by_addr(udc, le16_to_cpu(crq->wIndex));
drivers/usb/gadget/udc/atmel_usba_udc.c
1396
send_status(udc, ep);
drivers/usb/gadget/udc/atmel_usba_udc.c
1404
set_address(udc, le16_to_cpu(crq->wValue));
drivers/usb/gadget/udc/atmel_usba_udc.c
1405
send_status(udc, ep);
drivers/usb/gadget/udc/atmel_usba_udc.c
141
struct usba_udc *udc;
drivers/usb/gadget/udc/atmel_usba_udc.c
1411
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/atmel_usba_udc.c
1412
retval = udc->driver->setup(&udc->gadget, crq);
drivers/usb/gadget/udc/atmel_usba_udc.c
1413
spin_lock(&udc->lock);
drivers/usb/gadget/udc/atmel_usba_udc.c
1424
set_protocol_stall(udc, ep);
drivers/usb/gadget/udc/atmel_usba_udc.c
1428
static void usba_control_irq(struct usba_udc *udc, struct usba_ep *ep)
drivers/usb/gadget/udc/atmel_usba_udc.c
1469
usba_writel(udc, CTRL, (usba_readl(udc, CTRL)
drivers/usb/gadget/udc/atmel_usba_udc.c
147
udc = inode->i_private;
drivers/usb/gadget/udc/atmel_usba_udc.c
1486
if (do_test_mode(udc))
drivers/usb/gadget/udc/atmel_usba_udc.c
1487
set_protocol_stall(udc, ep);
drivers/usb/gadget/udc/atmel_usba_udc.c
1493
set_protocol_stall(udc, ep);
drivers/usb/gadget/udc/atmel_usba_udc.c
152
spin_lock_irq(&udc->lock);
drivers/usb/gadget/udc/atmel_usba_udc.c
1522
set_protocol_stall(udc, ep);
drivers/usb/gadget/udc/atmel_usba_udc.c
154
data[i] = readl_relaxed(udc->regs + i * 4);
drivers/usb/gadget/udc/atmel_usba_udc.c
155
spin_unlock_irq(&udc->lock);
drivers/usb/gadget/udc/atmel_usba_udc.c
1566
set_protocol_stall(udc, ep);
drivers/usb/gadget/udc/atmel_usba_udc.c
1598
ret = handle_ep0_setup(udc, ep, &crq.crq);
drivers/usb/gadget/udc/atmel_usba_udc.c
1600
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/atmel_usba_udc.c
1601
ret = udc->driver->setup(&udc->gadget, &crq.crq);
drivers/usb/gadget/udc/atmel_usba_udc.c
1602
spin_lock(&udc->lock);
drivers/usb/gadget/udc/atmel_usba_udc.c
1611
set_protocol_stall(udc, ep);
drivers/usb/gadget/udc/atmel_usba_udc.c
1616
static void usba_ep_irq(struct usba_udc *udc, struct usba_ep *ep)
drivers/usb/gadget/udc/atmel_usba_udc.c
1631
dev_warn(&udc->pdev->dev, "ep_irq: queue empty\n");
drivers/usb/gadget/udc/atmel_usba_udc.c
1669
static void usba_dma_irq(struct usba_udc *udc, struct usba_ep *ep)
drivers/usb/gadget/udc/atmel_usba_udc.c
1683
dev_err(&udc->pdev->dev,
drivers/usb/gadget/udc/atmel_usba_udc.c
1685
dev_err(&udc->pdev->dev,
drivers/usb/gadget/udc/atmel_usba_udc.c
1709
static int start_clock(struct usba_udc *udc);
drivers/usb/gadget/udc/atmel_usba_udc.c
1710
static void stop_clock(struct usba_udc *udc);
drivers/usb/gadget/udc/atmel_usba_udc.c
1714
struct usba_udc *udc = devid;
drivers/usb/gadget/udc/atmel_usba_udc.c
1719
spin_lock(&udc->lock);
drivers/usb/gadget/udc/atmel_usba_udc.c
1721
int_enb = usba_int_enb_get(udc);
drivers/usb/gadget/udc/atmel_usba_udc.c
1722
status = usba_readl(udc, INT_STA) & (int_enb | USBA_HIGH_SPEED);
drivers/usb/gadget/udc/atmel_usba_udc.c
1726
usba_writel(udc, INT_CLR, USBA_DET_SUSPEND|USBA_WAKE_UP);
drivers/usb/gadget/udc/atmel_usba_udc.c
1727
usba_int_enb_set(udc, USBA_WAKE_UP);
drivers/usb/gadget/udc/atmel_usba_udc.c
1728
usba_int_enb_clear(udc, USBA_DET_SUSPEND);
drivers/usb/gadget/udc/atmel_usba_udc.c
1729
udc->suspended = true;
drivers/usb/gadget/udc/atmel_usba_udc.c
1730
toggle_bias(udc, 0);
drivers/usb/gadget/udc/atmel_usba_udc.c
1731
udc->bias_pulse_needed = true;
drivers/usb/gadget/udc/atmel_usba_udc.c
1732
stop_clock(udc);
drivers/usb/gadget/udc/atmel_usba_udc.c
1734
if (udc->gadget.speed != USB_SPEED_UNKNOWN
drivers/usb/gadget/udc/atmel_usba_udc.c
1735
&& udc->driver && udc->driver->suspend) {
drivers/usb/gadget/udc/atmel_usba_udc.c
1736
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/atmel_usba_udc.c
1737
udc->driver->suspend(&udc->gadget);
drivers/usb/gadget/udc/atmel_usba_udc.c
1738
spin_lock(&udc->lock);
drivers/usb/gadget/udc/atmel_usba_udc.c
1743
start_clock(udc);
drivers/usb/gadget/udc/atmel_usba_udc.c
1744
toggle_bias(udc, 1);
drivers/usb/gadget/udc/atmel_usba_udc.c
1745
usba_writel(udc, INT_CLR, USBA_WAKE_UP);
drivers/usb/gadget/udc/atmel_usba_udc.c
1750
udc->suspended = false;
drivers/usb/gadget/udc/atmel_usba_udc.c
1751
usba_writel(udc, INT_CLR, USBA_END_OF_RESUME);
drivers/usb/gadget/udc/atmel_usba_udc.c
1752
usba_int_enb_clear(udc, USBA_WAKE_UP);
drivers/usb/gadget/udc/atmel_usba_udc.c
1753
usba_int_enb_set(udc, USBA_DET_SUSPEND);
drivers/usb/gadget/udc/atmel_usba_udc.c
1754
generate_bias_pulse(udc);
drivers/usb/gadget/udc/atmel_usba_udc.c
1756
if (udc->gadget.speed != USB_SPEED_UNKNOWN
drivers/usb/gadget/udc/atmel_usba_udc.c
1757
&& udc->driver && udc->driver->resume) {
drivers/usb/gadget/udc/atmel_usba_udc.c
1758
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/atmel_usba_udc.c
1759
udc->driver->resume(&udc->gadget);
drivers/usb/gadget/udc/atmel_usba_udc.c
1760
spin_lock(&udc->lock);
drivers/usb/gadget/udc/atmel_usba_udc.c
1768
usba_int_enb_set(udc, USBA_DET_SUSPEND);
drivers/usb/gadget/udc/atmel_usba_udc.c
1772
usba_dma_irq(udc, &udc->usba_ep[i]);
drivers/usb/gadget/udc/atmel_usba_udc.c
1779
usba_int_enb_set(udc, USBA_DET_SUSPEND);
drivers/usb/gadget/udc/atmel_usba_udc.c
1781
for (i = 0; i < udc->num_ep; i++)
drivers/usb/gadget/udc/atmel_usba_udc.c
1783
if (ep_is_control(&udc->usba_ep[i]))
drivers/usb/gadget/udc/atmel_usba_udc.c
1784
usba_control_irq(udc, &udc->usba_ep[i]);
drivers/usb/gadget/udc/atmel_usba_udc.c
1786
usba_ep_irq(udc, &udc->usba_ep[i]);
drivers/usb/gadget/udc/atmel_usba_udc.c
1794
usba_writel(udc, INT_CLR,
drivers/usb/gadget/udc/atmel_usba_udc.c
1797
generate_bias_pulse(udc);
drivers/usb/gadget/udc/atmel_usba_udc.c
1798
reset_all_endpoints(udc);
drivers/usb/gadget/udc/atmel_usba_udc.c
1800
if (udc->gadget.speed != USB_SPEED_UNKNOWN && udc->driver) {
drivers/usb/gadget/udc/atmel_usba_udc.c
1801
udc->gadget.speed = USB_SPEED_UNKNOWN;
drivers/usb/gadget/udc/atmel_usba_udc.c
1802
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/atmel_usba_udc.c
1803
usb_gadget_udc_reset(&udc->gadget, udc->driver);
drivers/usb/gadget/udc/atmel_usba_udc.c
1804
spin_lock(&udc->lock);
drivers/usb/gadget/udc/atmel_usba_udc.c
1808
udc->gadget.speed = USB_SPEED_HIGH;
drivers/usb/gadget/udc/atmel_usba_udc.c
1810
udc->gadget.speed = USB_SPEED_FULL;
drivers/usb/gadget/udc/atmel_usba_udc.c
1812
usb_speed_string(udc->gadget.speed));
drivers/usb/gadget/udc/atmel_usba_udc.c
1814
ep0 = &udc->usba_ep[0];
drivers/usb/gadget/udc/atmel_usba_udc.c
1825
udc->suspended = false;
drivers/usb/gadget/udc/atmel_usba_udc.c
1826
usba_int_enb_clear(udc, USBA_WAKE_UP);
drivers/usb/gadget/udc/atmel_usba_udc.c
1828
usba_int_enb_set(udc, USBA_BF(EPT_INT, 1) |
drivers/usb/gadget/udc/atmel_usba_udc.c
1836
dev_err(&udc->pdev->dev,
drivers/usb/gadget/udc/atmel_usba_udc.c
1840
for (i = 1; i < udc->num_ep; i++) {
drivers/usb/gadget/udc/atmel_usba_udc.c
1841
ep = &udc->usba_ep[i];
drivers/usb/gadget/udc/atmel_usba_udc.c
1845
dev_err(&udc->pdev->dev,
drivers/usb/gadget/udc/atmel_usba_udc.c
1851
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/atmel_usba_udc.c
1856
static int start_clock(struct usba_udc *udc)
drivers/usb/gadget/udc/atmel_usba_udc.c
1860
if (udc->clocked)
drivers/usb/gadget/udc/atmel_usba_udc.c
1863
pm_stay_awake(&udc->pdev->dev);
drivers/usb/gadget/udc/atmel_usba_udc.c
1865
ret = clk_prepare_enable(udc->pclk);
drivers/usb/gadget/udc/atmel_usba_udc.c
1868
ret = clk_prepare_enable(udc->hclk);
drivers/usb/gadget/udc/atmel_usba_udc.c
1870
clk_disable_unprepare(udc->pclk);
drivers/usb/gadget/udc/atmel_usba_udc.c
1874
udc->clocked = true;
drivers/usb/gadget/udc/atmel_usba_udc.c
1878
static void stop_clock(struct usba_udc *udc)
drivers/usb/gadget/udc/atmel_usba_udc.c
1880
if (!udc->clocked)
drivers/usb/gadget/udc/atmel_usba_udc.c
1883
clk_disable_unprepare(udc->hclk);
drivers/usb/gadget/udc/atmel_usba_udc.c
1884
clk_disable_unprepare(udc->pclk);
drivers/usb/gadget/udc/atmel_usba_udc.c
1886
udc->clocked = false;
drivers/usb/gadget/udc/atmel_usba_udc.c
1888
pm_relax(&udc->pdev->dev);
drivers/usb/gadget/udc/atmel_usba_udc.c
1891
static int usba_start(struct usba_udc *udc)
drivers/usb/gadget/udc/atmel_usba_udc.c
1896
ret = start_clock(udc);
drivers/usb/gadget/udc/atmel_usba_udc.c
1900
if (udc->suspended)
drivers/usb/gadget/udc/atmel_usba_udc.c
1903
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/atmel_usba_udc.c
1904
toggle_bias(udc, 1);
drivers/usb/gadget/udc/atmel_usba_udc.c
1905
usba_writel(udc, CTRL, USBA_ENABLE_MASK);
drivers/usb/gadget/udc/atmel_usba_udc.c
1907
usba_writel(udc, INT_ENB, 0);
drivers/usb/gadget/udc/atmel_usba_udc.c
1908
udc->int_enb_cache = 0;
drivers/usb/gadget/udc/atmel_usba_udc.c
1909
usba_writel(udc, INT_CLR,
drivers/usb/gadget/udc/atmel_usba_udc.c
1913
usba_int_enb_set(udc, USBA_END_OF_RESET);
drivers/usb/gadget/udc/atmel_usba_udc.c
1914
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/atmel_usba_udc.c
1919
static void usba_stop(struct usba_udc *udc)
drivers/usb/gadget/udc/atmel_usba_udc.c
1923
if (udc->suspended)
drivers/usb/gadget/udc/atmel_usba_udc.c
1926
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/atmel_usba_udc.c
1927
udc->gadget.speed = USB_SPEED_UNKNOWN;
drivers/usb/gadget/udc/atmel_usba_udc.c
1928
reset_all_endpoints(udc);
drivers/usb/gadget/udc/atmel_usba_udc.c
1931
toggle_bias(udc, 0);
drivers/usb/gadget/udc/atmel_usba_udc.c
1932
usba_writel(udc, CTRL, USBA_DISABLE_MASK);
drivers/usb/gadget/udc/atmel_usba_udc.c
1933
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/atmel_usba_udc.c
1935
stop_clock(udc);
drivers/usb/gadget/udc/atmel_usba_udc.c
1940
struct usba_udc *udc = devid;
drivers/usb/gadget/udc/atmel_usba_udc.c
1946
mutex_lock(&udc->vbus_mutex);
drivers/usb/gadget/udc/atmel_usba_udc.c
1948
vbus = vbus_is_present(udc);
drivers/usb/gadget/udc/atmel_usba_udc.c
1949
if (vbus != udc->vbus_prev) {
drivers/usb/gadget/udc/atmel_usba_udc.c
1951
usba_start(udc);
drivers/usb/gadget/udc/atmel_usba_udc.c
1953
udc->suspended = false;
drivers/usb/gadget/udc/atmel_usba_udc.c
1954
if (udc->driver->disconnect)
drivers/usb/gadget/udc/atmel_usba_udc.c
1955
udc->driver->disconnect(&udc->gadget);
drivers/usb/gadget/udc/atmel_usba_udc.c
1957
usba_stop(udc);
drivers/usb/gadget/udc/atmel_usba_udc.c
1959
udc->vbus_prev = vbus;
drivers/usb/gadget/udc/atmel_usba_udc.c
1962
mutex_unlock(&udc->vbus_mutex);
drivers/usb/gadget/udc/atmel_usba_udc.c
1968
struct usba_udc *udc = container_of(gadget, struct usba_udc, gadget);
drivers/usb/gadget/udc/atmel_usba_udc.c
1972
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/atmel_usba_udc.c
1973
ctrl = usba_readl(udc, CTRL);
drivers/usb/gadget/udc/atmel_usba_udc.c
1978
usba_writel(udc, CTRL, ctrl);
drivers/usb/gadget/udc/atmel_usba_udc.c
1979
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/atmel_usba_udc.c
1988
struct usba_udc *udc = container_of(gadget, struct usba_udc, gadget);
drivers/usb/gadget/udc/atmel_usba_udc.c
1991
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/atmel_usba_udc.c
1992
udc->devstatus = 1 << USB_DEVICE_SELF_POWERED;
drivers/usb/gadget/udc/atmel_usba_udc.c
1993
udc->driver = driver;
drivers/usb/gadget/udc/atmel_usba_udc.c
1994
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/atmel_usba_udc.c
1996
mutex_lock(&udc->vbus_mutex);
drivers/usb/gadget/udc/atmel_usba_udc.c
1998
if (udc->vbus_pin)
drivers/usb/gadget/udc/atmel_usba_udc.c
1999
enable_irq(gpiod_to_irq(udc->vbus_pin));
drivers/usb/gadget/udc/atmel_usba_udc.c
2002
udc->vbus_prev = vbus_is_present(udc);
drivers/usb/gadget/udc/atmel_usba_udc.c
2003
if (udc->vbus_prev) {
drivers/usb/gadget/udc/atmel_usba_udc.c
2004
ret = usba_start(udc);
drivers/usb/gadget/udc/atmel_usba_udc.c
2009
mutex_unlock(&udc->vbus_mutex);
drivers/usb/gadget/udc/atmel_usba_udc.c
2013
if (udc->vbus_pin)
drivers/usb/gadget/udc/atmel_usba_udc.c
2014
disable_irq(gpiod_to_irq(udc->vbus_pin));
drivers/usb/gadget/udc/atmel_usba_udc.c
2016
mutex_unlock(&udc->vbus_mutex);
drivers/usb/gadget/udc/atmel_usba_udc.c
2018
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/atmel_usba_udc.c
2019
udc->devstatus &= ~(1 << USB_DEVICE_SELF_POWERED);
drivers/usb/gadget/udc/atmel_usba_udc.c
202
static void usba_ep_init_debugfs(struct usba_udc *udc,
drivers/usb/gadget/udc/atmel_usba_udc.c
2020
udc->driver = NULL;
drivers/usb/gadget/udc/atmel_usba_udc.c
2021
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/atmel_usba_udc.c
2027
struct usba_udc *udc = container_of(gadget, struct usba_udc, gadget);
drivers/usb/gadget/udc/atmel_usba_udc.c
2029
if (udc->vbus_pin)
drivers/usb/gadget/udc/atmel_usba_udc.c
2030
disable_irq(gpiod_to_irq(udc->vbus_pin));
drivers/usb/gadget/udc/atmel_usba_udc.c
2032
udc->suspended = false;
drivers/usb/gadget/udc/atmel_usba_udc.c
2033
usba_stop(udc);
drivers/usb/gadget/udc/atmel_usba_udc.c
2035
udc->driver = NULL;
drivers/usb/gadget/udc/atmel_usba_udc.c
2040
static void at91sam9rl_toggle_bias(struct usba_udc *udc, int is_on)
drivers/usb/gadget/udc/atmel_usba_udc.c
2042
regmap_update_bits(udc->pmc, AT91_CKGR_UCKR, AT91_PMC_BIASEN,
drivers/usb/gadget/udc/atmel_usba_udc.c
2046
static void at91sam9g45_pulse_bias(struct usba_udc *udc)
drivers/usb/gadget/udc/atmel_usba_udc.c
2048
regmap_update_bits(udc->pmc, AT91_CKGR_UCKR, AT91_PMC_BIASEN, 0);
drivers/usb/gadget/udc/atmel_usba_udc.c
2049
regmap_update_bits(udc->pmc, AT91_CKGR_UCKR, AT91_PMC_BIASEN,
drivers/usb/gadget/udc/atmel_usba_udc.c
207
ep_root = debugfs_create_dir(ep->ep.name, udc->debugfs_root);
drivers/usb/gadget/udc/atmel_usba_udc.c
2134
struct usba_udc *udc)
drivers/usb/gadget/udc/atmel_usba_udc.c
2148
udc->ep_prealloc = udc_config->ep_prealloc;
drivers/usb/gadget/udc/atmel_usba_udc.c
2149
udc->errata = udc_config->errata;
drivers/usb/gadget/udc/atmel_usba_udc.c
2150
if (udc->errata) {
drivers/usb/gadget/udc/atmel_usba_udc.c
2156
udc->pmc = syscon_node_to_regmap(pp);
drivers/usb/gadget/udc/atmel_usba_udc.c
2158
if (IS_ERR(udc->pmc))
drivers/usb/gadget/udc/atmel_usba_udc.c
2159
return ERR_CAST(udc->pmc);
drivers/usb/gadget/udc/atmel_usba_udc.c
2162
udc->num_ep = 0;
drivers/usb/gadget/udc/atmel_usba_udc.c
2164
udc->vbus_pin = devm_gpiod_get_optional(&pdev->dev, "atmel,vbus",
drivers/usb/gadget/udc/atmel_usba_udc.c
2166
if (IS_ERR(udc->vbus_pin))
drivers/usb/gadget/udc/atmel_usba_udc.c
2167
return ERR_CAST(udc->vbus_pin);
drivers/usb/gadget/udc/atmel_usba_udc.c
2170
udc->num_ep = udc_config->num_ep;
drivers/usb/gadget/udc/atmel_usba_udc.c
2172
udc->num_ep = usba_config_fifo_table(udc);
drivers/usb/gadget/udc/atmel_usba_udc.c
2175
eps = devm_kcalloc(&pdev->dev, udc->num_ep, sizeof(struct usba_ep),
drivers/usb/gadget/udc/atmel_usba_udc.c
2180
udc->gadget.ep0 = &eps[0].ep;
drivers/usb/gadget/udc/atmel_usba_udc.c
2185
while (i < udc->num_ep) {
drivers/usb/gadget/udc/atmel_usba_udc.c
2190
ep->index = fifo_mode ? udc->fifo_cfg[i].hw_ep_num : i;
drivers/usb/gadget/udc/atmel_usba_udc.c
2199
if (ep->fifo_size < udc->fifo_cfg[i].fifo_size)
drivers/usb/gadget/udc/atmel_usba_udc.c
2203
ep->fifo_size = udc->fifo_cfg[i].fifo_size;
drivers/usb/gadget/udc/atmel_usba_udc.c
2208
if (ep->nr_banks < udc->fifo_cfg[i].nr_banks)
drivers/usb/gadget/udc/atmel_usba_udc.c
2212
ep->nr_banks = udc->fifo_cfg[i].nr_banks;
drivers/usb/gadget/udc/atmel_usba_udc.c
2221
ep->ep_regs = udc->regs + USBA_EPT_BASE(i);
drivers/usb/gadget/udc/atmel_usba_udc.c
2222
ep->dma_regs = udc->regs + USBA_DMA_BASE(i);
drivers/usb/gadget/udc/atmel_usba_udc.c
2223
ep->fifo = udc->fifo + USBA_FIFO_BASE(i);
drivers/usb/gadget/udc/atmel_usba_udc.c
2226
ep->udc = udc;
drivers/usb/gadget/udc/atmel_usba_udc.c
223
static void usba_init_debugfs(struct usba_udc *udc)
drivers/usb/gadget/udc/atmel_usba_udc.c
2256
list_add_tail(&ep->ep.ep_list, &udc->gadget.ep_list);
drivers/usb/gadget/udc/atmel_usba_udc.c
2276
struct usba_udc *udc;
drivers/usb/gadget/udc/atmel_usba_udc.c
2279
udc = devm_kzalloc(&pdev->dev, sizeof(*udc), GFP_KERNEL);
drivers/usb/gadget/udc/atmel_usba_udc.c
228
root = debugfs_create_dir(udc->gadget.name, usb_debug_root);
drivers/usb/gadget/udc/atmel_usba_udc.c
2280
if (!udc)
drivers/usb/gadget/udc/atmel_usba_udc.c
2283
udc->gadget = usba_gadget_template;
drivers/usb/gadget/udc/atmel_usba_udc.c
2284
INIT_LIST_HEAD(&udc->gadget.ep_list);
drivers/usb/gadget/udc/atmel_usba_udc.c
2286
udc->regs = devm_platform_get_and_ioremap_resource(pdev, CTRL_IOMEM_ID, &res);
drivers/usb/gadget/udc/atmel_usba_udc.c
2287
if (IS_ERR(udc->regs))
drivers/usb/gadget/udc/atmel_usba_udc.c
2288
return PTR_ERR(udc->regs);
drivers/usb/gadget/udc/atmel_usba_udc.c
229
udc->debugfs_root = root;
drivers/usb/gadget/udc/atmel_usba_udc.c
2290
res, udc->regs);
drivers/usb/gadget/udc/atmel_usba_udc.c
2292
udc->fifo = devm_platform_get_and_ioremap_resource(pdev, FIFO_IOMEM_ID, &res);
drivers/usb/gadget/udc/atmel_usba_udc.c
2293
if (IS_ERR(udc->fifo))
drivers/usb/gadget/udc/atmel_usba_udc.c
2294
return PTR_ERR(udc->fifo);
drivers/usb/gadget/udc/atmel_usba_udc.c
2295
dev_info(&pdev->dev, "FIFO at %pR mapped at %p\n", res, udc->fifo);
drivers/usb/gadget/udc/atmel_usba_udc.c
2308
spin_lock_init(&udc->lock);
drivers/usb/gadget/udc/atmel_usba_udc.c
2309
mutex_init(&udc->vbus_mutex);
drivers/usb/gadget/udc/atmel_usba_udc.c
231
regs_resource = platform_get_resource(udc->pdev, IORESOURCE_MEM,
drivers/usb/gadget/udc/atmel_usba_udc.c
2310
udc->pdev = pdev;
drivers/usb/gadget/udc/atmel_usba_udc.c
2311
udc->pclk = pclk;
drivers/usb/gadget/udc/atmel_usba_udc.c
2312
udc->hclk = hclk;
drivers/usb/gadget/udc/atmel_usba_udc.c
2314
platform_set_drvdata(pdev, udc);
drivers/usb/gadget/udc/atmel_usba_udc.c
2323
usba_writel(udc, CTRL, USBA_DISABLE_MASK);
drivers/usb/gadget/udc/atmel_usba_udc.c
2326
udc->usba_ep = atmel_udc_of_init(pdev, udc);
drivers/usb/gadget/udc/atmel_usba_udc.c
2328
toggle_bias(udc, 0);
drivers/usb/gadget/udc/atmel_usba_udc.c
2330
if (IS_ERR(udc->usba_ep))
drivers/usb/gadget/udc/atmel_usba_udc.c
2331
return PTR_ERR(udc->usba_ep);
drivers/usb/gadget/udc/atmel_usba_udc.c
2334
"atmel_usba_udc", udc);
drivers/usb/gadget/udc/atmel_usba_udc.c
2340
udc->irq = irq;
drivers/usb/gadget/udc/atmel_usba_udc.c
2342
if (udc->vbus_pin) {
drivers/usb/gadget/udc/atmel_usba_udc.c
2343
irq_set_status_flags(gpiod_to_irq(udc->vbus_pin), IRQ_NOAUTOEN);
drivers/usb/gadget/udc/atmel_usba_udc.c
2345
gpiod_to_irq(udc->vbus_pin), NULL,
drivers/usb/gadget/udc/atmel_usba_udc.c
2347
"atmel_usba_udc", udc);
drivers/usb/gadget/udc/atmel_usba_udc.c
2349
udc->vbus_pin = NULL;
drivers/usb/gadget/udc/atmel_usba_udc.c
235
debugfs_create_file_size("regs", 0400, root, udc,
drivers/usb/gadget/udc/atmel_usba_udc.c
2350
dev_warn(&udc->pdev->dev,
drivers/usb/gadget/udc/atmel_usba_udc.c
2356
ret = usb_add_gadget_udc(&pdev->dev, &udc->gadget);
drivers/usb/gadget/udc/atmel_usba_udc.c
2361
usba_init_debugfs(udc);
drivers/usb/gadget/udc/atmel_usba_udc.c
2362
for (i = 1; i < udc->num_ep; i++)
drivers/usb/gadget/udc/atmel_usba_udc.c
2363
usba_ep_init_debugfs(udc, &udc->usba_ep[i]);
drivers/usb/gadget/udc/atmel_usba_udc.c
2370
struct usba_udc *udc;
drivers/usb/gadget/udc/atmel_usba_udc.c
2373
udc = platform_get_drvdata(pdev);
drivers/usb/gadget/udc/atmel_usba_udc.c
2376
usb_del_gadget_udc(&udc->gadget);
drivers/usb/gadget/udc/atmel_usba_udc.c
2378
for (i = 1; i < udc->num_ep; i++)
drivers/usb/gadget/udc/atmel_usba_udc.c
2379
usba_ep_cleanup_debugfs(&udc->usba_ep[i]);
drivers/usb/gadget/udc/atmel_usba_udc.c
2380
usba_cleanup_debugfs(udc);
drivers/usb/gadget/udc/atmel_usba_udc.c
2386
struct usba_udc *udc = dev_get_drvdata(dev);
drivers/usb/gadget/udc/atmel_usba_udc.c
2389
if (!udc->driver)
drivers/usb/gadget/udc/atmel_usba_udc.c
2392
mutex_lock(&udc->vbus_mutex);
drivers/usb/gadget/udc/atmel_usba_udc.c
2395
udc->suspended = false;
drivers/usb/gadget/udc/atmel_usba_udc.c
2396
usba_stop(udc);
drivers/usb/gadget/udc/atmel_usba_udc.c
240
usba_ep_init_debugfs(udc, to_usba_ep(udc->gadget.ep0));
drivers/usb/gadget/udc/atmel_usba_udc.c
2404
if (udc->vbus_pin) {
drivers/usb/gadget/udc/atmel_usba_udc.c
2406
usba_stop(udc);
drivers/usb/gadget/udc/atmel_usba_udc.c
2407
enable_irq_wake(gpiod_to_irq(udc->vbus_pin));
drivers/usb/gadget/udc/atmel_usba_udc.c
2410
enable_irq_wake(udc->irq);
drivers/usb/gadget/udc/atmel_usba_udc.c
2413
mutex_unlock(&udc->vbus_mutex);
drivers/usb/gadget/udc/atmel_usba_udc.c
2419
struct usba_udc *udc = dev_get_drvdata(dev);
drivers/usb/gadget/udc/atmel_usba_udc.c
2422
if (!udc->driver)
drivers/usb/gadget/udc/atmel_usba_udc.c
2426
if (udc->vbus_pin)
drivers/usb/gadget/udc/atmel_usba_udc.c
2427
disable_irq_wake(gpiod_to_irq(udc->vbus_pin));
drivers/usb/gadget/udc/atmel_usba_udc.c
2429
disable_irq_wake(udc->irq);
drivers/usb/gadget/udc/atmel_usba_udc.c
243
static void usba_cleanup_debugfs(struct usba_udc *udc)
drivers/usb/gadget/udc/atmel_usba_udc.c
2433
mutex_lock(&udc->vbus_mutex);
drivers/usb/gadget/udc/atmel_usba_udc.c
2434
udc->vbus_prev = vbus_is_present(udc);
drivers/usb/gadget/udc/atmel_usba_udc.c
2435
if (udc->vbus_prev)
drivers/usb/gadget/udc/atmel_usba_udc.c
2436
usba_start(udc);
drivers/usb/gadget/udc/atmel_usba_udc.c
2437
mutex_unlock(&udc->vbus_mutex);
drivers/usb/gadget/udc/atmel_usba_udc.c
245
usba_ep_cleanup_debugfs(to_usba_ep(udc->gadget.ep0));
drivers/usb/gadget/udc/atmel_usba_udc.c
246
debugfs_remove_recursive(udc->debugfs_root);
drivers/usb/gadget/udc/atmel_usba_udc.c
249
static inline void usba_ep_init_debugfs(struct usba_udc *udc,
drivers/usb/gadget/udc/atmel_usba_udc.c
260
static inline void usba_init_debugfs(struct usba_udc *udc)
drivers/usb/gadget/udc/atmel_usba_udc.c
265
static inline void usba_cleanup_debugfs(struct usba_udc *udc)
drivers/usb/gadget/udc/atmel_usba_udc.c
322
static int usba_config_fifo_table(struct usba_udc *udc)
drivers/usb/gadget/udc/atmel_usba_udc.c
331
udc->fifo_cfg = NULL;
drivers/usb/gadget/udc/atmel_usba_udc.c
335
udc->fifo_cfg = mode_1_cfg;
drivers/usb/gadget/udc/atmel_usba_udc.c
339
udc->fifo_cfg = mode_2_cfg;
drivers/usb/gadget/udc/atmel_usba_udc.c
343
udc->fifo_cfg = mode_3_cfg;
drivers/usb/gadget/udc/atmel_usba_udc.c
347
udc->fifo_cfg = mode_4_cfg;
drivers/usb/gadget/udc/atmel_usba_udc.c
356
static inline u32 usba_int_enb_get(struct usba_udc *udc)
drivers/usb/gadget/udc/atmel_usba_udc.c
358
return udc->int_enb_cache;
drivers/usb/gadget/udc/atmel_usba_udc.c
361
static inline void usba_int_enb_set(struct usba_udc *udc, u32 mask)
drivers/usb/gadget/udc/atmel_usba_udc.c
365
val = udc->int_enb_cache | mask;
drivers/usb/gadget/udc/atmel_usba_udc.c
366
usba_writel(udc, INT_ENB, val);
drivers/usb/gadget/udc/atmel_usba_udc.c
367
udc->int_enb_cache = val;
drivers/usb/gadget/udc/atmel_usba_udc.c
370
static inline void usba_int_enb_clear(struct usba_udc *udc, u32 mask)
drivers/usb/gadget/udc/atmel_usba_udc.c
374
val = udc->int_enb_cache & ~mask;
drivers/usb/gadget/udc/atmel_usba_udc.c
375
usba_writel(udc, INT_ENB, val);
drivers/usb/gadget/udc/atmel_usba_udc.c
376
udc->int_enb_cache = val;
drivers/usb/gadget/udc/atmel_usba_udc.c
379
static int vbus_is_present(struct usba_udc *udc)
drivers/usb/gadget/udc/atmel_usba_udc.c
381
if (udc->vbus_pin)
drivers/usb/gadget/udc/atmel_usba_udc.c
382
return gpiod_get_value(udc->vbus_pin);
drivers/usb/gadget/udc/atmel_usba_udc.c
388
static void toggle_bias(struct usba_udc *udc, int is_on)
drivers/usb/gadget/udc/atmel_usba_udc.c
390
if (udc->errata && udc->errata->toggle_bias)
drivers/usb/gadget/udc/atmel_usba_udc.c
391
udc->errata->toggle_bias(udc, is_on);
drivers/usb/gadget/udc/atmel_usba_udc.c
394
static void generate_bias_pulse(struct usba_udc *udc)
drivers/usb/gadget/udc/atmel_usba_udc.c
396
if (!udc->bias_pulse_needed)
drivers/usb/gadget/udc/atmel_usba_udc.c
399
if (udc->errata && udc->errata->pulse_bias)
drivers/usb/gadget/udc/atmel_usba_udc.c
400
udc->errata->pulse_bias(udc);
drivers/usb/gadget/udc/atmel_usba_udc.c
402
udc->bias_pulse_needed = false;
drivers/usb/gadget/udc/atmel_usba_udc.c
475
static void send_status(struct usba_udc *udc, struct usba_ep *ep)
drivers/usb/gadget/udc/atmel_usba_udc.c
48
spin_lock_irq(&ep->udc->lock);
drivers/usb/gadget/udc/atmel_usba_udc.c
484
struct usba_udc *udc = ep->udc;
drivers/usb/gadget/udc/atmel_usba_udc.c
523
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/atmel_usba_udc.c
525
spin_lock(&udc->lock);
drivers/usb/gadget/udc/atmel_usba_udc.c
532
send_status(udc, ep);
drivers/usb/gadget/udc/atmel_usba_udc.c
541
struct usba_udc *udc = ep->udc;
drivers/usb/gadget/udc/atmel_usba_udc.c
549
usb_gadget_unmap_request(&udc->gadget, &req->req, ep->is_in);
drivers/usb/gadget/udc/atmel_usba_udc.c
55
spin_unlock_irq(&ep->udc->lock);
drivers/usb/gadget/udc/atmel_usba_udc.c
555
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/atmel_usba_udc.c
557
spin_lock(&udc->lock);
drivers/usb/gadget/udc/atmel_usba_udc.c
575
struct usba_udc *udc = ep->udc;
drivers/usb/gadget/udc/atmel_usba_udc.c
61
spin_unlock_irq(&ep->udc->lock);
drivers/usb/gadget/udc/atmel_usba_udc.c
635
spin_lock_irqsave(&ep->udc->lock, flags);
drivers/usb/gadget/udc/atmel_usba_udc.c
646
usba_int_enb_set(udc, USBA_BF(EPT_INT, 1 << ep->index) |
drivers/usb/gadget/udc/atmel_usba_udc.c
651
usba_int_enb_set(udc, USBA_BF(EPT_INT, 1 << ep->index));
drivers/usb/gadget/udc/atmel_usba_udc.c
654
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/atmel_usba_udc.c
659
(unsigned long)usba_int_enb_get(udc));
drivers/usb/gadget/udc/atmel_usba_udc.c
667
struct usba_udc *udc = ep->udc;
drivers/usb/gadget/udc/atmel_usba_udc.c
673
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/atmel_usba_udc.c
676
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/atmel_usba_udc.c
689
usba_int_enb_clear(udc, USBA_BF(EPT_INT, 1 << ep->index));
drivers/usb/gadget/udc/atmel_usba_udc.c
693
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/atmel_usba_udc.c
724
static int queue_dma(struct usba_udc *udc, struct usba_ep *ep,
drivers/usb/gadget/udc/atmel_usba_udc.c
742
ret = usb_gadget_map_request(&udc->gadget, &req->req, ep->is_in);
drivers/usb/gadget/udc/atmel_usba_udc.c
760
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/atmel_usba_udc.c
768
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/atmel_usba_udc.c
778
struct usba_udc *udc = ep->udc;
drivers/usb/gadget/udc/atmel_usba_udc.c
785
if (!udc->driver || udc->gadget.speed == USB_SPEED_UNKNOWN ||
drivers/usb/gadget/udc/atmel_usba_udc.c
797
return queue_dma(udc, ep, req, gfp_flags);
drivers/usb/gadget/udc/atmel_usba_udc.c
801
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/atmel_usba_udc.c
814
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/atmel_usba_udc.c
848
dev_err(&ep->udc->pdev->dev,
drivers/usb/gadget/udc/atmel_usba_udc.c
860
struct usba_udc *udc = ep->udc;
drivers/usb/gadget/udc/atmel_usba_udc.c
869
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/atmel_usba_udc.c
879
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/atmel_usba_udc.c
897
usba_writel(udc, EPT_RST, 1 << ep->index);
drivers/usb/gadget/udc/atmel_usba_udc.c
913
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/atmel_usba_udc.c
921
struct usba_udc *udc = ep->udc;
drivers/usb/gadget/udc/atmel_usba_udc.c
939
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/atmel_usba_udc.c
958
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/atmel_usba_udc.c
973
struct usba_udc *udc = ep->udc;
drivers/usb/gadget/udc/atmel_usba_udc.c
975
usba_writel(udc, EPT_RST, 1 << ep->index);
drivers/usb/gadget/udc/atmel_usba_udc.c
992
struct usba_udc *udc = to_usba_udc(gadget);
drivers/usb/gadget/udc/atmel_usba_udc.c
994
return USBA_BFEXT(FRAME_NUMBER, usba_readl(udc, FNUM));
drivers/usb/gadget/udc/atmel_usba_udc.c
999
struct usba_udc *udc = to_usba_udc(gadget);
drivers/usb/gadget/udc/atmel_usba_udc.h
188
#define usba_readl(udc, reg) \
drivers/usb/gadget/udc/atmel_usba_udc.h
189
readl_relaxed((udc)->regs + USBA_##reg)
drivers/usb/gadget/udc/atmel_usba_udc.h
190
#define usba_writel(udc, reg, value) \
drivers/usb/gadget/udc/atmel_usba_udc.h
191
writel_relaxed((value), (udc)->regs + USBA_##reg)
drivers/usb/gadget/udc/atmel_usba_udc.h
275
struct usba_udc *udc;
drivers/usb/gadget/udc/atmel_usba_udc.h
312
void (*toggle_bias)(struct usba_udc *udc, int is_on);
drivers/usb/gadget/udc/atmel_usba_udc.h
313
void (*pulse_bias)(struct usba_udc *udc);
drivers/usb/gadget/udc/bcm63xx_udc.c
1000
usbd_writel(udc, val, USBD_STRAPS_REG);
drivers/usb/gadget/udc/bcm63xx_udc.c
1002
bcm63xx_set_ctrl_irqs(udc, false);
drivers/usb/gadget/udc/bcm63xx_udc.c
1004
usbd_writel(udc, 0, USBD_EVENT_IRQ_CFG_LO_REG);
drivers/usb/gadget/udc/bcm63xx_udc.c
1008
usbd_writel(udc, val, USBD_EVENT_IRQ_CFG_HI_REG);
drivers/usb/gadget/udc/bcm63xx_udc.c
1010
rc = iudma_init(udc);
drivers/usb/gadget/udc/bcm63xx_udc.c
1011
set_clocks(udc, false);
drivers/usb/gadget/udc/bcm63xx_udc.c
1013
bcm63xx_uninit_udc_hw(udc);
drivers/usb/gadget/udc/bcm63xx_udc.c
1034
struct bcm63xx_udc *udc = bep->udc;
drivers/usb/gadget/udc/bcm63xx_udc.c
1041
if (!udc->driver)
drivers/usb/gadget/udc/bcm63xx_udc.c
1044
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/bcm63xx_udc.c
1046
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/bcm63xx_udc.c
1053
iudma_reset_channel(udc, iudma);
drivers/usb/gadget/udc/bcm63xx_udc.c
1056
bcm63xx_set_stall(udc, bep, false);
drivers/usb/gadget/udc/bcm63xx_udc.c
1057
clear_bit(bep->ep_num, &udc->wedgemap);
drivers/usb/gadget/udc/bcm63xx_udc.c
1062
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/bcm63xx_udc.c
1073
struct bcm63xx_udc *udc = bep->udc;
drivers/usb/gadget/udc/bcm63xx_udc.c
1081
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/bcm63xx_udc.c
1083
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/bcm63xx_udc.c
1088
iudma_reset_channel(udc, iudma);
drivers/usb/gadget/udc/bcm63xx_udc.c
1092
usb_gadget_unmap_request(&udc->gadget, &breq->req,
drivers/usb/gadget/udc/bcm63xx_udc.c
1097
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/bcm63xx_udc.c
1099
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/bcm63xx_udc.c
1104
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/bcm63xx_udc.c
1154
struct bcm63xx_udc *udc = bep->udc;
drivers/usb/gadget/udc/bcm63xx_udc.c
1166
if (bep == &udc->bep[0]) {
drivers/usb/gadget/udc/bcm63xx_udc.c
1168
if (udc->ep0_reply)
drivers/usb/gadget/udc/bcm63xx_udc.c
1171
udc->ep0_reply = req;
drivers/usb/gadget/udc/bcm63xx_udc.c
1172
schedule_work(&udc->ep0_wq);
drivers/usb/gadget/udc/bcm63xx_udc.c
1176
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/bcm63xx_udc.c
1182
rc = usb_gadget_map_request(&udc->gadget, req, bep->iudma->is_tx);
drivers/usb/gadget/udc/bcm63xx_udc.c
1186
iudma_write(udc, bep->iudma, breq);
drivers/usb/gadget/udc/bcm63xx_udc.c
1190
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/bcm63xx_udc.c
1206
struct bcm63xx_udc *udc = bep->udc;
drivers/usb/gadget/udc/bcm63xx_udc.c
1211
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/bcm63xx_udc.c
1218
usb_gadget_unmap_request(&udc->gadget, &breq->req, bep->iudma->is_tx);
drivers/usb/gadget/udc/bcm63xx_udc.c
1221
iudma_reset_channel(udc, bep->iudma);
drivers/usb/gadget/udc/bcm63xx_udc.c
1229
iudma_write(udc, bep->iudma, next);
drivers/usb/gadget/udc/bcm63xx_udc.c
1236
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/bcm63xx_udc.c
1254
struct bcm63xx_udc *udc = bep->udc;
drivers/usb/gadget/udc/bcm63xx_udc.c
1257
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/bcm63xx_udc.c
1258
bcm63xx_set_stall(udc, bep, !!value);
drivers/usb/gadget/udc/bcm63xx_udc.c
1260
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/bcm63xx_udc.c
1274
struct bcm63xx_udc *udc = bep->udc;
drivers/usb/gadget/udc/bcm63xx_udc.c
1277
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/bcm63xx_udc.c
1278
set_bit(bep->ep_num, &udc->wedgemap);
drivers/usb/gadget/udc/bcm63xx_udc.c
1279
bcm63xx_set_stall(udc, bep, true);
drivers/usb/gadget/udc/bcm63xx_udc.c
1280
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/bcm63xx_udc.c
1308
static int bcm63xx_ep0_setup_callback(struct bcm63xx_udc *udc,
drivers/usb/gadget/udc/bcm63xx_udc.c
1313
spin_unlock_irq(&udc->lock);
drivers/usb/gadget/udc/bcm63xx_udc.c
1314
rc = udc->driver->setup(&udc->gadget, ctrl);
drivers/usb/gadget/udc/bcm63xx_udc.c
1315
spin_lock_irq(&udc->lock);
drivers/usb/gadget/udc/bcm63xx_udc.c
1331
static int bcm63xx_ep0_spoof_set_cfg(struct bcm63xx_udc *udc)
drivers/usb/gadget/udc/bcm63xx_udc.c
1338
ctrl.wValue = cpu_to_le16(udc->cfg);
drivers/usb/gadget/udc/bcm63xx_udc.c
1342
rc = bcm63xx_ep0_setup_callback(udc, &ctrl);
drivers/usb/gadget/udc/bcm63xx_udc.c
1344
dev_warn_ratelimited(udc->dev,
drivers/usb/gadget/udc/bcm63xx_udc.c
1346
udc->cfg);
drivers/usb/gadget/udc/bcm63xx_udc.c
1355
static int bcm63xx_ep0_spoof_set_iface(struct bcm63xx_udc *udc)
drivers/usb/gadget/udc/bcm63xx_udc.c
1362
ctrl.wValue = cpu_to_le16(udc->alt_iface);
drivers/usb/gadget/udc/bcm63xx_udc.c
1363
ctrl.wIndex = cpu_to_le16(udc->iface);
drivers/usb/gadget/udc/bcm63xx_udc.c
1366
rc = bcm63xx_ep0_setup_callback(udc, &ctrl);
drivers/usb/gadget/udc/bcm63xx_udc.c
1368
dev_warn_ratelimited(udc->dev,
drivers/usb/gadget/udc/bcm63xx_udc.c
1370
udc->iface, udc->alt_iface);
drivers/usb/gadget/udc/bcm63xx_udc.c
1381
static void bcm63xx_ep0_map_write(struct bcm63xx_udc *udc, int ch_idx,
drivers/usb/gadget/udc/bcm63xx_udc.c
1385
struct iudma_ch *iudma = &udc->iudma[ch_idx];
drivers/usb/gadget/udc/bcm63xx_udc.c
1387
BUG_ON(udc->ep0_request);
drivers/usb/gadget/udc/bcm63xx_udc.c
1388
udc->ep0_request = req;
drivers/usb/gadget/udc/bcm63xx_udc.c
1392
usb_gadget_map_request(&udc->gadget, req, iudma->is_tx);
drivers/usb/gadget/udc/bcm63xx_udc.c
1393
iudma_write(udc, iudma, breq);
drivers/usb/gadget/udc/bcm63xx_udc.c
1402
static void bcm63xx_ep0_complete(struct bcm63xx_udc *udc,
drivers/usb/gadget/udc/bcm63xx_udc.c
1409
spin_unlock_irq(&udc->lock);
drivers/usb/gadget/udc/bcm63xx_udc.c
1410
req->complete(&udc->bep[0].ep, req);
drivers/usb/gadget/udc/bcm63xx_udc.c
1411
spin_lock_irq(&udc->lock);
drivers/usb/gadget/udc/bcm63xx_udc.c
1421
static void bcm63xx_ep0_nuke_reply(struct bcm63xx_udc *udc, int is_tx)
drivers/usb/gadget/udc/bcm63xx_udc.c
1423
struct usb_request *req = udc->ep0_reply;
drivers/usb/gadget/udc/bcm63xx_udc.c
1425
udc->ep0_reply = NULL;
drivers/usb/gadget/udc/bcm63xx_udc.c
1426
usb_gadget_unmap_request(&udc->gadget, req, is_tx);
drivers/usb/gadget/udc/bcm63xx_udc.c
1427
if (udc->ep0_request == req) {
drivers/usb/gadget/udc/bcm63xx_udc.c
1428
udc->ep0_req_completed = 0;
drivers/usb/gadget/udc/bcm63xx_udc.c
1429
udc->ep0_request = NULL;
drivers/usb/gadget/udc/bcm63xx_udc.c
1431
bcm63xx_ep0_complete(udc, req, -ESHUTDOWN);
drivers/usb/gadget/udc/bcm63xx_udc.c
1439
static int bcm63xx_ep0_read_complete(struct bcm63xx_udc *udc)
drivers/usb/gadget/udc/bcm63xx_udc.c
1441
struct usb_request *req = udc->ep0_request;
drivers/usb/gadget/udc/bcm63xx_udc.c
1443
udc->ep0_req_completed = 0;
drivers/usb/gadget/udc/bcm63xx_udc.c
1444
udc->ep0_request = NULL;
drivers/usb/gadget/udc/bcm63xx_udc.c
1458
static void bcm63xx_ep0_internal_request(struct bcm63xx_udc *udc, int ch_idx,
drivers/usb/gadget/udc/bcm63xx_udc.c
1461
struct usb_request *req = &udc->ep0_ctrl_req.req;
drivers/usb/gadget/udc/bcm63xx_udc.c
1463
req->buf = udc->ep0_ctrl_buf;
drivers/usb/gadget/udc/bcm63xx_udc.c
1467
bcm63xx_ep0_map_write(udc, ch_idx, req);
drivers/usb/gadget/udc/bcm63xx_udc.c
1478
static enum bcm63xx_ep0_state bcm63xx_ep0_do_setup(struct bcm63xx_udc *udc)
drivers/usb/gadget/udc/bcm63xx_udc.c
1481
struct usb_ctrlrequest *ctrl = (void *)udc->ep0_ctrl_buf;
drivers/usb/gadget/udc/bcm63xx_udc.c
1483
rc = bcm63xx_ep0_read_complete(udc);
drivers/usb/gadget/udc/bcm63xx_udc.c
1486
dev_err(udc->dev, "missing SETUP packet\n");
drivers/usb/gadget/udc/bcm63xx_udc.c
1500
dev_warn_ratelimited(udc->dev,
drivers/usb/gadget/udc/bcm63xx_udc.c
1506
rc = bcm63xx_ep0_setup_callback(udc, ctrl);
drivers/usb/gadget/udc/bcm63xx_udc.c
1508
bcm63xx_set_stall(udc, &udc->bep[0], true);
drivers/usb/gadget/udc/bcm63xx_udc.c
1531
static int bcm63xx_ep0_do_idle(struct bcm63xx_udc *udc)
drivers/usb/gadget/udc/bcm63xx_udc.c
1533
if (udc->ep0_req_reset) {
drivers/usb/gadget/udc/bcm63xx_udc.c
1534
udc->ep0_req_reset = 0;
drivers/usb/gadget/udc/bcm63xx_udc.c
1535
} else if (udc->ep0_req_set_cfg) {
drivers/usb/gadget/udc/bcm63xx_udc.c
1536
udc->ep0_req_set_cfg = 0;
drivers/usb/gadget/udc/bcm63xx_udc.c
1537
if (bcm63xx_ep0_spoof_set_cfg(udc) >= 0)
drivers/usb/gadget/udc/bcm63xx_udc.c
1538
udc->ep0state = EP0_IN_FAKE_STATUS_PHASE;
drivers/usb/gadget/udc/bcm63xx_udc.c
1539
} else if (udc->ep0_req_set_iface) {
drivers/usb/gadget/udc/bcm63xx_udc.c
1540
udc->ep0_req_set_iface = 0;
drivers/usb/gadget/udc/bcm63xx_udc.c
1541
if (bcm63xx_ep0_spoof_set_iface(udc) >= 0)
drivers/usb/gadget/udc/bcm63xx_udc.c
1542
udc->ep0state = EP0_IN_FAKE_STATUS_PHASE;
drivers/usb/gadget/udc/bcm63xx_udc.c
1543
} else if (udc->ep0_req_completed) {
drivers/usb/gadget/udc/bcm63xx_udc.c
1544
udc->ep0state = bcm63xx_ep0_do_setup(udc);
drivers/usb/gadget/udc/bcm63xx_udc.c
1545
return udc->ep0state == EP0_IDLE ? -EAGAIN : 0;
drivers/usb/gadget/udc/bcm63xx_udc.c
1546
} else if (udc->ep0_req_shutdown) {
drivers/usb/gadget/udc/bcm63xx_udc.c
1547
udc->ep0_req_shutdown = 0;
drivers/usb/gadget/udc/bcm63xx_udc.c
1548
udc->ep0_req_completed = 0;
drivers/usb/gadget/udc/bcm63xx_udc.c
1549
udc->ep0_request = NULL;
drivers/usb/gadget/udc/bcm63xx_udc.c
1550
iudma_reset_channel(udc, &udc->iudma[IUDMA_EP0_RXCHAN]);
drivers/usb/gadget/udc/bcm63xx_udc.c
1551
usb_gadget_unmap_request(&udc->gadget,
drivers/usb/gadget/udc/bcm63xx_udc.c
1552
&udc->ep0_ctrl_req.req, 0);
drivers/usb/gadget/udc/bcm63xx_udc.c
1556
udc->ep0state = EP0_SHUTDOWN;
drivers/usb/gadget/udc/bcm63xx_udc.c
1557
} else if (udc->ep0_reply) {
drivers/usb/gadget/udc/bcm63xx_udc.c
1563
dev_warn(udc->dev, "nuking unexpected reply\n");
drivers/usb/gadget/udc/bcm63xx_udc.c
1564
bcm63xx_ep0_nuke_reply(udc, 0);
drivers/usb/gadget/udc/bcm63xx_udc.c
1578
static int bcm63xx_ep0_one_round(struct bcm63xx_udc *udc)
drivers/usb/gadget/udc/bcm63xx_udc.c
1580
enum bcm63xx_ep0_state ep0state = udc->ep0state;
drivers/usb/gadget/udc/bcm63xx_udc.c
1581
bool shutdown = udc->ep0_req_reset || udc->ep0_req_shutdown;
drivers/usb/gadget/udc/bcm63xx_udc.c
1583
switch (udc->ep0state) {
drivers/usb/gadget/udc/bcm63xx_udc.c
1586
bcm63xx_ep0_internal_request(udc, IUDMA_EP0_RXCHAN,
drivers/usb/gadget/udc/bcm63xx_udc.c
1591
return bcm63xx_ep0_do_idle(udc);
drivers/usb/gadget/udc/bcm63xx_udc.c
1602
if (udc->ep0_reply) {
drivers/usb/gadget/udc/bcm63xx_udc.c
1603
bcm63xx_ep0_map_write(udc, IUDMA_EP0_TXCHAN,
drivers/usb/gadget/udc/bcm63xx_udc.c
1604
udc->ep0_reply);
drivers/usb/gadget/udc/bcm63xx_udc.c
1618
if (udc->ep0_req_completed) {
drivers/usb/gadget/udc/bcm63xx_udc.c
1619
udc->ep0_reply = NULL;
drivers/usb/gadget/udc/bcm63xx_udc.c
1620
bcm63xx_ep0_read_complete(udc);
drivers/usb/gadget/udc/bcm63xx_udc.c
1627
iudma_reset_channel(udc, &udc->iudma[IUDMA_EP0_TXCHAN]);
drivers/usb/gadget/udc/bcm63xx_udc.c
1628
bcm63xx_ep0_nuke_reply(udc, 1);
drivers/usb/gadget/udc/bcm63xx_udc.c
1635
if (udc->ep0_reply) {
drivers/usb/gadget/udc/bcm63xx_udc.c
1636
bcm63xx_ep0_map_write(udc, IUDMA_EP0_RXCHAN,
drivers/usb/gadget/udc/bcm63xx_udc.c
1637
udc->ep0_reply);
drivers/usb/gadget/udc/bcm63xx_udc.c
1645
if (udc->ep0_req_completed) {
drivers/usb/gadget/udc/bcm63xx_udc.c
1646
udc->ep0_reply = NULL;
drivers/usb/gadget/udc/bcm63xx_udc.c
1647
bcm63xx_ep0_read_complete(udc);
drivers/usb/gadget/udc/bcm63xx_udc.c
1650
bcm63xx_ep0_internal_request(udc, IUDMA_EP0_TXCHAN, 0);
drivers/usb/gadget/udc/bcm63xx_udc.c
1653
iudma_reset_channel(udc, &udc->iudma[IUDMA_EP0_RXCHAN]);
drivers/usb/gadget/udc/bcm63xx_udc.c
1654
bcm63xx_ep0_nuke_reply(udc, 0);
drivers/usb/gadget/udc/bcm63xx_udc.c
1668
if (udc->ep0_req_completed) {
drivers/usb/gadget/udc/bcm63xx_udc.c
1669
bcm63xx_ep0_read_complete(udc);
drivers/usb/gadget/udc/bcm63xx_udc.c
1672
iudma_reset_channel(udc, &udc->iudma[IUDMA_EP0_TXCHAN]);
drivers/usb/gadget/udc/bcm63xx_udc.c
1673
udc->ep0_request = NULL;
drivers/usb/gadget/udc/bcm63xx_udc.c
1692
struct usb_request *r = udc->ep0_reply;
drivers/usb/gadget/udc/bcm63xx_udc.c
1700
bcm63xx_ep0_complete(udc, r, 0);
drivers/usb/gadget/udc/bcm63xx_udc.c
1701
udc->ep0_reply = NULL;
drivers/usb/gadget/udc/bcm63xx_udc.c
1709
if (udc->ep0state == ep0state)
drivers/usb/gadget/udc/bcm63xx_udc.c
1712
udc->ep0state = ep0state;
drivers/usb/gadget/udc/bcm63xx_udc.c
1732
struct bcm63xx_udc *udc = container_of(w, struct bcm63xx_udc, ep0_wq);
drivers/usb/gadget/udc/bcm63xx_udc.c
1733
spin_lock_irq(&udc->lock);
drivers/usb/gadget/udc/bcm63xx_udc.c
1734
while (bcm63xx_ep0_one_round(udc) == 0)
drivers/usb/gadget/udc/bcm63xx_udc.c
1736
spin_unlock_irq(&udc->lock);
drivers/usb/gadget/udc/bcm63xx_udc.c
1749
struct bcm63xx_udc *udc = gadget_to_udc(gadget);
drivers/usb/gadget/udc/bcm63xx_udc.c
1751
return (usbd_readl(udc, USBD_STATUS_REG) &
drivers/usb/gadget/udc/bcm63xx_udc.c
1764
struct bcm63xx_udc *udc = gadget_to_udc(gadget);
drivers/usb/gadget/udc/bcm63xx_udc.c
1768
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/bcm63xx_udc.c
1769
if (is_on && udc->ep0state == EP0_SHUTDOWN) {
drivers/usb/gadget/udc/bcm63xx_udc.c
1770
udc->gadget.speed = USB_SPEED_UNKNOWN;
drivers/usb/gadget/udc/bcm63xx_udc.c
1771
udc->ep0state = EP0_REQUEUE;
drivers/usb/gadget/udc/bcm63xx_udc.c
1772
bcm63xx_fifo_setup(udc);
drivers/usb/gadget/udc/bcm63xx_udc.c
1773
bcm63xx_fifo_reset(udc);
drivers/usb/gadget/udc/bcm63xx_udc.c
1774
bcm63xx_ep_setup(udc);
drivers/usb/gadget/udc/bcm63xx_udc.c
1776
bitmap_zero(&udc->wedgemap, BCM63XX_NUM_EP);
drivers/usb/gadget/udc/bcm63xx_udc.c
1778
bcm63xx_set_stall(udc, &udc->bep[i], false);
drivers/usb/gadget/udc/bcm63xx_udc.c
1780
bcm63xx_set_ctrl_irqs(udc, true);
drivers/usb/gadget/udc/bcm63xx_udc.c
1783
} else if (!is_on && udc->ep0state != EP0_SHUTDOWN) {
drivers/usb/gadget/udc/bcm63xx_udc.c
1786
udc->ep0_req_shutdown = 1;
drivers/usb/gadget/udc/bcm63xx_udc.c
1787
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/bcm63xx_udc.c
1790
schedule_work(&udc->ep0_wq);
drivers/usb/gadget/udc/bcm63xx_udc.c
1791
if (udc->ep0state == EP0_SHUTDOWN)
drivers/usb/gadget/udc/bcm63xx_udc.c
1795
bcm63xx_set_ctrl_irqs(udc, false);
drivers/usb/gadget/udc/bcm63xx_udc.c
1796
cancel_work_sync(&udc->ep0_wq);
drivers/usb/gadget/udc/bcm63xx_udc.c
1800
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/bcm63xx_udc.c
1812
struct bcm63xx_udc *udc = gadget_to_udc(gadget);
drivers/usb/gadget/udc/bcm63xx_udc.c
1818
if (!udc)
drivers/usb/gadget/udc/bcm63xx_udc.c
1820
if (udc->driver)
drivers/usb/gadget/udc/bcm63xx_udc.c
1823
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/bcm63xx_udc.c
1825
set_clocks(udc, true);
drivers/usb/gadget/udc/bcm63xx_udc.c
1826
bcm63xx_fifo_setup(udc);
drivers/usb/gadget/udc/bcm63xx_udc.c
1827
bcm63xx_ep_init(udc);
drivers/usb/gadget/udc/bcm63xx_udc.c
1828
bcm63xx_ep_setup(udc);
drivers/usb/gadget/udc/bcm63xx_udc.c
1829
bcm63xx_fifo_reset(udc);
drivers/usb/gadget/udc/bcm63xx_udc.c
1830
bcm63xx_select_phy_mode(udc, true);
drivers/usb/gadget/udc/bcm63xx_udc.c
1832
udc->driver = driver;
drivers/usb/gadget/udc/bcm63xx_udc.c
1833
udc->gadget.dev.of_node = udc->dev->of_node;
drivers/usb/gadget/udc/bcm63xx_udc.c
1835
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/bcm63xx_udc.c
1847
struct bcm63xx_udc *udc = gadget_to_udc(gadget);
drivers/usb/gadget/udc/bcm63xx_udc.c
1850
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/bcm63xx_udc.c
1852
udc->driver = NULL;
drivers/usb/gadget/udc/bcm63xx_udc.c
1862
bcm63xx_select_phy_mode(udc, false);
drivers/usb/gadget/udc/bcm63xx_udc.c
1863
set_clocks(udc, false);
drivers/usb/gadget/udc/bcm63xx_udc.c
1865
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/bcm63xx_udc.c
1890
static void bcm63xx_update_cfg_iface(struct bcm63xx_udc *udc)
drivers/usb/gadget/udc/bcm63xx_udc.c
1892
u32 reg = usbd_readl(udc, USBD_STATUS_REG);
drivers/usb/gadget/udc/bcm63xx_udc.c
1894
udc->cfg = (reg & USBD_STATUS_CFG_MASK) >> USBD_STATUS_CFG_SHIFT;
drivers/usb/gadget/udc/bcm63xx_udc.c
1895
udc->iface = (reg & USBD_STATUS_INTF_MASK) >> USBD_STATUS_INTF_SHIFT;
drivers/usb/gadget/udc/bcm63xx_udc.c
1896
udc->alt_iface = (reg & USBD_STATUS_ALTINTF_MASK) >>
drivers/usb/gadget/udc/bcm63xx_udc.c
1898
bcm63xx_ep_setup(udc);
drivers/usb/gadget/udc/bcm63xx_udc.c
1908
static int bcm63xx_update_link_speed(struct bcm63xx_udc *udc)
drivers/usb/gadget/udc/bcm63xx_udc.c
1910
u32 reg = usbd_readl(udc, USBD_STATUS_REG);
drivers/usb/gadget/udc/bcm63xx_udc.c
1911
enum usb_device_speed oldspeed = udc->gadget.speed;
drivers/usb/gadget/udc/bcm63xx_udc.c
1915
udc->gadget.speed = USB_SPEED_HIGH;
drivers/usb/gadget/udc/bcm63xx_udc.c
1918
udc->gadget.speed = USB_SPEED_FULL;
drivers/usb/gadget/udc/bcm63xx_udc.c
1922
udc->gadget.speed = USB_SPEED_UNKNOWN;
drivers/usb/gadget/udc/bcm63xx_udc.c
1923
dev_err(udc->dev,
drivers/usb/gadget/udc/bcm63xx_udc.c
1928
if (udc->gadget.speed != oldspeed) {
drivers/usb/gadget/udc/bcm63xx_udc.c
1929
dev_info(udc->dev, "link up, %s-speed mode\n",
drivers/usb/gadget/udc/bcm63xx_udc.c
1930
udc->gadget.speed == USB_SPEED_HIGH ? "high" : "full");
drivers/usb/gadget/udc/bcm63xx_udc.c
1948
static void bcm63xx_update_wedge(struct bcm63xx_udc *udc, bool new_status)
drivers/usb/gadget/udc/bcm63xx_udc.c
1952
for_each_set_bit(i, &udc->wedgemap, BCM63XX_NUM_EP) {
drivers/usb/gadget/udc/bcm63xx_udc.c
1953
bcm63xx_set_stall(udc, &udc->bep[i], new_status);
drivers/usb/gadget/udc/bcm63xx_udc.c
1955
clear_bit(i, &udc->wedgemap);
drivers/usb/gadget/udc/bcm63xx_udc.c
1969
struct bcm63xx_udc *udc = dev_id;
drivers/usb/gadget/udc/bcm63xx_udc.c
1973
stat = usbd_readl(udc, USBD_EVENT_IRQ_STATUS_REG) &
drivers/usb/gadget/udc/bcm63xx_udc.c
1974
usbd_readl(udc, USBD_EVENT_IRQ_MASK_REG);
drivers/usb/gadget/udc/bcm63xx_udc.c
1976
usbd_writel(udc, stat, USBD_EVENT_IRQ_STATUS_REG);
drivers/usb/gadget/udc/bcm63xx_udc.c
1978
spin_lock(&udc->lock);
drivers/usb/gadget/udc/bcm63xx_udc.c
1982
if (!(usbd_readl(udc, USBD_EVENTS_REG) &
drivers/usb/gadget/udc/bcm63xx_udc.c
1984
udc->gadget.speed != USB_SPEED_UNKNOWN)
drivers/usb/gadget/udc/bcm63xx_udc.c
1985
dev_info(udc->dev, "link down\n");
drivers/usb/gadget/udc/bcm63xx_udc.c
1987
udc->gadget.speed = USB_SPEED_UNKNOWN;
drivers/usb/gadget/udc/bcm63xx_udc.c
1991
bcm63xx_fifo_setup(udc);
drivers/usb/gadget/udc/bcm63xx_udc.c
1992
bcm63xx_fifo_reset(udc);
drivers/usb/gadget/udc/bcm63xx_udc.c
1993
bcm63xx_ep_setup(udc);
drivers/usb/gadget/udc/bcm63xx_udc.c
1995
bcm63xx_update_wedge(udc, false);
drivers/usb/gadget/udc/bcm63xx_udc.c
1997
udc->ep0_req_reset = 1;
drivers/usb/gadget/udc/bcm63xx_udc.c
1998
schedule_work(&udc->ep0_wq);
drivers/usb/gadget/udc/bcm63xx_udc.c
2002
if (bcm63xx_update_link_speed(udc)) {
drivers/usb/gadget/udc/bcm63xx_udc.c
2003
bcm63xx_fifo_setup(udc);
drivers/usb/gadget/udc/bcm63xx_udc.c
2004
bcm63xx_ep_setup(udc);
drivers/usb/gadget/udc/bcm63xx_udc.c
2006
bcm63xx_update_wedge(udc, true);
drivers/usb/gadget/udc/bcm63xx_udc.c
2009
bcm63xx_update_cfg_iface(udc);
drivers/usb/gadget/udc/bcm63xx_udc.c
2010
udc->ep0_req_set_cfg = 1;
drivers/usb/gadget/udc/bcm63xx_udc.c
2011
schedule_work(&udc->ep0_wq);
drivers/usb/gadget/udc/bcm63xx_udc.c
2014
bcm63xx_update_cfg_iface(udc);
drivers/usb/gadget/udc/bcm63xx_udc.c
2015
udc->ep0_req_set_iface = 1;
drivers/usb/gadget/udc/bcm63xx_udc.c
2016
schedule_work(&udc->ep0_wq);
drivers/usb/gadget/udc/bcm63xx_udc.c
2018
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/bcm63xx_udc.c
2020
if (disconnected && udc->driver)
drivers/usb/gadget/udc/bcm63xx_udc.c
2021
udc->driver->disconnect(&udc->gadget);
drivers/usb/gadget/udc/bcm63xx_udc.c
2022
else if (bus_reset && udc->driver)
drivers/usb/gadget/udc/bcm63xx_udc.c
2023
usb_gadget_udc_reset(&udc->gadget, udc->driver);
drivers/usb/gadget/udc/bcm63xx_udc.c
2041
struct bcm63xx_udc *udc = iudma->udc;
drivers/usb/gadget/udc/bcm63xx_udc.c
2048
spin_lock(&udc->lock);
drivers/usb/gadget/udc/bcm63xx_udc.c
2050
usb_dmac_writel(udc, ENETDMAC_IR_BUFDONE_MASK,
drivers/usb/gadget/udc/bcm63xx_udc.c
2053
rc = iudma_read(udc, iudma);
drivers/usb/gadget/udc/bcm63xx_udc.c
2058
req = udc->ep0_request;
drivers/usb/gadget/udc/bcm63xx_udc.c
2066
udc->ep0_req_completed = 1;
drivers/usb/gadget/udc/bcm63xx_udc.c
2068
schedule_work(&udc->ep0_wq);
drivers/usb/gadget/udc/bcm63xx_udc.c
2074
iudma_write(udc, iudma, breq);
drivers/usb/gadget/udc/bcm63xx_udc.c
2095
iudma_write(udc, iudma, next);
drivers/usb/gadget/udc/bcm63xx_udc.c
2098
iudma_write(udc, iudma, breq);
drivers/usb/gadget/udc/bcm63xx_udc.c
2102
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/bcm63xx_udc.c
2105
usb_gadget_unmap_request(&udc->gadget, req, iudma->is_tx);
drivers/usb/gadget/udc/bcm63xx_udc.c
2126
struct bcm63xx_udc *udc = s->private;
drivers/usb/gadget/udc/bcm63xx_udc.c
2128
if (!udc->driver)
drivers/usb/gadget/udc/bcm63xx_udc.c
2132
bcm63xx_ep0_state_names[udc->ep0state]);
drivers/usb/gadget/udc/bcm63xx_udc.c
2134
udc->ep0_req_reset ? "reset " : "",
drivers/usb/gadget/udc/bcm63xx_udc.c
2135
udc->ep0_req_set_cfg ? "set_cfg " : "",
drivers/usb/gadget/udc/bcm63xx_udc.c
2136
udc->ep0_req_set_iface ? "set_iface " : "",
drivers/usb/gadget/udc/bcm63xx_udc.c
2137
udc->ep0_req_shutdown ? "shutdown " : "",
drivers/usb/gadget/udc/bcm63xx_udc.c
2138
udc->ep0_request ? "pending " : "",
drivers/usb/gadget/udc/bcm63xx_udc.c
2139
udc->ep0_req_completed ? "completed " : "",
drivers/usb/gadget/udc/bcm63xx_udc.c
2140
udc->ep0_reply ? "reply " : "");
drivers/usb/gadget/udc/bcm63xx_udc.c
2142
udc->cfg, udc->iface, udc->alt_iface);
drivers/usb/gadget/udc/bcm63xx_udc.c
2145
usbd_readl(udc, USBD_CONTROL_REG),
drivers/usb/gadget/udc/bcm63xx_udc.c
2146
usbd_readl(udc, USBD_STRAPS_REG),
drivers/usb/gadget/udc/bcm63xx_udc.c
2147
usbd_readl(udc, USBD_STATUS_REG));
drivers/usb/gadget/udc/bcm63xx_udc.c
2149
usbd_readl(udc, USBD_EVENTS_REG),
drivers/usb/gadget/udc/bcm63xx_udc.c
2150
usbd_readl(udc, USBD_STALL_REG));
drivers/usb/gadget/udc/bcm63xx_udc.c
2165
struct bcm63xx_udc *udc = s->private;
drivers/usb/gadget/udc/bcm63xx_udc.c
2169
if (!udc->driver)
drivers/usb/gadget/udc/bcm63xx_udc.c
217
struct bcm63xx_udc *udc;
drivers/usb/gadget/udc/bcm63xx_udc.c
2173
struct iudma_ch *iudma = &udc->iudma[ch_idx];
drivers/usb/gadget/udc/bcm63xx_udc.c
2191
usb_dmac_readl(udc, ENETDMAC_CHANCFG_REG, ch_idx),
drivers/usb/gadget/udc/bcm63xx_udc.c
2192
usb_dmac_readl(udc, ENETDMAC_IR_REG, ch_idx),
drivers/usb/gadget/udc/bcm63xx_udc.c
2193
usb_dmac_readl(udc, ENETDMAC_IRMASK_REG, ch_idx),
drivers/usb/gadget/udc/bcm63xx_udc.c
2194
usb_dmac_readl(udc, ENETDMAC_MAXBURST_REG, ch_idx));
drivers/usb/gadget/udc/bcm63xx_udc.c
2196
sram2 = usb_dmas_readl(udc, ENETDMAS_SRAM2_REG, ch_idx);
drivers/usb/gadget/udc/bcm63xx_udc.c
2197
sram3 = usb_dmas_readl(udc, ENETDMAS_SRAM3_REG, ch_idx);
drivers/usb/gadget/udc/bcm63xx_udc.c
2199
usb_dmas_readl(udc, ENETDMAS_RSTART_REG, ch_idx),
drivers/usb/gadget/udc/bcm63xx_udc.c
2202
usb_dmas_readl(udc, ENETDMAS_SRAM4_REG, ch_idx));
drivers/usb/gadget/udc/bcm63xx_udc.c
2236
static void bcm63xx_udc_init_debugfs(struct bcm63xx_udc *udc)
drivers/usb/gadget/udc/bcm63xx_udc.c
2243
root = debugfs_create_dir(udc->gadget.name, usb_debug_root);
drivers/usb/gadget/udc/bcm63xx_udc.c
2244
debugfs_create_file("usbd", 0400, root, udc, &bcm63xx_usbd_dbg_fops);
drivers/usb/gadget/udc/bcm63xx_udc.c
2245
debugfs_create_file("iudma", 0400, root, udc, &bcm63xx_iudma_dbg_fops);
drivers/usb/gadget/udc/bcm63xx_udc.c
2254
static void bcm63xx_udc_cleanup_debugfs(struct bcm63xx_udc *udc)
drivers/usb/gadget/udc/bcm63xx_udc.c
2256
debugfs_lookup_and_remove(udc->gadget.name, usb_debug_root);
drivers/usb/gadget/udc/bcm63xx_udc.c
2274
struct bcm63xx_udc *udc;
drivers/usb/gadget/udc/bcm63xx_udc.c
2277
udc = devm_kzalloc(dev, sizeof(*udc), GFP_KERNEL);
drivers/usb/gadget/udc/bcm63xx_udc.c
2278
if (!udc)
drivers/usb/gadget/udc/bcm63xx_udc.c
2281
platform_set_drvdata(pdev, udc);
drivers/usb/gadget/udc/bcm63xx_udc.c
2282
udc->dev = dev;
drivers/usb/gadget/udc/bcm63xx_udc.c
2283
udc->pd = pd;
drivers/usb/gadget/udc/bcm63xx_udc.c
2290
udc->usbd_regs = devm_platform_ioremap_resource(pdev, 0);
drivers/usb/gadget/udc/bcm63xx_udc.c
2291
if (IS_ERR(udc->usbd_regs))
drivers/usb/gadget/udc/bcm63xx_udc.c
2292
return PTR_ERR(udc->usbd_regs);
drivers/usb/gadget/udc/bcm63xx_udc.c
2294
udc->iudma_regs = devm_platform_ioremap_resource(pdev, 1);
drivers/usb/gadget/udc/bcm63xx_udc.c
2295
if (IS_ERR(udc->iudma_regs))
drivers/usb/gadget/udc/bcm63xx_udc.c
2296
return PTR_ERR(udc->iudma_regs);
drivers/usb/gadget/udc/bcm63xx_udc.c
2298
spin_lock_init(&udc->lock);
drivers/usb/gadget/udc/bcm63xx_udc.c
2299
INIT_WORK(&udc->ep0_wq, bcm63xx_ep0_process);
drivers/usb/gadget/udc/bcm63xx_udc.c
2301
udc->gadget.ops = &bcm63xx_udc_ops;
drivers/usb/gadget/udc/bcm63xx_udc.c
2302
udc->gadget.name = dev_name(dev);
drivers/usb/gadget/udc/bcm63xx_udc.c
2305
udc->gadget.max_speed = USB_SPEED_HIGH;
drivers/usb/gadget/udc/bcm63xx_udc.c
2307
udc->gadget.max_speed = USB_SPEED_FULL;
drivers/usb/gadget/udc/bcm63xx_udc.c
2310
rc = bcm63xx_init_udc_hw(udc);
drivers/usb/gadget/udc/bcm63xx_udc.c
2323
dev_name(dev), udc) < 0)
drivers/usb/gadget/udc/bcm63xx_udc.c
2334
dev_name(dev), &udc->iudma[i]) < 0)
drivers/usb/gadget/udc/bcm63xx_udc.c
2338
bcm63xx_udc_init_debugfs(udc);
drivers/usb/gadget/udc/bcm63xx_udc.c
2339
rc = usb_add_gadget_udc(dev, &udc->gadget);
drivers/usb/gadget/udc/bcm63xx_udc.c
2343
bcm63xx_udc_cleanup_debugfs(udc);
drivers/usb/gadget/udc/bcm63xx_udc.c
2345
bcm63xx_uninit_udc_hw(udc);
drivers/usb/gadget/udc/bcm63xx_udc.c
2359
struct bcm63xx_udc *udc = platform_get_drvdata(pdev);
drivers/usb/gadget/udc/bcm63xx_udc.c
2361
bcm63xx_udc_cleanup_debugfs(udc);
drivers/usb/gadget/udc/bcm63xx_udc.c
2362
usb_del_gadget_udc(&udc->gadget);
drivers/usb/gadget/udc/bcm63xx_udc.c
2363
BUG_ON(udc->driver);
drivers/usb/gadget/udc/bcm63xx_udc.c
2365
bcm63xx_uninit_udc_hw(udc);
drivers/usb/gadget/udc/bcm63xx_udc.c
242
struct bcm63xx_udc *udc;
drivers/usb/gadget/udc/bcm63xx_udc.c
352
static inline u32 usbd_readl(struct bcm63xx_udc *udc, u32 off)
drivers/usb/gadget/udc/bcm63xx_udc.c
354
return bcm_readl(udc->usbd_regs + off);
drivers/usb/gadget/udc/bcm63xx_udc.c
357
static inline void usbd_writel(struct bcm63xx_udc *udc, u32 val, u32 off)
drivers/usb/gadget/udc/bcm63xx_udc.c
359
bcm_writel(val, udc->usbd_regs + off);
drivers/usb/gadget/udc/bcm63xx_udc.c
362
static inline u32 usb_dma_readl(struct bcm63xx_udc *udc, u32 off)
drivers/usb/gadget/udc/bcm63xx_udc.c
364
return bcm_readl(udc->iudma_regs + off);
drivers/usb/gadget/udc/bcm63xx_udc.c
367
static inline void usb_dma_writel(struct bcm63xx_udc *udc, u32 val, u32 off)
drivers/usb/gadget/udc/bcm63xx_udc.c
369
bcm_writel(val, udc->iudma_regs + off);
drivers/usb/gadget/udc/bcm63xx_udc.c
372
static inline u32 usb_dmac_readl(struct bcm63xx_udc *udc, u32 off, int chan)
drivers/usb/gadget/udc/bcm63xx_udc.c
374
return bcm_readl(udc->iudma_regs + IUDMA_DMAC_OFFSET + off +
drivers/usb/gadget/udc/bcm63xx_udc.c
378
static inline void usb_dmac_writel(struct bcm63xx_udc *udc, u32 val, u32 off,
drivers/usb/gadget/udc/bcm63xx_udc.c
381
bcm_writel(val, udc->iudma_regs + IUDMA_DMAC_OFFSET + off +
drivers/usb/gadget/udc/bcm63xx_udc.c
385
static inline u32 usb_dmas_readl(struct bcm63xx_udc *udc, u32 off, int chan)
drivers/usb/gadget/udc/bcm63xx_udc.c
387
return bcm_readl(udc->iudma_regs + IUDMA_DMAS_OFFSET + off +
drivers/usb/gadget/udc/bcm63xx_udc.c
391
static inline void usb_dmas_writel(struct bcm63xx_udc *udc, u32 val, u32 off,
drivers/usb/gadget/udc/bcm63xx_udc.c
394
bcm_writel(val, udc->iudma_regs + IUDMA_DMAS_OFFSET + off +
drivers/usb/gadget/udc/bcm63xx_udc.c
398
static inline void set_clocks(struct bcm63xx_udc *udc, bool is_enabled)
drivers/usb/gadget/udc/bcm63xx_udc.c
401
clk_enable(udc->usbh_clk);
drivers/usb/gadget/udc/bcm63xx_udc.c
402
clk_enable(udc->usbd_clk);
drivers/usb/gadget/udc/bcm63xx_udc.c
405
clk_disable(udc->usbd_clk);
drivers/usb/gadget/udc/bcm63xx_udc.c
406
clk_disable(udc->usbh_clk);
drivers/usb/gadget/udc/bcm63xx_udc.c
423
static void bcm63xx_ep_dma_select(struct bcm63xx_udc *udc, int idx)
drivers/usb/gadget/udc/bcm63xx_udc.c
425
u32 val = usbd_readl(udc, USBD_CONTROL_REG);
drivers/usb/gadget/udc/bcm63xx_udc.c
429
usbd_writel(udc, val, USBD_CONTROL_REG);
drivers/usb/gadget/udc/bcm63xx_udc.c
441
static void bcm63xx_set_stall(struct bcm63xx_udc *udc, struct bcm63xx_ep *bep,
drivers/usb/gadget/udc/bcm63xx_udc.c
449
usbd_writel(udc, val, USBD_STALL_REG);
drivers/usb/gadget/udc/bcm63xx_udc.c
459
static void bcm63xx_fifo_setup(struct bcm63xx_udc *udc)
drivers/usb/gadget/udc/bcm63xx_udc.c
461
int is_hs = udc->gadget.speed == USB_SPEED_HIGH;
drivers/usb/gadget/udc/bcm63xx_udc.c
470
bcm63xx_ep_dma_select(udc, i >> 1);
drivers/usb/gadget/udc/bcm63xx_udc.c
476
usbd_writel(udc, val, USBD_RXFIFO_CONFIG_REG);
drivers/usb/gadget/udc/bcm63xx_udc.c
477
usbd_writel(udc,
drivers/usb/gadget/udc/bcm63xx_udc.c
485
usbd_writel(udc, val, USBD_TXFIFO_CONFIG_REG);
drivers/usb/gadget/udc/bcm63xx_udc.c
486
usbd_writel(udc,
drivers/usb/gadget/udc/bcm63xx_udc.c
490
usbd_readl(udc, USBD_TXFIFO_EPSIZE_REG);
drivers/usb/gadget/udc/bcm63xx_udc.c
499
static void bcm63xx_fifo_reset_ep(struct bcm63xx_udc *udc, int ep_num)
drivers/usb/gadget/udc/bcm63xx_udc.c
503
bcm63xx_ep_dma_select(udc, ep_num);
drivers/usb/gadget/udc/bcm63xx_udc.c
505
val = usbd_readl(udc, USBD_CONTROL_REG);
drivers/usb/gadget/udc/bcm63xx_udc.c
507
usbd_writel(udc, val, USBD_CONTROL_REG);
drivers/usb/gadget/udc/bcm63xx_udc.c
508
usbd_readl(udc, USBD_CONTROL_REG);
drivers/usb/gadget/udc/bcm63xx_udc.c
515
static void bcm63xx_fifo_reset(struct bcm63xx_udc *udc)
drivers/usb/gadget/udc/bcm63xx_udc.c
520
bcm63xx_fifo_reset_ep(udc, i);
drivers/usb/gadget/udc/bcm63xx_udc.c
527
static void bcm63xx_ep_init(struct bcm63xx_udc *udc)
drivers/usb/gadget/udc/bcm63xx_udc.c
537
bcm63xx_ep_dma_select(udc, cfg->ep_num);
drivers/usb/gadget/udc/bcm63xx_udc.c
540
usbd_writel(udc, val, USBD_EPNUM_TYPEMAP_REG);
drivers/usb/gadget/udc/bcm63xx_udc.c
550
static void bcm63xx_ep_setup(struct bcm63xx_udc *udc)
drivers/usb/gadget/udc/bcm63xx_udc.c
554
usbd_writel(udc, USBD_CSR_SETUPADDR_DEF, USBD_CSR_SETUPADDR_REG);
drivers/usb/gadget/udc/bcm63xx_udc.c
558
int max_pkt = udc->gadget.speed == USB_SPEED_HIGH ?
drivers/usb/gadget/udc/bcm63xx_udc.c
562
udc->iudma[i].max_pkt = max_pkt;
drivers/usb/gadget/udc/bcm63xx_udc.c
566
usb_ep_set_maxpacket_limit(&udc->bep[idx].ep, max_pkt);
drivers/usb/gadget/udc/bcm63xx_udc.c
571
(udc->cfg << USBD_CSR_EP_CFG_SHIFT) |
drivers/usb/gadget/udc/bcm63xx_udc.c
572
(udc->iface << USBD_CSR_EP_IFACE_SHIFT) |
drivers/usb/gadget/udc/bcm63xx_udc.c
573
(udc->alt_iface << USBD_CSR_EP_ALTIFACE_SHIFT) |
drivers/usb/gadget/udc/bcm63xx_udc.c
575
usbd_writel(udc, val, USBD_CSR_EP_REG(idx));
drivers/usb/gadget/udc/bcm63xx_udc.c
592
static void iudma_write(struct bcm63xx_udc *udc, struct iudma_ch *iudma,
drivers/usb/gadget/udc/bcm63xx_udc.c
655
usb_dmac_writel(udc, ENETDMAC_CHANCFG_EN_MASK,
drivers/usb/gadget/udc/bcm63xx_udc.c
668
static int iudma_read(struct bcm63xx_udc *udc, struct iudma_ch *iudma)
drivers/usb/gadget/udc/bcm63xx_udc.c
702
static void iudma_reset_channel(struct bcm63xx_udc *udc, struct iudma_ch *iudma)
drivers/usb/gadget/udc/bcm63xx_udc.c
709
bcm63xx_fifo_reset_ep(udc, max(0, iudma->ep_num));
drivers/usb/gadget/udc/bcm63xx_udc.c
712
usb_dmac_writel(udc, 0, ENETDMAC_CHANCFG_REG, ch_idx);
drivers/usb/gadget/udc/bcm63xx_udc.c
714
while (usb_dmac_readl(udc, ENETDMAC_CHANCFG_REG, ch_idx) &
drivers/usb/gadget/udc/bcm63xx_udc.c
720
bcm63xx_fifo_reset_ep(udc, iudma->ep_num);
drivers/usb/gadget/udc/bcm63xx_udc.c
723
dev_err(udc->dev, "can't reset IUDMA channel %d\n",
drivers/usb/gadget/udc/bcm63xx_udc.c
728
dev_warn(udc->dev, "forcibly halting IUDMA channel %d\n",
drivers/usb/gadget/udc/bcm63xx_udc.c
730
usb_dmac_writel(udc, ENETDMAC_CHANCFG_BUFHALT_MASK,
drivers/usb/gadget/udc/bcm63xx_udc.c
734
usb_dmac_writel(udc, ~0, ENETDMAC_IR_REG, ch_idx);
drivers/usb/gadget/udc/bcm63xx_udc.c
745
usb_dmac_writel(udc, ENETDMAC_IR_BUFDONE_MASK,
drivers/usb/gadget/udc/bcm63xx_udc.c
747
usb_dmac_writel(udc, 8, ENETDMAC_MAXBURST_REG, ch_idx);
drivers/usb/gadget/udc/bcm63xx_udc.c
749
usb_dmas_writel(udc, iudma->bd_ring_dma, ENETDMAS_RSTART_REG, ch_idx);
drivers/usb/gadget/udc/bcm63xx_udc.c
750
usb_dmas_writel(udc, 0, ENETDMAS_SRAM2_REG, ch_idx);
drivers/usb/gadget/udc/bcm63xx_udc.c
758
static int iudma_init_channel(struct bcm63xx_udc *udc, unsigned int ch_idx)
drivers/usb/gadget/udc/bcm63xx_udc.c
760
struct iudma_ch *iudma = &udc->iudma[ch_idx];
drivers/usb/gadget/udc/bcm63xx_udc.c
769
bep = &udc->bep[iudma->ep_num];
drivers/usb/gadget/udc/bcm63xx_udc.c
775
iudma->udc = udc;
drivers/usb/gadget/udc/bcm63xx_udc.c
782
iudma->bd_ring = dmam_alloc_coherent(udc->dev,
drivers/usb/gadget/udc/bcm63xx_udc.c
798
static int iudma_init(struct bcm63xx_udc *udc)
drivers/usb/gadget/udc/bcm63xx_udc.c
802
usb_dma_writel(udc, ENETDMA_CFG_EN_MASK, ENETDMA_CFG_REG);
drivers/usb/gadget/udc/bcm63xx_udc.c
805
rc = iudma_init_channel(udc, i);
drivers/usb/gadget/udc/bcm63xx_udc.c
808
iudma_reset_channel(udc, &udc->iudma[i]);
drivers/usb/gadget/udc/bcm63xx_udc.c
811
usb_dma_writel(udc, BIT(BCM63XX_NUM_IUDMA)-1, ENETDMA_GLB_IRQMASK_REG);
drivers/usb/gadget/udc/bcm63xx_udc.c
821
static void iudma_uninit(struct bcm63xx_udc *udc)
drivers/usb/gadget/udc/bcm63xx_udc.c
825
usb_dma_writel(udc, 0, ENETDMA_GLB_IRQMASK_REG);
drivers/usb/gadget/udc/bcm63xx_udc.c
828
iudma_reset_channel(udc, &udc->iudma[i]);
drivers/usb/gadget/udc/bcm63xx_udc.c
830
usb_dma_writel(udc, 0, ENETDMA_CFG_REG);
drivers/usb/gadget/udc/bcm63xx_udc.c
842
static void bcm63xx_set_ctrl_irqs(struct bcm63xx_udc *udc, bool enable_irqs)
drivers/usb/gadget/udc/bcm63xx_udc.c
846
usbd_writel(udc, 0, USBD_STATUS_REG);
drivers/usb/gadget/udc/bcm63xx_udc.c
853
usbd_writel(udc, enable_irqs ? val : 0, USBD_EVENT_IRQ_MASK_REG);
drivers/usb/gadget/udc/bcm63xx_udc.c
854
usbd_writel(udc, val, USBD_EVENT_IRQ_STATUS_REG);
drivers/usb/gadget/udc/bcm63xx_udc.c
868
static void bcm63xx_select_phy_mode(struct bcm63xx_udc *udc, bool is_device)
drivers/usb/gadget/udc/bcm63xx_udc.c
870
u32 val, portmask = BIT(udc->pd->port_no);
drivers/usb/gadget/udc/bcm63xx_udc.c
908
static void bcm63xx_select_pullup(struct bcm63xx_udc *udc, bool is_on)
drivers/usb/gadget/udc/bcm63xx_udc.c
910
u32 val, portmask = BIT(udc->pd->port_no);
drivers/usb/gadget/udc/bcm63xx_udc.c
927
static void bcm63xx_uninit_udc_hw(struct bcm63xx_udc *udc)
drivers/usb/gadget/udc/bcm63xx_udc.c
929
set_clocks(udc, true);
drivers/usb/gadget/udc/bcm63xx_udc.c
930
iudma_uninit(udc);
drivers/usb/gadget/udc/bcm63xx_udc.c
931
set_clocks(udc, false);
drivers/usb/gadget/udc/bcm63xx_udc.c
933
clk_put(udc->usbd_clk);
drivers/usb/gadget/udc/bcm63xx_udc.c
934
clk_put(udc->usbh_clk);
drivers/usb/gadget/udc/bcm63xx_udc.c
941
static int bcm63xx_init_udc_hw(struct bcm63xx_udc *udc)
drivers/usb/gadget/udc/bcm63xx_udc.c
946
udc->ep0_ctrl_buf = devm_kzalloc(udc->dev, BCM63XX_MAX_CTRL_PKT,
drivers/usb/gadget/udc/bcm63xx_udc.c
948
if (!udc->ep0_ctrl_buf)
drivers/usb/gadget/udc/bcm63xx_udc.c
951
INIT_LIST_HEAD(&udc->gadget.ep_list);
drivers/usb/gadget/udc/bcm63xx_udc.c
953
struct bcm63xx_ep *bep = &udc->bep[i];
drivers/usb/gadget/udc/bcm63xx_udc.c
959
list_add_tail(&bep->ep.ep_list, &udc->gadget.ep_list);
drivers/usb/gadget/udc/bcm63xx_udc.c
962
bep->udc = udc;
drivers/usb/gadget/udc/bcm63xx_udc.c
967
udc->gadget.ep0 = &udc->bep[0].ep;
drivers/usb/gadget/udc/bcm63xx_udc.c
968
list_del(&udc->bep[0].ep.ep_list);
drivers/usb/gadget/udc/bcm63xx_udc.c
970
udc->gadget.speed = USB_SPEED_UNKNOWN;
drivers/usb/gadget/udc/bcm63xx_udc.c
971
udc->ep0state = EP0_SHUTDOWN;
drivers/usb/gadget/udc/bcm63xx_udc.c
973
udc->usbh_clk = clk_get(udc->dev, "usbh");
drivers/usb/gadget/udc/bcm63xx_udc.c
974
if (IS_ERR(udc->usbh_clk))
drivers/usb/gadget/udc/bcm63xx_udc.c
977
udc->usbd_clk = clk_get(udc->dev, "usbd");
drivers/usb/gadget/udc/bcm63xx_udc.c
978
if (IS_ERR(udc->usbd_clk)) {
drivers/usb/gadget/udc/bcm63xx_udc.c
979
clk_put(udc->usbh_clk);
drivers/usb/gadget/udc/bcm63xx_udc.c
983
set_clocks(udc, true);
drivers/usb/gadget/udc/bcm63xx_udc.c
988
usbd_writel(udc, val, USBD_CONTROL_REG);
drivers/usb/gadget/udc/bcm63xx_udc.c
996
if (udc->gadget.max_speed == USB_SPEED_HIGH)
drivers/usb/gadget/udc/core.c
1120
struct usb_udc *udc = gadget->udc;
drivers/usb/gadget/udc/core.c
1122
if (udc)
drivers/usb/gadget/udc/core.c
1123
sysfs_notify(&udc->dev.kobj, NULL, "state");
drivers/usb/gadget/udc/core.c
1143
static int usb_udc_connect_control_locked(struct usb_udc *udc) __must_hold(&udc->connect_lock)
drivers/usb/gadget/udc/core.c
1145
if (udc->vbus)
drivers/usb/gadget/udc/core.c
1146
return usb_gadget_connect_locked(udc->gadget);
drivers/usb/gadget/udc/core.c
1148
return usb_gadget_disconnect_locked(udc->gadget);
drivers/usb/gadget/udc/core.c
1153
struct usb_udc *udc = container_of(work, struct usb_udc, vbus_work);
drivers/usb/gadget/udc/core.c
1155
mutex_lock(&udc->connect_lock);
drivers/usb/gadget/udc/core.c
1156
usb_udc_connect_control_locked(udc);
drivers/usb/gadget/udc/core.c
1157
mutex_unlock(&udc->connect_lock);
drivers/usb/gadget/udc/core.c
1179
struct usb_udc *udc = gadget->udc;
drivers/usb/gadget/udc/core.c
1181
if (udc) {
drivers/usb/gadget/udc/core.c
1182
udc->vbus = status;
drivers/usb/gadget/udc/core.c
1183
schedule_work(&udc->vbus_work);
drivers/usb/gadget/udc/core.c
1220
static inline int usb_gadget_udc_start_locked(struct usb_udc *udc)
drivers/usb/gadget/udc/core.c
1221
__must_hold(&udc->connect_lock)
drivers/usb/gadget/udc/core.c
1225
if (udc->started) {
drivers/usb/gadget/udc/core.c
1226
dev_err(&udc->dev, "UDC had already started\n");
drivers/usb/gadget/udc/core.c
1230
ret = udc->gadget->ops->udc_start(udc->gadget, udc->driver);
drivers/usb/gadget/udc/core.c
1232
udc->started = true;
drivers/usb/gadget/udc/core.c
1250
static inline void usb_gadget_udc_stop_locked(struct usb_udc *udc)
drivers/usb/gadget/udc/core.c
1251
__must_hold(&udc->connect_lock)
drivers/usb/gadget/udc/core.c
1253
if (!udc->started) {
drivers/usb/gadget/udc/core.c
1254
dev_err(&udc->dev, "UDC had already stopped\n");
drivers/usb/gadget/udc/core.c
1258
udc->gadget->ops->udc_stop(udc->gadget);
drivers/usb/gadget/udc/core.c
1259
udc->started = false;
drivers/usb/gadget/udc/core.c
1272
static inline void usb_gadget_udc_set_speed(struct usb_udc *udc,
drivers/usb/gadget/udc/core.c
1275
struct usb_gadget *gadget = udc->gadget;
drivers/usb/gadget/udc/core.c
1299
static inline void usb_gadget_enable_async_callbacks(struct usb_udc *udc)
drivers/usb/gadget/udc/core.c
1301
struct usb_gadget *gadget = udc->gadget;
drivers/usb/gadget/udc/core.c
1328
static inline void usb_gadget_disable_async_callbacks(struct usb_udc *udc)
drivers/usb/gadget/udc/core.c
1330
struct usb_gadget *gadget = udc->gadget;
drivers/usb/gadget/udc/core.c
1345
struct usb_udc *udc;
drivers/usb/gadget/udc/core.c
1347
udc = container_of(dev, struct usb_udc, dev);
drivers/usb/gadget/udc/core.c
1349
kfree(udc);
drivers/usb/gadget/udc/core.c
1393
struct usb_udc *udc;
drivers/usb/gadget/udc/core.c
1396
udc = kzalloc_obj(*udc);
drivers/usb/gadget/udc/core.c
1397
if (!udc)
drivers/usb/gadget/udc/core.c
1400
device_initialize(&udc->dev);
drivers/usb/gadget/udc/core.c
1401
udc->dev.release = usb_udc_release;
drivers/usb/gadget/udc/core.c
1402
udc->dev.class = &udc_class;
drivers/usb/gadget/udc/core.c
1403
udc->dev.groups = usb_udc_attr_groups;
drivers/usb/gadget/udc/core.c
1404
udc->dev.parent = gadget->dev.parent;
drivers/usb/gadget/udc/core.c
1405
ret = dev_set_name(&udc->dev, "%s",
drivers/usb/gadget/udc/core.c
1410
udc->gadget = gadget;
drivers/usb/gadget/udc/core.c
1411
gadget->udc = udc;
drivers/usb/gadget/udc/core.c
1412
mutex_init(&udc->connect_lock);
drivers/usb/gadget/udc/core.c
1414
udc->started = false;
drivers/usb/gadget/udc/core.c
1417
list_add_tail(&udc->list, &udc_list);
drivers/usb/gadget/udc/core.c
1419
INIT_WORK(&udc->vbus_work, vbus_event_work);
drivers/usb/gadget/udc/core.c
1421
ret = device_add(&udc->dev);
drivers/usb/gadget/udc/core.c
1426
udc->vbus = true;
drivers/usb/gadget/udc/core.c
1438
ret = sysfs_create_link(&udc->dev.kobj,
drivers/usb/gadget/udc/core.c
1453
device_del(&udc->dev);
drivers/usb/gadget/udc/core.c
1457
list_del(&udc->list);
drivers/usb/gadget/udc/core.c
1461
put_device(&udc->dev);
drivers/usb/gadget/udc/core.c
1505
struct usb_udc *udc;
drivers/usb/gadget/udc/core.c
1510
list_for_each_entry(udc, &udc_list, list) {
drivers/usb/gadget/udc/core.c
1511
if (!udc->driver) {
drivers/usb/gadget/udc/core.c
1512
name = kstrdup(udc->gadget->name, GFP_KERNEL);
drivers/usb/gadget/udc/core.c
1544
struct usb_udc *udc = gadget->udc;
drivers/usb/gadget/udc/core.c
1547
if (!udc)
drivers/usb/gadget/udc/core.c
1553
list_del(&udc->list);
drivers/usb/gadget/udc/core.c
1556
kobject_uevent(&udc->dev.kobj, KOBJ_REMOVE);
drivers/usb/gadget/udc/core.c
1557
sysfs_remove_link(&udc->dev.kobj, "gadget");
drivers/usb/gadget/udc/core.c
1568
cancel_work_sync(&udc->vbus_work);
drivers/usb/gadget/udc/core.c
1569
device_unregister(&udc->dev);
drivers/usb/gadget/udc/core.c
1591
struct usb_udc *udc = gadget->udc;
drivers/usb/gadget/udc/core.c
1597
strcmp(driver->udc_name, dev_name(&udc->dev)) != 0)
drivers/usb/gadget/udc/core.c
1611
struct usb_udc *udc = gadget->udc;
drivers/usb/gadget/udc/core.c
1622
udc->driver = driver;
drivers/usb/gadget/udc/core.c
1625
dev_dbg(&udc->dev, "binding gadget driver [%s]\n", driver->function);
drivers/usb/gadget/udc/core.c
1627
usb_gadget_udc_set_speed(udc, driver->max_speed);
drivers/usb/gadget/udc/core.c
1629
ret = driver->bind(udc->gadget, driver);
drivers/usb/gadget/udc/core.c
1633
mutex_lock(&udc->connect_lock);
drivers/usb/gadget/udc/core.c
1634
ret = usb_gadget_udc_start_locked(udc);
drivers/usb/gadget/udc/core.c
1636
mutex_unlock(&udc->connect_lock);
drivers/usb/gadget/udc/core.c
1639
usb_gadget_enable_async_callbacks(udc);
drivers/usb/gadget/udc/core.c
1640
udc->allow_connect = true;
drivers/usb/gadget/udc/core.c
1641
ret = usb_udc_connect_control_locked(udc);
drivers/usb/gadget/udc/core.c
1645
mutex_unlock(&udc->connect_lock);
drivers/usb/gadget/udc/core.c
1647
kobject_uevent(&udc->dev.kobj, KOBJ_CHANGE);
drivers/usb/gadget/udc/core.c
1651
udc->allow_connect = false;
drivers/usb/gadget/udc/core.c
1652
usb_gadget_disable_async_callbacks(udc);
drivers/usb/gadget/udc/core.c
1655
usb_gadget_udc_stop_locked(udc);
drivers/usb/gadget/udc/core.c
1656
mutex_unlock(&udc->connect_lock);
drivers/usb/gadget/udc/core.c
1659
driver->unbind(udc->gadget);
drivers/usb/gadget/udc/core.c
1663
dev_err(&udc->dev, "failed to start %s: %d\n",
drivers/usb/gadget/udc/core.c
1667
udc->driver = NULL;
drivers/usb/gadget/udc/core.c
1677
struct usb_udc *udc = gadget->udc;
drivers/usb/gadget/udc/core.c
1678
struct usb_gadget_driver *driver = udc->driver;
drivers/usb/gadget/udc/core.c
1680
dev_dbg(&udc->dev, "unbinding gadget driver [%s]\n", driver->function);
drivers/usb/gadget/udc/core.c
1682
udc->allow_connect = false;
drivers/usb/gadget/udc/core.c
1683
cancel_work_sync(&udc->vbus_work);
drivers/usb/gadget/udc/core.c
1684
mutex_lock(&udc->connect_lock);
drivers/usb/gadget/udc/core.c
1686
usb_gadget_disable_async_callbacks(udc);
drivers/usb/gadget/udc/core.c
1689
mutex_unlock(&udc->connect_lock);
drivers/usb/gadget/udc/core.c
1691
udc->driver->unbind(gadget);
drivers/usb/gadget/udc/core.c
1693
mutex_lock(&udc->connect_lock);
drivers/usb/gadget/udc/core.c
1694
usb_gadget_udc_stop_locked(udc);
drivers/usb/gadget/udc/core.c
1695
mutex_unlock(&udc->connect_lock);
drivers/usb/gadget/udc/core.c
1699
udc->driver = NULL;
drivers/usb/gadget/udc/core.c
1702
kobject_uevent(&udc->dev.kobj, KOBJ_CHANGE);
drivers/usb/gadget/udc/core.c
1761
struct usb_udc *udc = container_of(dev, struct usb_udc, dev);
drivers/usb/gadget/udc/core.c
1764
usb_gadget_wakeup(udc->gadget);
drivers/usb/gadget/udc/core.c
1773
struct usb_udc *udc = container_of(dev, struct usb_udc, dev);
drivers/usb/gadget/udc/core.c
1776
device_lock(&udc->gadget->dev);
drivers/usb/gadget/udc/core.c
1777
if (!udc->driver) {
drivers/usb/gadget/udc/core.c
1784
mutex_lock(&udc->connect_lock);
drivers/usb/gadget/udc/core.c
1785
usb_gadget_udc_start_locked(udc);
drivers/usb/gadget/udc/core.c
1786
usb_gadget_connect_locked(udc->gadget);
drivers/usb/gadget/udc/core.c
1787
mutex_unlock(&udc->connect_lock);
drivers/usb/gadget/udc/core.c
1789
mutex_lock(&udc->connect_lock);
drivers/usb/gadget/udc/core.c
1790
usb_gadget_disconnect_locked(udc->gadget);
drivers/usb/gadget/udc/core.c
1791
usb_gadget_udc_stop_locked(udc);
drivers/usb/gadget/udc/core.c
1792
mutex_unlock(&udc->connect_lock);
drivers/usb/gadget/udc/core.c
1801
device_unlock(&udc->gadget->dev);
drivers/usb/gadget/udc/core.c
1809
struct usb_udc *udc = container_of(dev, struct usb_udc, dev);
drivers/usb/gadget/udc/core.c
1810
struct usb_gadget *gadget = udc->gadget;
drivers/usb/gadget/udc/core.c
1819
struct usb_udc *udc = container_of(dev, struct usb_udc, dev);
drivers/usb/gadget/udc/core.c
1824
drv = udc->driver;
drivers/usb/gadget/udc/core.c
1836
struct usb_udc *udc = container_of(dev, struct usb_udc, dev); \
drivers/usb/gadget/udc/core.c
1838
usb_speed_string(udc->gadget->param)); \
drivers/usb/gadget/udc/core.c
1849
struct usb_udc *udc = container_of(dev, struct usb_udc, dev); \
drivers/usb/gadget/udc/core.c
1850
struct usb_gadget *gadget = udc->gadget; \
drivers/usb/gadget/udc/core.c
1891
const struct usb_udc *udc = container_of(dev, struct usb_udc, dev);
drivers/usb/gadget/udc/core.c
1894
ret = add_uevent_var(env, "USB_UDC_NAME=%s", udc->gadget->name);
drivers/usb/gadget/udc/core.c
1901
if (udc->driver)
drivers/usb/gadget/udc/core.c
1903
udc->driver->function);
drivers/usb/gadget/udc/core.c
706
__must_hold(&gadget->udc->connect_lock)
drivers/usb/gadget/udc/core.c
715
if (gadget->deactivated || !gadget->udc->allow_connect || !gadget->udc->started) {
drivers/usb/gadget/udc/core.c
750
mutex_lock(&gadget->udc->connect_lock);
drivers/usb/gadget/udc/core.c
752
mutex_unlock(&gadget->udc->connect_lock);
drivers/usb/gadget/udc/core.c
759
__must_hold(&gadget->udc->connect_lock)
drivers/usb/gadget/udc/core.c
771
if (gadget->deactivated || !gadget->udc->started) {
drivers/usb/gadget/udc/core.c
785
if (gadget->udc->driver)
drivers/usb/gadget/udc/core.c
786
gadget->udc->driver->disconnect(gadget);
drivers/usb/gadget/udc/core.c
812
mutex_lock(&gadget->udc->connect_lock);
drivers/usb/gadget/udc/core.c
814
mutex_unlock(&gadget->udc->connect_lock);
drivers/usb/gadget/udc/core.c
838
mutex_lock(&gadget->udc->connect_lock);
drivers/usb/gadget/udc/core.c
856
mutex_unlock(&gadget->udc->connect_lock);
drivers/usb/gadget/udc/core.c
878
mutex_lock(&gadget->udc->connect_lock);
drivers/usb/gadget/udc/core.c
892
mutex_unlock(&gadget->udc->connect_lock);
drivers/usb/gadget/udc/fsl_qe_udc.c
1018
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/fsl_qe_udc.c
1023
struct qe_udc *udc;
drivers/usb/gadget/udc/fsl_qe_udc.c
1028
udc = ep->udc;
drivers/usb/gadget/udc/fsl_qe_udc.c
103
dma_sync_single_for_cpu(udc->gadget.dev.parent,
drivers/usb/gadget/udc/fsl_qe_udc.c
1032
dev_err(udc->dev, "transmit ep in rx function\n");
drivers/usb/gadget/udc/fsl_qe_udc.c
1039
ucoffs = (u16)((in_be16(&udc->ep_param[ep->epnum]->rbptr) -
drivers/usb/gadget/udc/fsl_qe_udc.c
1040
in_be16(&udc->ep_param[ep->epnum]->rbase)) >> 3);
drivers/usb/gadget/udc/fsl_qe_udc.c
1049
dev_vdbg(udc->dev, "%d empty bds, send NACK\n", emptybds);
drivers/usb/gadget/udc/fsl_qe_udc.c
1055
dev_vdbg(udc->dev, "The rxep have no req queued with %d BDs\n",
drivers/usb/gadget/udc/fsl_qe_udc.c
1060
tasklet_schedule(&udc->rx_tasklet);
drivers/usb/gadget/udc/fsl_qe_udc.c
1069
struct qe_udc *udc = ep->udc;
drivers/usb/gadget/udc/fsl_qe_udc.c
1076
dev_err(udc->dev, "receive ep passed to tx function\n");
drivers/usb/gadget/udc/fsl_qe_udc.c
1081
saveusbmr = in_be16(&udc->usb_regs->usb_usbmr);
drivers/usb/gadget/udc/fsl_qe_udc.c
1082
out_be16(&udc->usb_regs->usb_usbmr,
drivers/usb/gadget/udc/fsl_qe_udc.c
1090
frame_set_data(frame, udc->nullbuf);
drivers/usb/gadget/udc/fsl_qe_udc.c
1093
dev_vdbg(udc->dev, "the frame size = 0\n");
drivers/usb/gadget/udc/fsl_qe_udc.c
110
dev_vdbg(udc->dev, "complete %s req %p stat %d len %u/%u\n",
drivers/usb/gadget/udc/fsl_qe_udc.c
1105
if ((ep->epnum == 0) && (udc->ep0_state == DATA_STATE_NEED_ZLP))
drivers/usb/gadget/udc/fsl_qe_udc.c
1121
out_be16(&udc->usb_regs->usb_usbmr, saveusbmr);
drivers/usb/gadget/udc/fsl_qe_udc.c
1131
out_be16(&udc->usb_regs->usb_usbmr, saveusbmr);
drivers/usb/gadget/udc/fsl_qe_udc.c
1132
dev_vdbg(udc->dev, "The tx bd is not ready!\n");
drivers/usb/gadget/udc/fsl_qe_udc.c
116
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/fsl_qe_udc.c
120
spin_lock(&udc->lock);
drivers/usb/gadget/udc/fsl_qe_udc.c
1213
struct qe_udc *udc = ep->udc;
drivers/usb/gadget/udc/fsl_qe_udc.c
1219
frame_set_data(frame, (u8 *)udc->nullbuf);
drivers/usb/gadget/udc/fsl_qe_udc.c
1246
static int ep0_prime_status(struct qe_udc *udc, int direction)
drivers/usb/gadget/udc/fsl_qe_udc.c
1249
struct qe_ep *ep = &udc->eps[0];
drivers/usb/gadget/udc/fsl_qe_udc.c
1252
udc->ep0_state = DATA_STATE_NEED_ZLP;
drivers/usb/gadget/udc/fsl_qe_udc.c
1253
udc->ep0_dir = USB_DIR_IN;
drivers/usb/gadget/udc/fsl_qe_udc.c
1256
udc->ep0_dir = USB_DIR_OUT;
drivers/usb/gadget/udc/fsl_qe_udc.c
1257
udc->ep0_state = WAIT_FOR_OUT_STATUS;
drivers/usb/gadget/udc/fsl_qe_udc.c
1264
static void ep0_req_complete(struct qe_udc *udc, struct qe_req *req)
drivers/usb/gadget/udc/fsl_qe_udc.c
1266
struct qe_ep *ep = &udc->eps[0];
drivers/usb/gadget/udc/fsl_qe_udc.c
1269
switch (udc->ep0_state) {
drivers/usb/gadget/udc/fsl_qe_udc.c
1273
if (ep0_prime_status(udc, USB_DIR_OUT))
drivers/usb/gadget/udc/fsl_qe_udc.c
1274
qe_ep0_stall(udc);
drivers/usb/gadget/udc/fsl_qe_udc.c
1279
udc->ep0_state = WAIT_FOR_SETUP;
drivers/usb/gadget/udc/fsl_qe_udc.c
1285
if (ep0_prime_status(udc, USB_DIR_IN))
drivers/usb/gadget/udc/fsl_qe_udc.c
1286
qe_ep0_stall(udc);
drivers/usb/gadget/udc/fsl_qe_udc.c
1291
udc->ep0_state = WAIT_FOR_SETUP;
drivers/usb/gadget/udc/fsl_qe_udc.c
1295
dev_vdbg(udc->dev, "Unexpected interrupt\n");
drivers/usb/gadget/udc/fsl_qe_udc.c
1299
qe_ep0_stall(udc);
drivers/usb/gadget/udc/fsl_qe_udc.c
1311
ep->udc->ep0_state = WAIT_FOR_SETUP;
drivers/usb/gadget/udc/fsl_qe_udc.c
1330
ep0_req_complete(ep->udc, ep->tx_req);
drivers/usb/gadget/udc/fsl_qe_udc.c
1336
dev_vdbg(ep->udc->dev, "the ep0_controller have no req\n");
drivers/usb/gadget/udc/fsl_qe_udc.c
1347
dev_vdbg(ep->udc->dev, "The EP0 transmit data have error!\n");
drivers/usb/gadget/udc/fsl_qe_udc.c
1402
dev_vdbg(ep->udc->dev, "The EP0 transmit data have error!\n");
drivers/usb/gadget/udc/fsl_qe_udc.c
147
struct qe_udc *udc = ep->udc;
drivers/usb/gadget/udc/fsl_qe_udc.c
1472
struct qe_udc *udc = ep->udc;
drivers/usb/gadget/udc/fsl_qe_udc.c
1482
dev_vdbg(udc->dev, "the req already finish!\n");
drivers/usb/gadget/udc/fsl_qe_udc.c
149
tem_usep = in_be16(&udc->usb_regs->usb_usep[epnum]);
drivers/usb/gadget/udc/fsl_qe_udc.c
1515
dev_vdbg(udc->dev, "the data01 error!\n");
drivers/usb/gadget/udc/fsl_qe_udc.c
1535
dev_err(udc->dev, "The receive frame with error!\n");
drivers/usb/gadget/udc/fsl_qe_udc.c
156
out_be16(&udc->usb_regs->usb_usep[epnum], tem_usep);
drivers/usb/gadget/udc/fsl_qe_udc.c
1585
struct qe_udc *udc;
drivers/usb/gadget/udc/fsl_qe_udc.c
1597
udc = ep->udc;
drivers/usb/gadget/udc/fsl_qe_udc.c
1598
if (!udc->driver || (udc->gadget.speed == USB_SPEED_UNKNOWN))
drivers/usb/gadget/udc/fsl_qe_udc.c
1603
retval = qe_ep_init(udc, epnum, desc);
drivers/usb/gadget/udc/fsl_qe_udc.c
1606
dev_dbg(udc->dev, "enable ep%d failed\n", ep->epnum);
drivers/usb/gadget/udc/fsl_qe_udc.c
1609
dev_dbg(udc->dev, "enable ep%d successful\n", ep->epnum);
drivers/usb/gadget/udc/fsl_qe_udc.c
1615
struct qe_udc *udc;
drivers/usb/gadget/udc/fsl_qe_udc.c
1621
udc = ep->udc;
drivers/usb/gadget/udc/fsl_qe_udc.c
1624
dev_dbg(udc->dev, "%s not enabled\n", _ep ? ep->ep.name : NULL);
drivers/usb/gadget/udc/fsl_qe_udc.c
1628
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/fsl_qe_udc.c
1634
qe_ep_reset(udc, ep->epnum);
drivers/usb/gadget/udc/fsl_qe_udc.c
1635
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/fsl_qe_udc.c
164
struct qe_udc *udc = ep->udc;
drivers/usb/gadget/udc/fsl_qe_udc.c
1649
dma_unmap_single(udc->gadget.dev.parent,
drivers/usb/gadget/udc/fsl_qe_udc.c
1655
udc->gadget.dev.parent,
drivers/usb/gadget/udc/fsl_qe_udc.c
166
tem_usep = in_be16(&udc->usb_regs->usb_usep[epnum]);
drivers/usb/gadget/udc/fsl_qe_udc.c
1665
dev_dbg(udc->dev, "disabled %s OK\n", _ep->name);
drivers/usb/gadget/udc/fsl_qe_udc.c
1698
struct qe_udc *udc;
drivers/usb/gadget/udc/fsl_qe_udc.c
1701
udc = ep->udc;
drivers/usb/gadget/udc/fsl_qe_udc.c
1705
dev_dbg(udc->dev, "bad params\n");
drivers/usb/gadget/udc/fsl_qe_udc.c
1709
dev_dbg(udc->dev, "bad ep\n");
drivers/usb/gadget/udc/fsl_qe_udc.c
1713
if (!udc->driver || udc->gadget.speed == USB_SPEED_UNKNOWN)
drivers/usb/gadget/udc/fsl_qe_udc.c
1720
req->req.dma = dma_map_single(ep->udc->gadget.dev.parent,
drivers/usb/gadget/udc/fsl_qe_udc.c
1728
dma_sync_single_for_device(ep->udc->gadget.dev.parent,
drivers/usb/gadget/udc/fsl_qe_udc.c
173
out_be16(&udc->usb_regs->usb_usep[epnum], tem_usep);
drivers/usb/gadget/udc/fsl_qe_udc.c
1740
dev_vdbg(udc->dev, "gadget have request in %s! %d\n",
drivers/usb/gadget/udc/fsl_qe_udc.c
1750
udc->ep0_state = DATA_STATE_XMIT;
drivers/usb/gadget/udc/fsl_qe_udc.c
1752
udc->ep0_state = DATA_STATE_RECV;
drivers/usb/gadget/udc/fsl_qe_udc.c
1766
struct qe_udc *udc = ep->udc;
drivers/usb/gadget/udc/fsl_qe_udc.c
1770
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/fsl_qe_udc.c
1772
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/fsl_qe_udc.c
178
static int qe_ep0_stall(struct qe_udc *udc)
drivers/usb/gadget/udc/fsl_qe_udc.c
1787
spin_lock_irqsave(&ep->udc->lock, flags);
drivers/usb/gadget/udc/fsl_qe_udc.c
1798
spin_unlock_irqrestore(&ep->udc->lock, flags);
drivers/usb/gadget/udc/fsl_qe_udc.c
180
qe_eptx_stall_change(&udc->eps[0], 1);
drivers/usb/gadget/udc/fsl_qe_udc.c
1804
spin_unlock_irqrestore(&ep->udc->lock, flags);
drivers/usb/gadget/udc/fsl_qe_udc.c
181
qe_eprx_stall_change(&udc->eps[0], 1);
drivers/usb/gadget/udc/fsl_qe_udc.c
1819
struct qe_udc *udc;
drivers/usb/gadget/udc/fsl_qe_udc.c
182
udc->ep0_state = WAIT_FOR_SETUP;
drivers/usb/gadget/udc/fsl_qe_udc.c
1827
udc = ep->udc;
drivers/usb/gadget/udc/fsl_qe_udc.c
183
udc->ep0_dir = 0;
drivers/usb/gadget/udc/fsl_qe_udc.c
1836
spin_lock_irqsave(&ep->udc->lock, flags);
drivers/usb/gadget/udc/fsl_qe_udc.c
1839
spin_unlock_irqrestore(&ep->udc->lock, flags);
drivers/usb/gadget/udc/fsl_qe_udc.c
1842
udc->ep0_state = WAIT_FOR_SETUP;
drivers/usb/gadget/udc/fsl_qe_udc.c
1843
udc->ep0_dir = 0;
drivers/usb/gadget/udc/fsl_qe_udc.c
1850
dev_vdbg(udc->dev, "%s %s halt stat %d\n", ep->ep.name,
drivers/usb/gadget/udc/fsl_qe_udc.c
1876
struct qe_udc *udc = container_of(gadget, struct qe_udc, gadget);
drivers/usb/gadget/udc/fsl_qe_udc.c
1879
tmp = in_be16(&udc->usb_param->frame_n);
drivers/usb/gadget/udc/fsl_qe_udc.c
1899
static int udc_reset_ep_queue(struct qe_udc *udc, u8 pipe)
drivers/usb/gadget/udc/fsl_qe_udc.c
190
struct qe_udc *udc = ep->udc;
drivers/usb/gadget/udc/fsl_qe_udc.c
1901
struct qe_ep *ep = &udc->eps[pipe];
drivers/usb/gadget/udc/fsl_qe_udc.c
1908
static int reset_queues(struct qe_udc *udc)
drivers/usb/gadget/udc/fsl_qe_udc.c
1913
udc_reset_ep_queue(udc, pipe);
drivers/usb/gadget/udc/fsl_qe_udc.c
1916
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/fsl_qe_udc.c
1917
usb_gadget_udc_reset(&udc->gadget, udc->driver);
drivers/usb/gadget/udc/fsl_qe_udc.c
1918
spin_lock(&udc->lock);
drivers/usb/gadget/udc/fsl_qe_udc.c
1923
static void ch9setaddress(struct qe_udc *udc, u16 value, u16 index,
drivers/usb/gadget/udc/fsl_qe_udc.c
1927
udc->device_address = (u8) value;
drivers/usb/gadget/udc/fsl_qe_udc.c
1929
udc->usb_state = USB_STATE_ADDRESS;
drivers/usb/gadget/udc/fsl_qe_udc.c
1932
if (ep0_prime_status(udc, USB_DIR_IN))
drivers/usb/gadget/udc/fsl_qe_udc.c
1933
qe_ep0_stall(udc);
drivers/usb/gadget/udc/fsl_qe_udc.c
194
clrsetbits_be16(&udc->usb_regs->usb_usep[epnum],
drivers/usb/gadget/udc/fsl_qe_udc.c
1944
static void ch9getstatus(struct qe_udc *udc, u8 request_type, u16 value,
drivers/usb/gadget/udc/fsl_qe_udc.c
1952
ep = &udc->eps[0];
drivers/usb/gadget/udc/fsl_qe_udc.c
1965
struct qe_ep *target_ep = &udc->eps[pipe];
drivers/usb/gadget/udc/fsl_qe_udc.c
1972
usep = in_be16(&udc->usb_regs->usb_usep[pipe]);
drivers/usb/gadget/udc/fsl_qe_udc.c
198
clrbits16(&udc->usb_regs->usb_usbmr,
drivers/usb/gadget/udc/fsl_qe_udc.c
1989
req->req.buf = udc->statusbuf;
drivers/usb/gadget/udc/fsl_qe_udc.c
1995
udc->ep0_dir = USB_DIR_IN;
drivers/usb/gadget/udc/fsl_qe_udc.c
2003
dev_err(udc->dev, "Can't respond to getstatus request \n");
drivers/usb/gadget/udc/fsl_qe_udc.c
2004
qe_ep0_stall(udc);
drivers/usb/gadget/udc/fsl_qe_udc.c
2008
static void setup_received_handle(struct qe_udc *udc,
drivers/usb/gadget/udc/fsl_qe_udc.c
2017
udc_reset_ep_queue(udc, 0);
drivers/usb/gadget/udc/fsl_qe_udc.c
2020
udc->ep0_dir = USB_DIR_IN;
drivers/usb/gadget/udc/fsl_qe_udc.c
2022
udc->ep0_dir = USB_DIR_OUT;
drivers/usb/gadget/udc/fsl_qe_udc.c
2030
ch9getstatus(udc, setup->bRequestType, wValue, wIndex,
drivers/usb/gadget/udc/fsl_qe_udc.c
2039
ch9setaddress(udc, wValue, wIndex, wLength);
drivers/usb/gadget/udc/fsl_qe_udc.c
2057
ep = &udc->eps[pipe];
drivers/usb/gadget/udc/fsl_qe_udc.c
2059
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/fsl_qe_udc.c
2063
spin_lock(&udc->lock);
drivers/usb/gadget/udc/fsl_qe_udc.c
2066
ep0_prime_status(udc, USB_DIR_IN);
drivers/usb/gadget/udc/fsl_qe_udc.c
2077
udc->ep0_state = DATA_STATE_XMIT;
drivers/usb/gadget/udc/fsl_qe_udc.c
2078
udc->ep0_dir = USB_DIR_IN;
drivers/usb/gadget/udc/fsl_qe_udc.c
208
struct qe_udc *udc = ep->udc;
drivers/usb/gadget/udc/fsl_qe_udc.c
2080
udc->ep0_state = DATA_STATE_RECV;
drivers/usb/gadget/udc/fsl_qe_udc.c
2081
udc->ep0_dir = USB_DIR_OUT;
drivers/usb/gadget/udc/fsl_qe_udc.c
2083
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/fsl_qe_udc.c
2084
if (udc->driver->setup(&udc->gadget,
drivers/usb/gadget/udc/fsl_qe_udc.c
2085
&udc->local_setup_buff) < 0)
drivers/usb/gadget/udc/fsl_qe_udc.c
2086
qe_ep0_stall(udc);
drivers/usb/gadget/udc/fsl_qe_udc.c
2087
spin_lock(&udc->lock);
drivers/usb/gadget/udc/fsl_qe_udc.c
2090
udc->ep0_dir = USB_DIR_IN;
drivers/usb/gadget/udc/fsl_qe_udc.c
2091
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/fsl_qe_udc.c
2092
if (udc->driver->setup(&udc->gadget,
drivers/usb/gadget/udc/fsl_qe_udc.c
2093
&udc->local_setup_buff) < 0)
drivers/usb/gadget/udc/fsl_qe_udc.c
2094
qe_ep0_stall(udc);
drivers/usb/gadget/udc/fsl_qe_udc.c
2095
spin_lock(&udc->lock);
drivers/usb/gadget/udc/fsl_qe_udc.c
2096
udc->ep0_state = DATA_STATE_NEED_ZLP;
drivers/usb/gadget/udc/fsl_qe_udc.c
2103
static void suspend_irq(struct qe_udc *udc)
drivers/usb/gadget/udc/fsl_qe_udc.c
2105
udc->resume_state = udc->usb_state;
drivers/usb/gadget/udc/fsl_qe_udc.c
2106
udc->usb_state = USB_STATE_SUSPENDED;
drivers/usb/gadget/udc/fsl_qe_udc.c
2109
if (udc->driver->suspend)
drivers/usb/gadget/udc/fsl_qe_udc.c
211
clrsetbits_be16(&udc->usb_regs->usb_usep[ep->epnum],
drivers/usb/gadget/udc/fsl_qe_udc.c
2110
udc->driver->suspend(&udc->gadget);
drivers/usb/gadget/udc/fsl_qe_udc.c
2113
static void resume_irq(struct qe_udc *udc)
drivers/usb/gadget/udc/fsl_qe_udc.c
2115
udc->usb_state = udc->resume_state;
drivers/usb/gadget/udc/fsl_qe_udc.c
2116
udc->resume_state = 0;
drivers/usb/gadget/udc/fsl_qe_udc.c
2119
if (udc->driver->resume)
drivers/usb/gadget/udc/fsl_qe_udc.c
2120
udc->driver->resume(&udc->gadget);
drivers/usb/gadget/udc/fsl_qe_udc.c
2123
static void idle_irq(struct qe_udc *udc)
drivers/usb/gadget/udc/fsl_qe_udc.c
2127
usbs = in_8(&udc->usb_regs->usb_usbs);
drivers/usb/gadget/udc/fsl_qe_udc.c
2129
if ((udc->usb_state) != USB_STATE_SUSPENDED)
drivers/usb/gadget/udc/fsl_qe_udc.c
2130
suspend_irq(udc);
drivers/usb/gadget/udc/fsl_qe_udc.c
2132
if (udc->usb_state == USB_STATE_SUSPENDED)
drivers/usb/gadget/udc/fsl_qe_udc.c
2133
resume_irq(udc);
drivers/usb/gadget/udc/fsl_qe_udc.c
2137
static int reset_irq(struct qe_udc *udc)
drivers/usb/gadget/udc/fsl_qe_udc.c
2141
if (udc->usb_state == USB_STATE_DEFAULT)
drivers/usb/gadget/udc/fsl_qe_udc.c
2144
qe_usb_disable(udc);
drivers/usb/gadget/udc/fsl_qe_udc.c
2145
out_8(&udc->usb_regs->usb_usadr, 0);
drivers/usb/gadget/udc/fsl_qe_udc.c
2148
if (udc->eps[i].init)
drivers/usb/gadget/udc/fsl_qe_udc.c
2149
qe_ep_reset(udc, i);
drivers/usb/gadget/udc/fsl_qe_udc.c
215
out_be16(&udc->usb_regs->usb_usber,
drivers/usb/gadget/udc/fsl_qe_udc.c
2152
reset_queues(udc);
drivers/usb/gadget/udc/fsl_qe_udc.c
2153
udc->usb_state = USB_STATE_DEFAULT;
drivers/usb/gadget/udc/fsl_qe_udc.c
2154
udc->ep0_state = WAIT_FOR_SETUP;
drivers/usb/gadget/udc/fsl_qe_udc.c
2155
udc->ep0_dir = USB_DIR_OUT;
drivers/usb/gadget/udc/fsl_qe_udc.c
2156
qe_usb_enable(udc);
drivers/usb/gadget/udc/fsl_qe_udc.c
2160
static int bsy_irq(struct qe_udc *udc)
drivers/usb/gadget/udc/fsl_qe_udc.c
2165
static int txe_irq(struct qe_udc *udc)
drivers/usb/gadget/udc/fsl_qe_udc.c
217
setbits16(&udc->usb_regs->usb_usbmr,
drivers/usb/gadget/udc/fsl_qe_udc.c
2171
static int tx_irq(struct qe_udc *udc)
drivers/usb/gadget/udc/fsl_qe_udc.c
2177
if ((udc->usb_state == USB_STATE_ADDRESS)
drivers/usb/gadget/udc/fsl_qe_udc.c
2178
&& (in_8(&udc->usb_regs->usb_usadr) == 0))
drivers/usb/gadget/udc/fsl_qe_udc.c
2179
out_8(&udc->usb_regs->usb_usadr, udc->device_address);
drivers/usb/gadget/udc/fsl_qe_udc.c
2182
ep = &udc->eps[i];
drivers/usb/gadget/udc/fsl_qe_udc.c
2200
static void rx_irq(struct qe_udc *udc)
drivers/usb/gadget/udc/fsl_qe_udc.c
2207
ep = &udc->eps[i];
drivers/usb/gadget/udc/fsl_qe_udc.c
2213
qe_ep0_rx(udc);
drivers/usb/gadget/udc/fsl_qe_udc.c
2225
struct qe_udc *udc = (struct qe_udc *)_udc;
drivers/usb/gadget/udc/fsl_qe_udc.c
2230
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/fsl_qe_udc.c
2232
irq_src = in_be16(&udc->usb_regs->usb_usber) &
drivers/usb/gadget/udc/fsl_qe_udc.c
2233
in_be16(&udc->usb_regs->usb_usbmr);
drivers/usb/gadget/udc/fsl_qe_udc.c
2235
out_be16(&udc->usb_regs->usb_usber, irq_src);
drivers/usb/gadget/udc/fsl_qe_udc.c
2238
idle_irq(udc);
drivers/usb/gadget/udc/fsl_qe_udc.c
2244
tx_irq(udc);
drivers/usb/gadget/udc/fsl_qe_udc.c
2250
rx_irq(udc);
drivers/usb/gadget/udc/fsl_qe_udc.c
2256
reset_irq(udc);
drivers/usb/gadget/udc/fsl_qe_udc.c
2262
bsy_irq(udc);
drivers/usb/gadget/udc/fsl_qe_udc.c
2268
txe_irq(udc);
drivers/usb/gadget/udc/fsl_qe_udc.c
2273
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/fsl_qe_udc.c
2284
struct qe_udc *udc;
drivers/usb/gadget/udc/fsl_qe_udc.c
2287
udc = container_of(gadget, struct qe_udc, gadget);
drivers/usb/gadget/udc/fsl_qe_udc.c
2289
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/fsl_qe_udc.c
229
if (ep->udc->soc_type == PORT_CPM)
drivers/usb/gadget/udc/fsl_qe_udc.c
2292
udc->driver = driver;
drivers/usb/gadget/udc/fsl_qe_udc.c
2293
udc->gadget.speed = driver->max_speed;
drivers/usb/gadget/udc/fsl_qe_udc.c
2296
qe_usb_enable(udc);
drivers/usb/gadget/udc/fsl_qe_udc.c
2298
out_be16(&udc->usb_regs->usb_usber, 0xffff);
drivers/usb/gadget/udc/fsl_qe_udc.c
2299
out_be16(&udc->usb_regs->usb_usbmr, USB_E_DEFAULT_DEVICE);
drivers/usb/gadget/udc/fsl_qe_udc.c
2300
udc->usb_state = USB_STATE_ATTACHED;
drivers/usb/gadget/udc/fsl_qe_udc.c
2301
udc->ep0_state = WAIT_FOR_SETUP;
drivers/usb/gadget/udc/fsl_qe_udc.c
2302
udc->ep0_dir = USB_DIR_OUT;
drivers/usb/gadget/udc/fsl_qe_udc.c
2303
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/fsl_qe_udc.c
2310
struct qe_udc *udc;
drivers/usb/gadget/udc/fsl_qe_udc.c
2314
udc = container_of(gadget, struct qe_udc, gadget);
drivers/usb/gadget/udc/fsl_qe_udc.c
2316
qe_usb_disable(udc);
drivers/usb/gadget/udc/fsl_qe_udc.c
2319
udc->usb_state = USB_STATE_ATTACHED;
drivers/usb/gadget/udc/fsl_qe_udc.c
2320
udc->ep0_state = WAIT_FOR_SETUP;
drivers/usb/gadget/udc/fsl_qe_udc.c
2321
udc->ep0_dir = 0;
drivers/usb/gadget/udc/fsl_qe_udc.c
2324
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/fsl_qe_udc.c
2325
udc->gadget.speed = USB_SPEED_UNKNOWN;
drivers/usb/gadget/udc/fsl_qe_udc.c
2326
nuke(&udc->eps[0], -ESHUTDOWN);
drivers/usb/gadget/udc/fsl_qe_udc.c
2327
list_for_each_entry(loop_ep, &udc->gadget.ep_list, ep.ep_list)
drivers/usb/gadget/udc/fsl_qe_udc.c
2329
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/fsl_qe_udc.c
2331
udc->driver = NULL;
drivers/usb/gadget/udc/fsl_qe_udc.c
2339
struct qe_udc *udc;
drivers/usb/gadget/udc/fsl_qe_udc.c
2347
udc = kzalloc_obj(*udc);
drivers/usb/gadget/udc/fsl_qe_udc.c
2348
if (!udc)
drivers/usb/gadget/udc/fsl_qe_udc.c
2351
udc->dev = &ofdev->dev;
drivers/usb/gadget/udc/fsl_qe_udc.c
2355
udc->usb_param = cpm_muram_addr(offset);
drivers/usb/gadget/udc/fsl_qe_udc.c
2356
memset_io(udc->usb_param, 0, size);
drivers/usb/gadget/udc/fsl_qe_udc.c
2358
usbpram = udc->usb_param;
drivers/usb/gadget/udc/fsl_qe_udc.c
2370
udc->ep_param[i] = cpm_muram_addr(tmp_addr);
drivers/usb/gadget/udc/fsl_qe_udc.c
2374
memset_io(udc->ep_param[0], 0,
drivers/usb/gadget/udc/fsl_qe_udc.c
2377
udc->resume_state = USB_STATE_NOTATTACHED;
drivers/usb/gadget/udc/fsl_qe_udc.c
2378
udc->usb_state = USB_STATE_POWERED;
drivers/usb/gadget/udc/fsl_qe_udc.c
2379
udc->ep0_dir = 0;
drivers/usb/gadget/udc/fsl_qe_udc.c
2381
spin_lock_init(&udc->lock);
drivers/usb/gadget/udc/fsl_qe_udc.c
2382
return udc;
drivers/usb/gadget/udc/fsl_qe_udc.c
2385
kfree(udc);
drivers/usb/gadget/udc/fsl_qe_udc.c
2390
static int qe_udc_reg_init(struct qe_udc *udc)
drivers/usb/gadget/udc/fsl_qe_udc.c
2393
qe_usbregs = udc->usb_regs;
drivers/usb/gadget/udc/fsl_qe_udc.c
2408
static int qe_ep_config(struct qe_udc *udc, unsigned char pipe_num)
drivers/usb/gadget/udc/fsl_qe_udc.c
241
if (ep->udc->soc_type == PORT_CPM)
drivers/usb/gadget/udc/fsl_qe_udc.c
2410
struct qe_ep *ep = &udc->eps[pipe_num];
drivers/usb/gadget/udc/fsl_qe_udc.c
2412
ep->udc = udc;
drivers/usb/gadget/udc/fsl_qe_udc.c
2447
list_add_tail(&ep->ep.ep_list, &udc->gadget.ep_list);
drivers/usb/gadget/udc/fsl_qe_udc.c
2449
ep->gadget = &udc->gadget;
drivers/usb/gadget/udc/fsl_qe_udc.c
2459
struct qe_udc *udc = container_of(dev, struct qe_udc, gadget.dev);
drivers/usb/gadget/udc/fsl_qe_udc.c
2462
complete(udc->done);
drivers/usb/gadget/udc/fsl_qe_udc.c
2463
cpm_muram_free(cpm_muram_offset(udc->ep_param[0]));
drivers/usb/gadget/udc/fsl_qe_udc.c
2465
udc->ep_param[i] = NULL;
drivers/usb/gadget/udc/fsl_qe_udc.c
2467
kfree(udc);
drivers/usb/gadget/udc/fsl_qe_udc.c
2474
struct qe_udc *udc;
drivers/usb/gadget/udc/fsl_qe_udc.c
2486
udc = qe_udc_config(ofdev);
drivers/usb/gadget/udc/fsl_qe_udc.c
2487
if (!udc) {
drivers/usb/gadget/udc/fsl_qe_udc.c
2492
udc->soc_type = (unsigned long)device_get_match_data(&ofdev->dev);
drivers/usb/gadget/udc/fsl_qe_udc.c
2493
udc->usb_regs = of_iomap(np, 0);
drivers/usb/gadget/udc/fsl_qe_udc.c
2494
if (!udc->usb_regs) {
drivers/usb/gadget/udc/fsl_qe_udc.c
2501
qe_udc_reg_init(udc);
drivers/usb/gadget/udc/fsl_qe_udc.c
2505
udc->gadget.ops = &qe_gadget_ops;
drivers/usb/gadget/udc/fsl_qe_udc.c
2508
udc->gadget.ep0 = &udc->eps[0].ep;
drivers/usb/gadget/udc/fsl_qe_udc.c
2510
INIT_LIST_HEAD(&udc->gadget.ep_list);
drivers/usb/gadget/udc/fsl_qe_udc.c
2513
udc->gadget.speed = USB_SPEED_UNKNOWN;
drivers/usb/gadget/udc/fsl_qe_udc.c
2516
udc->gadget.name = driver_name;
drivers/usb/gadget/udc/fsl_qe_udc.c
2517
udc->gadget.dev.parent = &ofdev->dev;
drivers/usb/gadget/udc/fsl_qe_udc.c
2526
qe_ep_config(udc, (unsigned char)i);
drivers/usb/gadget/udc/fsl_qe_udc.c
253
struct qe_udc *udc = ep->udc;
drivers/usb/gadget/udc/fsl_qe_udc.c
2530
ret = qe_ep_init(udc, 0, &qe_ep0_desc);
drivers/usb/gadget/udc/fsl_qe_udc.c
2535
udc->nullbuf = devm_kzalloc(&ofdev->dev, 256, GFP_KERNEL);
drivers/usb/gadget/udc/fsl_qe_udc.c
2536
if (udc->nullbuf == NULL) {
drivers/usb/gadget/udc/fsl_qe_udc.c
2542
udc->statusbuf = devm_kzalloc(&ofdev->dev, 2, GFP_KERNEL);
drivers/usb/gadget/udc/fsl_qe_udc.c
2543
if (udc->statusbuf == NULL) {
drivers/usb/gadget/udc/fsl_qe_udc.c
2548
udc->nullp = virt_to_phys((void *)udc->nullbuf);
drivers/usb/gadget/udc/fsl_qe_udc.c
2549
if (udc->nullp == DMA_ADDR_INVALID) {
drivers/usb/gadget/udc/fsl_qe_udc.c
2550
udc->nullp = dma_map_single(
drivers/usb/gadget/udc/fsl_qe_udc.c
2551
udc->gadget.dev.parent,
drivers/usb/gadget/udc/fsl_qe_udc.c
2552
udc->nullbuf,
drivers/usb/gadget/udc/fsl_qe_udc.c
2555
udc->nullmap = 1;
drivers/usb/gadget/udc/fsl_qe_udc.c
2557
dma_sync_single_for_device(udc->gadget.dev.parent,
drivers/usb/gadget/udc/fsl_qe_udc.c
2558
udc->nullp, 256,
drivers/usb/gadget/udc/fsl_qe_udc.c
2562
tasklet_setup(&udc->rx_tasklet, ep_rx_tasklet);
drivers/usb/gadget/udc/fsl_qe_udc.c
2564
udc->usb_irq = irq_of_parse_and_map(np, 0);
drivers/usb/gadget/udc/fsl_qe_udc.c
2565
if (!udc->usb_irq) {
drivers/usb/gadget/udc/fsl_qe_udc.c
2570
ret = request_irq(udc->usb_irq, qe_udc_irq, 0,
drivers/usb/gadget/udc/fsl_qe_udc.c
2571
driver_name, udc);
drivers/usb/gadget/udc/fsl_qe_udc.c
2573
dev_err(udc->dev, "cannot request irq %d err %d\n",
drivers/usb/gadget/udc/fsl_qe_udc.c
2574
udc->usb_irq, ret);
drivers/usb/gadget/udc/fsl_qe_udc.c
2578
ret = usb_add_gadget_udc_release(&ofdev->dev, &udc->gadget,
drivers/usb/gadget/udc/fsl_qe_udc.c
2583
platform_set_drvdata(ofdev, udc);
drivers/usb/gadget/udc/fsl_qe_udc.c
2584
dev_info(udc->dev,
drivers/usb/gadget/udc/fsl_qe_udc.c
2586
(udc->soc_type == PORT_QE) ? "QE" : "CPM");
drivers/usb/gadget/udc/fsl_qe_udc.c
259
out_8(&udc->usb_regs->usb_uscom,
drivers/usb/gadget/udc/fsl_qe_udc.c
2590
free_irq(udc->usb_irq, udc);
drivers/usb/gadget/udc/fsl_qe_udc.c
2592
irq_dispose_mapping(udc->usb_irq);
drivers/usb/gadget/udc/fsl_qe_udc.c
2594
if (udc->nullmap) {
drivers/usb/gadget/udc/fsl_qe_udc.c
2595
dma_unmap_single(udc->gadget.dev.parent,
drivers/usb/gadget/udc/fsl_qe_udc.c
2596
udc->nullp, 256,
drivers/usb/gadget/udc/fsl_qe_udc.c
2598
udc->nullp = DMA_ADDR_INVALID;
drivers/usb/gadget/udc/fsl_qe_udc.c
2600
dma_sync_single_for_cpu(udc->gadget.dev.parent,
drivers/usb/gadget/udc/fsl_qe_udc.c
2601
udc->nullp, 256,
drivers/usb/gadget/udc/fsl_qe_udc.c
2605
ep = &udc->eps[0];
drivers/usb/gadget/udc/fsl_qe_udc.c
261
out_be16(&udc->ep_param[i]->tbptr, in_be16(&udc->ep_param[i]->tbase));
drivers/usb/gadget/udc/fsl_qe_udc.c
2611
iounmap(udc->usb_regs);
drivers/usb/gadget/udc/fsl_qe_udc.c
2613
kfree(udc);
drivers/usb/gadget/udc/fsl_qe_udc.c
262
out_be32(&udc->ep_param[i]->tstate, 0);
drivers/usb/gadget/udc/fsl_qe_udc.c
263
out_be16(&udc->ep_param[i]->tbcnt, 0);
drivers/usb/gadget/udc/fsl_qe_udc.c
2631
struct qe_udc *udc = platform_get_drvdata(ofdev);
drivers/usb/gadget/udc/fsl_qe_udc.c
2636
usb_del_gadget_udc(&udc->gadget);
drivers/usb/gadget/udc/fsl_qe_udc.c
2638
udc->done = &done;
drivers/usb/gadget/udc/fsl_qe_udc.c
2639
tasklet_disable(&udc->rx_tasklet);
drivers/usb/gadget/udc/fsl_qe_udc.c
2641
if (udc->nullmap) {
drivers/usb/gadget/udc/fsl_qe_udc.c
2642
dma_unmap_single(udc->gadget.dev.parent,
drivers/usb/gadget/udc/fsl_qe_udc.c
2643
udc->nullp, 256,
drivers/usb/gadget/udc/fsl_qe_udc.c
2645
udc->nullp = DMA_ADDR_INVALID;
drivers/usb/gadget/udc/fsl_qe_udc.c
2647
dma_sync_single_for_cpu(udc->gadget.dev.parent,
drivers/usb/gadget/udc/fsl_qe_udc.c
2648
udc->nullp, 256,
drivers/usb/gadget/udc/fsl_qe_udc.c
2652
ep = &udc->eps[0];
drivers/usb/gadget/udc/fsl_qe_udc.c
2658
dma_unmap_single(udc->gadget.dev.parent,
drivers/usb/gadget/udc/fsl_qe_udc.c
2663
dma_sync_single_for_cpu(udc->gadget.dev.parent,
drivers/usb/gadget/udc/fsl_qe_udc.c
2671
free_irq(udc->usb_irq, udc);
drivers/usb/gadget/udc/fsl_qe_udc.c
2672
irq_dispose_mapping(udc->usb_irq);
drivers/usb/gadget/udc/fsl_qe_udc.c
2674
tasklet_kill(&udc->rx_tasklet);
drivers/usb/gadget/udc/fsl_qe_udc.c
2676
iounmap(udc->usb_regs);
drivers/usb/gadget/udc/fsl_qe_udc.c
273
struct qe_udc *udc = ep->udc;
drivers/usb/gadget/udc/fsl_qe_udc.c
275
out_8(&udc->usb_regs->usb_uscom,
drivers/usb/gadget/udc/fsl_qe_udc.c
280
static int qe_epbds_reset(struct qe_udc *udc, int pipe_num)
drivers/usb/gadget/udc/fsl_qe_udc.c
287
ep = &udc->eps[pipe_num];
drivers/usb/gadget/udc/fsl_qe_udc.c
312
static int qe_ep_reset(struct qe_udc *udc, int pipe_num)
drivers/usb/gadget/udc/fsl_qe_udc.c
317
ep = &udc->eps[pipe_num];
drivers/usb/gadget/udc/fsl_qe_udc.c
318
tmpusep = in_be16(&udc->usb_regs->usb_usep[pipe_num]);
drivers/usb/gadget/udc/fsl_qe_udc.c
335
out_be16(&udc->usb_regs->usb_usep[pipe_num], tmpusep);
drivers/usb/gadget/udc/fsl_qe_udc.c
337
qe_epbds_reset(udc, pipe_num);
drivers/usb/gadget/udc/fsl_qe_udc.c
348
static int qe_ep_bd_init(struct qe_udc *udc, unsigned char pipe_num)
drivers/usb/gadget/udc/fsl_qe_udc.c
350
struct qe_ep *ep = &udc->eps[pipe_num];
drivers/usb/gadget/udc/fsl_qe_udc.c
362
epparam = udc->ep_param[pipe_num];
drivers/usb/gadget/udc/fsl_qe_udc.c
440
ep->rxbuf_d = dma_map_single(ep->udc->gadget.dev.parent,
drivers/usb/gadget/udc/fsl_qe_udc.c
446
dma_sync_single_for_device(ep->udc->gadget.dev.parent,
drivers/usb/gadget/udc/fsl_qe_udc.c
468
static int qe_ep_register_init(struct qe_udc *udc, unsigned char pipe_num)
drivers/usb/gadget/udc/fsl_qe_udc.c
470
struct qe_ep *ep = &udc->eps[pipe_num];
drivers/usb/gadget/udc/fsl_qe_udc.c
476
epparam = udc->ep_param[pipe_num];
drivers/usb/gadget/udc/fsl_qe_udc.c
507
out_be16(&udc->usb_regs->usb_usep[pipe_num], usep);
drivers/usb/gadget/udc/fsl_qe_udc.c
521
static int qe_ep_init(struct qe_udc *udc,
drivers/usb/gadget/udc/fsl_qe_udc.c
525
struct qe_ep *ep = &udc->eps[pipe_num];
drivers/usb/gadget/udc/fsl_qe_udc.c
541
switch (udc->gadget.speed) {
drivers/usb/gadget/udc/fsl_qe_udc.c
563
switch (udc->gadget.speed) {
drivers/usb/gadget/udc/fsl_qe_udc.c
582
switch (udc->gadget.speed) {
drivers/usb/gadget/udc/fsl_qe_udc.c
599
switch (udc->gadget.speed) {
drivers/usb/gadget/udc/fsl_qe_udc.c
635
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/fsl_qe_udc.c
646
udc->ep0_dir = USB_DIR_OUT;
drivers/usb/gadget/udc/fsl_qe_udc.c
647
udc->ep0_state = WAIT_FOR_SETUP;
drivers/usb/gadget/udc/fsl_qe_udc.c
661
qe_ep_bd_init(udc, pipe_num);
drivers/usb/gadget/udc/fsl_qe_udc.c
675
qe_ep_register_init(udc, pipe_num);
drivers/usb/gadget/udc/fsl_qe_udc.c
679
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/fsl_qe_udc.c
686
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/fsl_qe_udc.c
688
dev_err(udc->dev, "failed to initialize %s\n", ep->ep.name);
drivers/usb/gadget/udc/fsl_qe_udc.c
692
static inline void qe_usb_enable(struct qe_udc *udc)
drivers/usb/gadget/udc/fsl_qe_udc.c
694
setbits8(&udc->usb_regs->usb_usmod, USB_MODE_EN);
drivers/usb/gadget/udc/fsl_qe_udc.c
697
static inline void qe_usb_disable(struct qe_udc *udc)
drivers/usb/gadget/udc/fsl_qe_udc.c
699
clrbits8(&udc->usb_regs->usb_usmod, USB_MODE_EN);
drivers/usb/gadget/udc/fsl_qe_udc.c
756
struct qe_udc *udc = ep->udc;
drivers/usb/gadget/udc/fsl_qe_udc.c
761
((in_be16(&udc->ep_param[epnum]->rbptr) -
drivers/usb/gadget/udc/fsl_qe_udc.c
762
in_be16(&udc->ep_param[epnum]->rbase))
drivers/usb/gadget/udc/fsl_qe_udc.c
777
if (in_be16(&udc->usb_regs->usb_usber) & USB_E_BSY_MASK)
drivers/usb/gadget/udc/fsl_qe_udc.c
778
out_be16(&udc->usb_regs->usb_usber, USB_E_BSY_MASK);
drivers/usb/gadget/udc/fsl_qe_udc.c
786
static void setup_received_handle(struct qe_udc *udc,
drivers/usb/gadget/udc/fsl_qe_udc.c
789
static void ep0_req_complete(struct qe_udc *udc, struct qe_req *req);
drivers/usb/gadget/udc/fsl_qe_udc.c
79
struct qe_udc *udc = ep->udc;
drivers/usb/gadget/udc/fsl_qe_udc.c
791
static int ep0_setup_handle(struct qe_udc *udc)
drivers/usb/gadget/udc/fsl_qe_udc.c
793
struct qe_ep *ep = &udc->eps[0];
drivers/usb/gadget/udc/fsl_qe_udc.c
800
&& (udc->ep0_state == WAIT_FOR_SETUP)) {
drivers/usb/gadget/udc/fsl_qe_udc.c
804
cp = (u8 *)&udc->local_setup_buff;
drivers/usb/gadget/udc/fsl_qe_udc.c
809
setup_received_handle(udc, &udc->local_setup_buff);
drivers/usb/gadget/udc/fsl_qe_udc.c
815
static int qe_ep0_rx(struct qe_udc *udc)
drivers/usb/gadget/udc/fsl_qe_udc.c
817
struct qe_ep *ep = &udc->eps[0];
drivers/usb/gadget/udc/fsl_qe_udc.c
826
dev_err(udc->dev, "ep0 not a control endpoint\n");
drivers/usb/gadget/udc/fsl_qe_udc.c
838
udc->ep0_state = WAIT_FOR_SETUP;
drivers/usb/gadget/udc/fsl_qe_udc.c
839
dev_vdbg(udc->dev,
drivers/usb/gadget/udc/fsl_qe_udc.c
861
ep0_setup_handle(udc);
drivers/usb/gadget/udc/fsl_qe_udc.c
866
dev_err(udc->dev, "The receive frame with error!\n");
drivers/usb/gadget/udc/fsl_qe_udc.c
902
dev_err(ep->udc->dev, "the data01 error!\n");
drivers/usb/gadget/udc/fsl_qe_udc.c
908
dev_err(ep->udc->dev, "the %s have no requeue!\n", ep->name);
drivers/usb/gadget/udc/fsl_qe_udc.c
919
ep0_req_complete(ep->udc, req);
drivers/usb/gadget/udc/fsl_qe_udc.c
935
struct qe_udc *udc = from_tasklet(udc, t, rx_tasklet);
drivers/usb/gadget/udc/fsl_qe_udc.c
943
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/fsl_qe_udc.c
946
ep = &udc->eps[i];
drivers/usb/gadget/udc/fsl_qe_udc.c
949
dev_dbg(udc->dev,
drivers/usb/gadget/udc/fsl_qe_udc.c
95
dma_unmap_single(udc->gadget.dev.parent,
drivers/usb/gadget/udc/fsl_qe_udc.c
962
dev_dbg(udc->dev,
drivers/usb/gadget/udc/fsl_qe_udc.c
990
dev_err(udc->dev,
drivers/usb/gadget/udc/fsl_qe_udc.h
154
#define ep_is_in(EP) ((ep_index(EP) == 0) ? (EP->udc->ep0_dir == \
drivers/usb/gadget/udc/fsl_qe_udc.h
264
struct qe_udc *udc;
drivers/usb/gadget/udc/fsl_udc_core.c
1010
struct fsl_udc *udc = NULL;
drivers/usb/gadget/udc/fsl_udc_core.c
1013
udc = ep->udc;
drivers/usb/gadget/udc/fsl_udc_core.c
1034
spin_lock_irqsave(&ep->udc->lock, flags);
drivers/usb/gadget/udc/fsl_udc_core.c
1036
spin_unlock_irqrestore(&ep->udc->lock, flags);
drivers/usb/gadget/udc/fsl_udc_core.c
1039
udc->ep0_state = WAIT_FOR_SETUP;
drivers/usb/gadget/udc/fsl_udc_core.c
1040
udc->ep0_dir = 0;
drivers/usb/gadget/udc/fsl_udc_core.c
1043
dev_vdbg(&udc->gadget.dev, "%s %s halt stat %d\n", ep->ep.name,
drivers/usb/gadget/udc/fsl_udc_core.c
1052
struct fsl_udc *udc;
drivers/usb/gadget/udc/fsl_udc_core.c
1062
udc = (struct fsl_udc *)ep->udc;
drivers/usb/gadget/udc/fsl_udc_core.c
1064
if (!udc->driver || udc->gadget.speed == USB_SPEED_UNKNOWN)
drivers/usb/gadget/udc/fsl_udc_core.c
1154
struct fsl_udc *udc = container_of(gadget, struct fsl_udc, gadget);
drivers/usb/gadget/udc/fsl_udc_core.c
1158
if (!udc->remote_wakeup)
drivers/usb/gadget/udc/fsl_udc_core.c
1171
static int can_pullup(struct fsl_udc *udc)
drivers/usb/gadget/udc/fsl_udc_core.c
1173
return udc->driver && udc->softconnect && udc->vbus_active;
drivers/usb/gadget/udc/fsl_udc_core.c
1180
struct fsl_udc *udc;
drivers/usb/gadget/udc/fsl_udc_core.c
1183
udc = container_of(gadget, struct fsl_udc, gadget);
drivers/usb/gadget/udc/fsl_udc_core.c
1184
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/fsl_udc_core.c
1186
udc->vbus_active = (is_active != 0);
drivers/usb/gadget/udc/fsl_udc_core.c
1187
if (can_pullup(udc))
drivers/usb/gadget/udc/fsl_udc_core.c
1193
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/fsl_udc_core.c
1206
struct fsl_udc *udc;
drivers/usb/gadget/udc/fsl_udc_core.c
1208
udc = container_of(gadget, struct fsl_udc, gadget);
drivers/usb/gadget/udc/fsl_udc_core.c
1209
if (!IS_ERR_OR_NULL(udc->transceiver))
drivers/usb/gadget/udc/fsl_udc_core.c
1210
return usb_phy_set_power(udc->transceiver, mA);
drivers/usb/gadget/udc/fsl_udc_core.c
1219
struct fsl_udc *udc;
drivers/usb/gadget/udc/fsl_udc_core.c
1221
udc = container_of(gadget, struct fsl_udc, gadget);
drivers/usb/gadget/udc/fsl_udc_core.c
1223
if (!udc->vbus_active)
drivers/usb/gadget/udc/fsl_udc_core.c
1226
udc->softconnect = (is_on != 0);
drivers/usb/gadget/udc/fsl_udc_core.c
1227
if (can_pullup(udc))
drivers/usb/gadget/udc/fsl_udc_core.c
1260
static void ep0stall(struct fsl_udc *udc)
drivers/usb/gadget/udc/fsl_udc_core.c
1268
udc->ep0_state = WAIT_FOR_SETUP;
drivers/usb/gadget/udc/fsl_udc_core.c
1269
udc->ep0_dir = 0;
drivers/usb/gadget/udc/fsl_udc_core.c
1273
static int ep0_prime_status(struct fsl_udc *udc, int direction)
drivers/usb/gadget/udc/fsl_udc_core.c
1275
struct fsl_req *req = udc->status_req;
drivers/usb/gadget/udc/fsl_udc_core.c
1280
udc->ep0_dir = USB_DIR_IN;
drivers/usb/gadget/udc/fsl_udc_core.c
1282
udc->ep0_dir = USB_DIR_OUT;
drivers/usb/gadget/udc/fsl_udc_core.c
1284
ep = &udc->eps[0];
drivers/usb/gadget/udc/fsl_udc_core.c
1285
if (udc->ep0_state != DATA_STATE_XMIT)
drivers/usb/gadget/udc/fsl_udc_core.c
1286
udc->ep0_state = WAIT_FOR_OUT_STATUS;
drivers/usb/gadget/udc/fsl_udc_core.c
1295
ret = usb_gadget_map_request(&ep->udc->gadget, &req->req, ep_is_in(ep));
drivers/usb/gadget/udc/fsl_udc_core.c
1309
static void udc_reset_ep_queue(struct fsl_udc *udc, u8 pipe)
drivers/usb/gadget/udc/fsl_udc_core.c
1311
struct fsl_ep *ep = get_ep_by_pipe(udc, pipe);
drivers/usb/gadget/udc/fsl_udc_core.c
1320
static void ch9setaddress(struct fsl_udc *udc, u16 value, u16 index, u16 length)
drivers/usb/gadget/udc/fsl_udc_core.c
1323
udc->device_address = (u8) value;
drivers/usb/gadget/udc/fsl_udc_core.c
1325
udc->usb_state = USB_STATE_ADDRESS;
drivers/usb/gadget/udc/fsl_udc_core.c
1327
if (ep0_prime_status(udc, EP_DIR_IN))
drivers/usb/gadget/udc/fsl_udc_core.c
1328
ep0stall(udc);
drivers/usb/gadget/udc/fsl_udc_core.c
1334
static void ch9getstatus(struct fsl_udc *udc, u8 request_type, u16 value,
drivers/usb/gadget/udc/fsl_udc_core.c
1342
ep = &udc->eps[0];
drivers/usb/gadget/udc/fsl_udc_core.c
1346
tmp = udc->gadget.is_selfpowered;
drivers/usb/gadget/udc/fsl_udc_core.c
1347
tmp |= udc->remote_wakeup << USB_DEVICE_REMOTE_WAKEUP;
drivers/usb/gadget/udc/fsl_udc_core.c
1356
target_ep = get_ep_by_pipe(udc, get_pipe_by_windex(index));
drivers/usb/gadget/udc/fsl_udc_core.c
1365
udc->ep0_dir = USB_DIR_IN;
drivers/usb/gadget/udc/fsl_udc_core.c
1367
req = udc->status_req;
drivers/usb/gadget/udc/fsl_udc_core.c
1378
ret = usb_gadget_map_request(&ep->udc->gadget, &req->req, ep_is_in(ep));
drivers/usb/gadget/udc/fsl_udc_core.c
1389
udc->ep0_state = DATA_STATE_XMIT;
drivers/usb/gadget/udc/fsl_udc_core.c
1390
if (ep0_prime_status(udc, EP_DIR_OUT))
drivers/usb/gadget/udc/fsl_udc_core.c
1391
ep0stall(udc);
drivers/usb/gadget/udc/fsl_udc_core.c
1395
ep0stall(udc);
drivers/usb/gadget/udc/fsl_udc_core.c
1398
static void setup_received_irq(struct fsl_udc *udc,
drivers/usb/gadget/udc/fsl_udc_core.c
1400
__releases(udc->lock)
drivers/usb/gadget/udc/fsl_udc_core.c
1401
__acquires(udc->lock)
drivers/usb/gadget/udc/fsl_udc_core.c
1407
udc_reset_ep_queue(udc, 0);
drivers/usb/gadget/udc/fsl_udc_core.c
1416
ch9getstatus(udc, setup->bRequestType, wValue, wIndex, wLength);
drivers/usb/gadget/udc/fsl_udc_core.c
1424
ch9setaddress(udc, wValue, wIndex, wLength);
drivers/usb/gadget/udc/fsl_udc_core.c
1439
if (wValue != 0 || wLength != 0 || pipe >= udc->max_ep)
drivers/usb/gadget/udc/fsl_udc_core.c
1441
ep = get_ep_by_pipe(udc, pipe);
drivers/usb/gadget/udc/fsl_udc_core.c
1443
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/fsl_udc_core.c
1447
spin_lock(&udc->lock);
drivers/usb/gadget/udc/fsl_udc_core.c
1456
else if (gadget_is_otg(&udc->gadget)) {
drivers/usb/gadget/udc/fsl_udc_core.c
1459
udc->gadget.b_hnp_enable = 1;
drivers/usb/gadget/udc/fsl_udc_core.c
1462
udc->gadget.a_hnp_support = 1;
drivers/usb/gadget/udc/fsl_udc_core.c
1465
udc->gadget.a_alt_hnp_support = 1;
drivers/usb/gadget/udc/fsl_udc_core.c
1472
if (ep0_prime_status(udc, EP_DIR_IN))
drivers/usb/gadget/udc/fsl_udc_core.c
1473
ep0stall(udc);
drivers/usb/gadget/udc/fsl_udc_core.c
1494
udc->ep0_dir = (setup->bRequestType & USB_DIR_IN)
drivers/usb/gadget/udc/fsl_udc_core.c
1496
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/fsl_udc_core.c
1497
if (udc->driver->setup(&udc->gadget,
drivers/usb/gadget/udc/fsl_udc_core.c
1498
&udc->local_setup_buff) < 0)
drivers/usb/gadget/udc/fsl_udc_core.c
1499
ep0stall(udc);
drivers/usb/gadget/udc/fsl_udc_core.c
1500
spin_lock(&udc->lock);
drivers/usb/gadget/udc/fsl_udc_core.c
1501
udc->ep0_state = (setup->bRequestType & USB_DIR_IN)
drivers/usb/gadget/udc/fsl_udc_core.c
1507
if (udc->ep0_state == DATA_STATE_XMIT)
drivers/usb/gadget/udc/fsl_udc_core.c
1508
if (ep0_prime_status(udc, EP_DIR_OUT))
drivers/usb/gadget/udc/fsl_udc_core.c
1509
ep0stall(udc);
drivers/usb/gadget/udc/fsl_udc_core.c
1513
udc->ep0_dir = USB_DIR_IN;
drivers/usb/gadget/udc/fsl_udc_core.c
1514
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/fsl_udc_core.c
1515
if (udc->driver->setup(&udc->gadget,
drivers/usb/gadget/udc/fsl_udc_core.c
1516
&udc->local_setup_buff) < 0)
drivers/usb/gadget/udc/fsl_udc_core.c
1517
ep0stall(udc);
drivers/usb/gadget/udc/fsl_udc_core.c
1518
spin_lock(&udc->lock);
drivers/usb/gadget/udc/fsl_udc_core.c
1519
udc->ep0_state = WAIT_FOR_OUT_STATUS;
drivers/usb/gadget/udc/fsl_udc_core.c
1525
static void ep0_req_complete(struct fsl_udc *udc, struct fsl_ep *ep0,
drivers/usb/gadget/udc/fsl_udc_core.c
1528
if (udc->usb_state == USB_STATE_ADDRESS) {
drivers/usb/gadget/udc/fsl_udc_core.c
1530
u32 new_address = (u32) udc->device_address;
drivers/usb/gadget/udc/fsl_udc_core.c
1537
switch (udc->ep0_state) {
drivers/usb/gadget/udc/fsl_udc_core.c
1540
udc->ep0_state = WAIT_FOR_OUT_STATUS;
drivers/usb/gadget/udc/fsl_udc_core.c
1544
if (ep0_prime_status(udc, EP_DIR_IN))
drivers/usb/gadget/udc/fsl_udc_core.c
1545
ep0stall(udc);
drivers/usb/gadget/udc/fsl_udc_core.c
1548
udc->ep0_state = WAIT_FOR_SETUP;
drivers/usb/gadget/udc/fsl_udc_core.c
1551
dev_err(&udc->gadget.dev, "Unexpected ep0 packets\n");
drivers/usb/gadget/udc/fsl_udc_core.c
1554
ep0stall(udc);
drivers/usb/gadget/udc/fsl_udc_core.c
156
__releases(ep->udc->lock)
drivers/usb/gadget/udc/fsl_udc_core.c
1561
static void tripwire_handler(struct fsl_udc *udc, u8 ep_num, u8 *buffer_ptr)
drivers/usb/gadget/udc/fsl_udc_core.c
1565
struct fsl_usb2_platform_data *pdata = udc->pdata;
drivers/usb/gadget/udc/fsl_udc_core.c
1567
qh = &udc->ep_qh[ep_num * 2 + EP_DIR_OUT];
drivers/usb/gadget/udc/fsl_udc_core.c
157
__acquires(ep->udc->lock)
drivers/usb/gadget/udc/fsl_udc_core.c
159
struct fsl_udc *udc = NULL;
drivers/usb/gadget/udc/fsl_udc_core.c
1598
static int process_ep_req(struct fsl_udc *udc, int pipe,
drivers/usb/gadget/udc/fsl_udc_core.c
1605
struct ep_queue_head *curr_qh = &udc->ep_qh[pipe];
drivers/usb/gadget/udc/fsl_udc_core.c
1620
dev_err(&udc->gadget.dev, "dTD error %08x QH=%d\n", errors, pipe);
drivers/usb/gadget/udc/fsl_udc_core.c
1631
dev_vdbg(&udc->gadget.dev, "Transfer overflow\n");
drivers/usb/gadget/udc/fsl_udc_core.c
1635
dev_vdbg(&udc->gadget.dev, "ISO error\n");
drivers/usb/gadget/udc/fsl_udc_core.c
1639
dev_err(&udc->gadget.dev,
drivers/usb/gadget/udc/fsl_udc_core.c
164
udc = (struct fsl_udc *)ep->udc;
drivers/usb/gadget/udc/fsl_udc_core.c
1645
dev_vdbg(&udc->gadget.dev, "Request not complete\n");
drivers/usb/gadget/udc/fsl_udc_core.c
1650
dev_vdbg(&udc->gadget.dev,
drivers/usb/gadget/udc/fsl_udc_core.c
1658
dev_vdbg(&udc->gadget.dev,
drivers/usb/gadget/udc/fsl_udc_core.c
1675
static void dtd_complete_irq(struct fsl_udc *udc)
drivers/usb/gadget/udc/fsl_udc_core.c
1689
for (i = 0; i < udc->max_ep; i++) {
drivers/usb/gadget/udc/fsl_udc_core.c
1698
curr_ep = get_ep_by_pipe(udc, i);
drivers/usb/gadget/udc/fsl_udc_core.c
1702
dev_warn(&udc->gadget.dev, "Invalid EP?\n");
drivers/usb/gadget/udc/fsl_udc_core.c
1709
status = process_ep_req(udc, i, curr_req);
drivers/usb/gadget/udc/fsl_udc_core.c
1711
dev_vdbg(&udc->gadget.dev,
drivers/usb/gadget/udc/fsl_udc_core.c
1720
ep0_req_complete(udc, curr_ep, curr_req);
drivers/usb/gadget/udc/fsl_udc_core.c
1743
static void port_change_irq(struct fsl_udc *udc)
drivers/usb/gadget/udc/fsl_udc_core.c
1745
if (udc->bus_reset)
drivers/usb/gadget/udc/fsl_udc_core.c
1746
udc->bus_reset = 0;
drivers/usb/gadget/udc/fsl_udc_core.c
1751
udc->gadget.speed =
drivers/usb/gadget/udc/fsl_udc_core.c
1755
if (!udc->resume_state)
drivers/usb/gadget/udc/fsl_udc_core.c
1756
udc->usb_state = USB_STATE_DEFAULT;
drivers/usb/gadget/udc/fsl_udc_core.c
1760
static void suspend_irq(struct fsl_udc *udc)
drivers/usb/gadget/udc/fsl_udc_core.c
1762
udc->resume_state = udc->usb_state;
drivers/usb/gadget/udc/fsl_udc_core.c
1763
udc->usb_state = USB_STATE_SUSPENDED;
drivers/usb/gadget/udc/fsl_udc_core.c
1766
if (udc->driver->suspend)
drivers/usb/gadget/udc/fsl_udc_core.c
1767
udc->driver->suspend(&udc->gadget);
drivers/usb/gadget/udc/fsl_udc_core.c
1770
static void bus_resume(struct fsl_udc *udc)
drivers/usb/gadget/udc/fsl_udc_core.c
1772
udc->usb_state = udc->resume_state;
drivers/usb/gadget/udc/fsl_udc_core.c
1773
udc->resume_state = 0;
drivers/usb/gadget/udc/fsl_udc_core.c
1776
if (udc->driver->resume)
drivers/usb/gadget/udc/fsl_udc_core.c
1777
udc->driver->resume(&udc->gadget);
drivers/usb/gadget/udc/fsl_udc_core.c
1781
static int reset_queues(struct fsl_udc *udc, bool bus_reset)
drivers/usb/gadget/udc/fsl_udc_core.c
1785
for (pipe = 0; pipe < udc->max_pipes; pipe++)
drivers/usb/gadget/udc/fsl_udc_core.c
1786
udc_reset_ep_queue(udc, pipe);
drivers/usb/gadget/udc/fsl_udc_core.c
1789
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/fsl_udc_core.c
1791
usb_gadget_udc_reset(&udc->gadget, udc->driver);
drivers/usb/gadget/udc/fsl_udc_core.c
1793
udc->driver->disconnect(&udc->gadget);
drivers/usb/gadget/udc/fsl_udc_core.c
1794
spin_lock(&udc->lock);
drivers/usb/gadget/udc/fsl_udc_core.c
1800
static void reset_irq(struct fsl_udc *udc)
drivers/usb/gadget/udc/fsl_udc_core.c
1809
udc->device_address = 0;
drivers/usb/gadget/udc/fsl_udc_core.c
181
dma_pool_free(udc->td_pool, curr_td, curr_td->td_dma);
drivers/usb/gadget/udc/fsl_udc_core.c
1812
udc->resume_state = 0;
drivers/usb/gadget/udc/fsl_udc_core.c
1813
udc->ep0_dir = 0;
drivers/usb/gadget/udc/fsl_udc_core.c
1814
udc->ep0_state = WAIT_FOR_SETUP;
drivers/usb/gadget/udc/fsl_udc_core.c
1815
udc->remote_wakeup = 0; /* default to 0 on reset */
drivers/usb/gadget/udc/fsl_udc_core.c
1816
udc->gadget.b_hnp_enable = 0;
drivers/usb/gadget/udc/fsl_udc_core.c
1817
udc->gadget.a_hnp_support = 0;
drivers/usb/gadget/udc/fsl_udc_core.c
1818
udc->gadget.a_alt_hnp_support = 0;
drivers/usb/gadget/udc/fsl_udc_core.c
1832
dev_err(&udc->gadget.dev, "Timeout for reset\n");
drivers/usb/gadget/udc/fsl_udc_core.c
184
usb_gadget_unmap_request(&ep->udc->gadget, &req->req, ep_is_in(ep));
drivers/usb/gadget/udc/fsl_udc_core.c
1842
dev_vdbg(&udc->gadget.dev, "Bus reset\n");
drivers/usb/gadget/udc/fsl_udc_core.c
1844
udc->bus_reset = 1;
drivers/usb/gadget/udc/fsl_udc_core.c
1847
reset_queues(udc, true);
drivers/usb/gadget/udc/fsl_udc_core.c
1848
udc->usb_state = USB_STATE_DEFAULT;
drivers/usb/gadget/udc/fsl_udc_core.c
1850
dev_vdbg(&udc->gadget.dev, "Controller reset\n");
drivers/usb/gadget/udc/fsl_udc_core.c
1853
dr_controller_setup(udc);
drivers/usb/gadget/udc/fsl_udc_core.c
1856
reset_queues(udc, false);
drivers/usb/gadget/udc/fsl_udc_core.c
1858
ep0_setup(udc);
drivers/usb/gadget/udc/fsl_udc_core.c
1861
dr_controller_run(udc);
drivers/usb/gadget/udc/fsl_udc_core.c
1862
udc->usb_state = USB_STATE_ATTACHED;
drivers/usb/gadget/udc/fsl_udc_core.c
187
dev_vdbg(&udc->gadget.dev, "complete %s req %p stat %d len %u/%u\n",
drivers/usb/gadget/udc/fsl_udc_core.c
1871
struct fsl_udc *udc = _udc;
drivers/usb/gadget/udc/fsl_udc_core.c
1877
if (udc->stopped)
drivers/usb/gadget/udc/fsl_udc_core.c
1879
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/fsl_udc_core.c
1887
if (udc->usb_state == USB_STATE_SUSPENDED)
drivers/usb/gadget/udc/fsl_udc_core.c
1889
bus_resume(udc);
drivers/usb/gadget/udc/fsl_udc_core.c
1893
dev_vdbg(&udc->gadget.dev, "Packet int\n");
drivers/usb/gadget/udc/fsl_udc_core.c
1896
tripwire_handler(udc, 0,
drivers/usb/gadget/udc/fsl_udc_core.c
1897
(u8 *) (&udc->local_setup_buff));
drivers/usb/gadget/udc/fsl_udc_core.c
1898
setup_received_irq(udc, &udc->local_setup_buff);
drivers/usb/gadget/udc/fsl_udc_core.c
1904
dtd_complete_irq(udc);
drivers/usb/gadget/udc/fsl_udc_core.c
1916
port_change_irq(udc);
drivers/usb/gadget/udc/fsl_udc_core.c
1922
dev_vdbg(&udc->gadget.dev, "reset int\n");
drivers/usb/gadget/udc/fsl_udc_core.c
1923
reset_irq(udc);
drivers/usb/gadget/udc/fsl_udc_core.c
1929
suspend_irq(udc);
drivers/usb/gadget/udc/fsl_udc_core.c
193
spin_unlock(&ep->udc->lock);
drivers/usb/gadget/udc/fsl_udc_core.c
1934
dev_vdbg(&udc->gadget.dev, "Error IRQ %x\n", irq_src);
drivers/usb/gadget/udc/fsl_udc_core.c
1937
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/fsl_udc_core.c
197
spin_lock(&ep->udc->lock);
drivers/usb/gadget/udc/fsl_udc_core.c
2034
struct fsl_udc *udc = udc_controller;
drivers/usb/gadget/udc/fsl_udc_core.c
2036
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/fsl_udc_core.c
2044
udc->driver ? udc->driver->driver.name : "(none)");
drivers/usb/gadget/udc/fsl_udc_core.c
2156
for (i = 0; i < udc->max_ep / 2; i++) {
drivers/usb/gadget/udc/fsl_udc_core.c
2163
if (udc->pdata->have_sysif_regs) {
drivers/usb/gadget/udc/fsl_udc_core.c
2172
ep = &udc->eps[0];
drivers/usb/gadget/udc/fsl_udc_core.c
2187
list_for_each_entry(ep, &udc->gadget.ep_list, ep.ep_list) {
drivers/usb/gadget/udc/fsl_udc_core.c
2209
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/fsl_udc_core.c
2244
static int struct_udc_setup(struct fsl_udc *udc,
drivers/usb/gadget/udc/fsl_udc_core.c
225
static int dr_controller_setup(struct fsl_udc *udc)
drivers/usb/gadget/udc/fsl_udc_core.c
2251
udc->phy_mode = pdata->phy_mode;
drivers/usb/gadget/udc/fsl_udc_core.c
2253
udc->eps = kzalloc_objs(struct fsl_ep, udc->max_ep);
drivers/usb/gadget/udc/fsl_udc_core.c
2254
if (!udc->eps) {
drivers/usb/gadget/udc/fsl_udc_core.c
2255
dev_err(&udc->gadget.dev, "kmalloc udc endpoint status failed\n");
drivers/usb/gadget/udc/fsl_udc_core.c
2260
size = udc->max_ep * sizeof(struct ep_queue_head);
drivers/usb/gadget/udc/fsl_udc_core.c
2267
udc->ep_qh = dma_alloc_coherent(&pdev->dev, size,
drivers/usb/gadget/udc/fsl_udc_core.c
2268
&udc->ep_qh_dma, GFP_KERNEL);
drivers/usb/gadget/udc/fsl_udc_core.c
2269
if (!udc->ep_qh) {
drivers/usb/gadget/udc/fsl_udc_core.c
2270
dev_err(&udc->gadget.dev, "malloc QHs for udc failed\n");
drivers/usb/gadget/udc/fsl_udc_core.c
2274
udc->ep_qh_size = size;
drivers/usb/gadget/udc/fsl_udc_core.c
2278
udc->status_req = container_of(fsl_alloc_request(NULL, GFP_KERNEL),
drivers/usb/gadget/udc/fsl_udc_core.c
2280
if (!udc->status_req) {
drivers/usb/gadget/udc/fsl_udc_core.c
2281
dev_err(&udc->gadget.dev, "kzalloc for udc status request failed\n");
drivers/usb/gadget/udc/fsl_udc_core.c
2286
udc->status_req->req.buf = kmalloc(8, GFP_KERNEL);
drivers/usb/gadget/udc/fsl_udc_core.c
2287
if (!udc->status_req->req.buf) {
drivers/usb/gadget/udc/fsl_udc_core.c
2288
dev_err(&udc->gadget.dev, "kzalloc for udc request buffer failed\n");
drivers/usb/gadget/udc/fsl_udc_core.c
2292
udc->resume_state = USB_STATE_NOTATTACHED;
drivers/usb/gadget/udc/fsl_udc_core.c
2293
udc->usb_state = USB_STATE_POWERED;
drivers/usb/gadget/udc/fsl_udc_core.c
2294
udc->ep0_dir = 0;
drivers/usb/gadget/udc/fsl_udc_core.c
2295
udc->remote_wakeup = 0; /* default to 0 on reset */
drivers/usb/gadget/udc/fsl_udc_core.c
2300
kfree(udc->status_req);
drivers/usb/gadget/udc/fsl_udc_core.c
2302
kfree(udc->ep_qh);
drivers/usb/gadget/udc/fsl_udc_core.c
2303
udc->ep_qh_size = 0;
drivers/usb/gadget/udc/fsl_udc_core.c
2305
kfree(udc->eps);
drivers/usb/gadget/udc/fsl_udc_core.c
2307
udc->phy_mode = 0;
drivers/usb/gadget/udc/fsl_udc_core.c
2318
static int struct_ep_setup(struct fsl_udc *udc, unsigned char index,
drivers/usb/gadget/udc/fsl_udc_core.c
2321
struct fsl_ep *ep = &udc->eps[index];
drivers/usb/gadget/udc/fsl_udc_core.c
2323
ep->udc = udc;
drivers/usb/gadget/udc/fsl_udc_core.c
2353
list_add_tail(&ep->ep.ep_list, &udc->gadget.ep_list);
drivers/usb/gadget/udc/fsl_udc_core.c
2354
ep->gadget = &udc->gadget;
drivers/usb/gadget/udc/fsl_udc_core.c
2355
ep->qh = &udc->ep_qh[index];
drivers/usb/gadget/udc/fsl_udc_core.c
237
switch (udc->phy_mode) {
drivers/usb/gadget/udc/fsl_udc_core.c
239
if (udc->pdata->have_sysif_regs) {
drivers/usb/gadget/udc/fsl_udc_core.c
240
if (udc->pdata->controller_ver) {
drivers/usb/gadget/udc/fsl_udc_core.c
255
if (udc->pdata->have_sysif_regs) {
drivers/usb/gadget/udc/fsl_udc_core.c
256
if (udc->pdata->controller_ver) {
drivers/usb/gadget/udc/fsl_udc_core.c
2614
struct fsl_udc *udc = udc_controller;
drivers/usb/gadget/udc/fsl_udc_core.c
2619
pr_debug("%s(): mode 0x%x stopped %d\n", __func__, mode, udc->stopped);
drivers/usb/gadget/udc/fsl_udc_core.c
2626
if (udc->stopped) {
drivers/usb/gadget/udc/fsl_udc_core.c
2628
udc->already_stopped = 1;
drivers/usb/gadget/udc/fsl_udc_core.c
2641
udc->stopped = 1;
drivers/usb/gadget/udc/fsl_udc_core.c
289
dev_err(&udc->gadget.dev, "udc reset timeout!\n");
drivers/usb/gadget/udc/fsl_udc_core.c
301
if (udc->pdata->es)
drivers/usb/gadget/udc/fsl_udc_core.c
308
tmp = udc->ep_qh_dma;
drivers/usb/gadget/udc/fsl_udc_core.c
312
dev_vdbg(&udc->gadget.dev,
drivers/usb/gadget/udc/fsl_udc_core.c
314
udc->ep_qh, (int)tmp,
drivers/usb/gadget/udc/fsl_udc_core.c
326
if (udc->pdata->have_sysif_regs) {
drivers/usb/gadget/udc/fsl_udc_core.c
336
if (udc->pdata->have_sysif_regs) {
drivers/usb/gadget/udc/fsl_udc_core.c
349
static void dr_controller_run(struct fsl_udc *udc)
drivers/usb/gadget/udc/fsl_udc_core.c
361
udc->stopped = 0;
drivers/usb/gadget/udc/fsl_udc_core.c
374
static void dr_controller_stop(struct fsl_udc *udc)
drivers/usb/gadget/udc/fsl_udc_core.c
384
if (udc->gadget.is_otg) {
drivers/usb/gadget/udc/fsl_udc_core.c
395
udc->stopped = 1;
drivers/usb/gadget/udc/fsl_udc_core.c
479
static void struct_ep_qh_setup(struct fsl_udc *udc, unsigned char ep_num,
drivers/usb/gadget/udc/fsl_udc_core.c
484
struct ep_queue_head *p_QH = &udc->ep_qh[2 * ep_num + dir];
drivers/usb/gadget/udc/fsl_udc_core.c
503
dev_vdbg(&udc->gadget.dev, "error ep type is %d\n", ep_type);
drivers/usb/gadget/udc/fsl_udc_core.c
515
static void ep0_setup(struct fsl_udc *udc)
drivers/usb/gadget/udc/fsl_udc_core.c
519
struct_ep_qh_setup(udc, 0, USB_RECV, USB_ENDPOINT_XFER_CONTROL,
drivers/usb/gadget/udc/fsl_udc_core.c
521
struct_ep_qh_setup(udc, 0, USB_SEND, USB_ENDPOINT_XFER_CONTROL,
drivers/usb/gadget/udc/fsl_udc_core.c
543
struct fsl_udc *udc = NULL;
drivers/usb/gadget/udc/fsl_udc_core.c
557
udc = ep->udc;
drivers/usb/gadget/udc/fsl_udc_core.c
559
if (!udc->driver || (udc->gadget.speed == USB_SPEED_UNKNOWN))
drivers/usb/gadget/udc/fsl_udc_core.c
591
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/fsl_udc_core.c
599
struct_ep_qh_setup(udc, (unsigned char) ep_index(ep),
drivers/usb/gadget/udc/fsl_udc_core.c
613
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/fsl_udc_core.c
616
dev_vdbg(&udc->gadget.dev, "enabled %s (ep%d%s) maxpacket %d\n",
drivers/usb/gadget/udc/fsl_udc_core.c
630
struct fsl_udc *udc = NULL;
drivers/usb/gadget/udc/fsl_udc_core.c
657
udc = (struct fsl_udc *)ep->udc;
drivers/usb/gadget/udc/fsl_udc_core.c
658
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/fsl_udc_core.c
665
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/fsl_udc_core.c
667
dev_vdbg(&udc->gadget.dev, "disabled %s OK\n", _ep->name);
drivers/usb/gadget/udc/fsl_udc_core.c
872
struct fsl_udc *udc = ep->udc;
drivers/usb/gadget/udc/fsl_udc_core.c
879
dev_vdbg(&udc->gadget.dev, "%s, bad params\n", __func__);
drivers/usb/gadget/udc/fsl_udc_core.c
883
dev_vdbg(&udc->gadget.dev, "%s, bad ep\n", __func__);
drivers/usb/gadget/udc/fsl_udc_core.c
891
if (!udc->driver || udc->gadget.speed == USB_SPEED_UNKNOWN)
drivers/usb/gadget/udc/fsl_udc_core.c
896
ret = usb_gadget_map_request(&ep->udc->gadget, &req->req, ep_is_in(ep));
drivers/usb/gadget/udc/fsl_udc_core.c
906
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/fsl_udc_core.c
915
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/fsl_udc_core.c
933
spin_lock_irqsave(&ep->udc->lock, flags);
drivers/usb/gadget/udc/fsl_udc_core.c
992
spin_unlock_irqrestore(&ep->udc->lock, flags);
drivers/usb/gadget/udc/fsl_usb2_udc.h
461
struct fsl_udc *udc;
drivers/usb/gadget/udc/fsl_usb2_udc.h
525
#define ep_is_in(EP) ( (ep_index(EP) == 0) ? (EP->udc->ep0_dir == \
drivers/usb/gadget/udc/fsl_usb2_udc.h
528
#define get_ep_by_pipe(udc, pipe) ((pipe == 1)? &udc->eps[0]: \
drivers/usb/gadget/udc/fsl_usb2_udc.h
529
&udc->eps[pipe])
drivers/usb/gadget/udc/fsl_usb2_udc.h
540
return &ep->udc->ep_qh[(ep->udc->ep0_dir ==
drivers/usb/gadget/udc/lpc32xx_udc.c
1001
static int udc_ep_out_req_dma(struct lpc32xx_udc *udc, struct lpc32xx_ep *ep)
drivers/usb/gadget/udc/lpc32xx_udc.c
101
struct lpc32xx_udc *udc;
drivers/usb/gadget/udc/lpc32xx_udc.c
1012
udc->udca_v_base[hwep] = req->dd_desc_ptr->this_dma;
drivers/usb/gadget/udc/lpc32xx_udc.c
1015
udc_ep_dma_enable(udc, hwep);
drivers/usb/gadget/udc/lpc32xx_udc.c
1019
static void udc_disable(struct lpc32xx_udc *udc)
drivers/usb/gadget/udc/lpc32xx_udc.c
1024
udc_protocol_cmd_data_w(udc, CMD_CFG_DEV, DAT_WR_BYTE(0));
drivers/usb/gadget/udc/lpc32xx_udc.c
1025
udc_protocol_cmd_data_w(udc, CMD_SET_DEV_STAT, DAT_WR_BYTE(0));
drivers/usb/gadget/udc/lpc32xx_udc.c
1028
uda_disable_devint(udc, 0x3FF);
drivers/usb/gadget/udc/lpc32xx_udc.c
1032
uda_disable_hwepint(udc, i);
drivers/usb/gadget/udc/lpc32xx_udc.c
1033
uda_clear_hwepint(udc, i);
drivers/usb/gadget/udc/lpc32xx_udc.c
1034
udc_disable_hwep(udc, i);
drivers/usb/gadget/udc/lpc32xx_udc.c
1035
udc_unrealize_hwep(udc, i);
drivers/usb/gadget/udc/lpc32xx_udc.c
1036
udc->udca_v_base[i] = 0;
drivers/usb/gadget/udc/lpc32xx_udc.c
1039
udc_ep_dma_disable(udc, i);
drivers/usb/gadget/udc/lpc32xx_udc.c
1040
writel((1 << i), USBD_EOTINTCLR(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
1041
writel((1 << i), USBD_NDDRTINTCLR(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
1042
writel((1 << i), USBD_SYSERRTINTCLR(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
1043
writel((1 << i), USBD_DMARCLR(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
1047
writel(0, USBD_DMAINTEN(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
1049
writel(0, USBD_UDCAH(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
1052
static void udc_enable(struct lpc32xx_udc *udc)
drivers/usb/gadget/udc/lpc32xx_udc.c
1055
struct lpc32xx_ep *ep = &udc->ep[0];
drivers/usb/gadget/udc/lpc32xx_udc.c
1058
udc_disable(udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
1061
udc_protocol_cmd_data_w(udc, CMD_SET_DEV_STAT, DAT_WR_BYTE(DEV_CON));
drivers/usb/gadget/udc/lpc32xx_udc.c
1064
writel(USBD_EP_FAST, USBD_DEVINTPRI(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
1065
writel(0xFFFF, USBD_EPINTPRI(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
1068
writel(0x3FF, USBD_DEVINTCLR(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
1071
writel(udc->udca_p_base, USBD_UDCAH(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
1075
udc_realize_hwep(udc, i, ep->ep.maxpacket);
drivers/usb/gadget/udc/lpc32xx_udc.c
1076
uda_enable_hwepint(udc, i);
drivers/usb/gadget/udc/lpc32xx_udc.c
1077
udc_select_hwep(udc, i);
drivers/usb/gadget/udc/lpc32xx_udc.c
1078
udc_clrstall_hwep(udc, i);
drivers/usb/gadget/udc/lpc32xx_udc.c
1079
udc_clr_buffer_hwep(udc, i);
drivers/usb/gadget/udc/lpc32xx_udc.c
1083
uda_clear_devint(udc, (USBD_ERR_INT | USBD_DEV_STAT | USBD_EP_SLOW |
drivers/usb/gadget/udc/lpc32xx_udc.c
1085
uda_enable_devint(udc, (USBD_ERR_INT | USBD_DEV_STAT | USBD_EP_SLOW |
drivers/usb/gadget/udc/lpc32xx_udc.c
1090
udc_set_address(udc, 0);
drivers/usb/gadget/udc/lpc32xx_udc.c
1091
udc_set_address(udc, 0);
drivers/usb/gadget/udc/lpc32xx_udc.c
1095
USBD_DMAINTEN(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
1097
udc->dev_status = 0;
drivers/usb/gadget/udc/lpc32xx_udc.c
1106
static void uda_power_event(struct lpc32xx_udc *udc, u32 conn)
drivers/usb/gadget/udc/lpc32xx_udc.c
1109
if (udc->board->conn_chgb != NULL)
drivers/usb/gadget/udc/lpc32xx_udc.c
1110
udc->board->conn_chgb(conn);
drivers/usb/gadget/udc/lpc32xx_udc.c
1114
static void uda_resm_susp_event(struct lpc32xx_udc *udc, u32 conn)
drivers/usb/gadget/udc/lpc32xx_udc.c
1117
if (udc->board->susp_chgb != NULL)
drivers/usb/gadget/udc/lpc32xx_udc.c
1118
udc->board->susp_chgb(conn);
drivers/usb/gadget/udc/lpc32xx_udc.c
1121
udc->suspended = 0;
drivers/usb/gadget/udc/lpc32xx_udc.c
1123
udc->suspended = 1;
drivers/usb/gadget/udc/lpc32xx_udc.c
1127
static void uda_remwkp_cgh(struct lpc32xx_udc *udc)
drivers/usb/gadget/udc/lpc32xx_udc.c
1129
if (udc->board->rmwk_chgb != NULL)
drivers/usb/gadget/udc/lpc32xx_udc.c
1130
udc->board->rmwk_chgb(udc->dev_status &
drivers/usb/gadget/udc/lpc32xx_udc.c
1135
static void udc_pop_fifo(struct lpc32xx_udc *udc, u8 *data, u32 bytes)
drivers/usb/gadget/udc/lpc32xx_udc.c
1149
*p32++ = readl(USBD_RXDATA(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
1154
tmp = readl(USBD_RXDATA(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
1165
tmp = readl(USBD_RXDATA(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
1182
tmp = readl(USBD_RXDATA(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
1190
tmp = readl(USBD_RXDATA(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
1202
static u32 udc_read_hwep(struct lpc32xx_udc *udc, u32 hwep, u32 *data,
drivers/usb/gadget/udc/lpc32xx_udc.c
1210
writel(hwrep, USBD_CTRL(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
1213
while ((((tmpv = readl(USBD_RXPLEN(udc->udp_baseaddr))) &
drivers/usb/gadget/udc/lpc32xx_udc.c
1217
dev_dbg(udc->dev, "No packet ready on FIFO EP read\n");
drivers/usb/gadget/udc/lpc32xx_udc.c
1225
udc_pop_fifo(udc, (u8 *) data, tmp);
drivers/usb/gadget/udc/lpc32xx_udc.c
1227
writel(((hwep & 0x1E) << 1), USBD_CTRL(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
1230
udc_clr_buffer_hwep(udc, hwep);
drivers/usb/gadget/udc/lpc32xx_udc.c
1236
static void udc_stuff_fifo(struct lpc32xx_udc *udc, u8 *data, u32 bytes)
drivers/usb/gadget/udc/lpc32xx_udc.c
1250
writel(*p32++, USBD_TXDATA(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
1259
writel(tmp, USBD_TXDATA(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
1275
writel(tmp, USBD_TXDATA(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
1287
writel(tmp, USBD_TXDATA(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
1297
writel(tmp, USBD_TXDATA(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
1306
static void udc_write_hwep(struct lpc32xx_udc *udc, u32 hwep, u32 *data,
drivers/usb/gadget/udc/lpc32xx_udc.c
1315
writel(hwwep, USBD_CTRL(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
1317
writel(bytes, USBD_TXPLEN(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
1321
writel(0, USBD_TXDATA(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
1323
udc_stuff_fifo(udc, (u8 *) data, bytes);
drivers/usb/gadget/udc/lpc32xx_udc.c
1325
writel(((hwep & 0x1E) << 1), USBD_CTRL(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
1327
udc_val_buffer_hwep(udc, hwep);
drivers/usb/gadget/udc/lpc32xx_udc.c
1332
static void uda_usb_reset(struct lpc32xx_udc *udc)
drivers/usb/gadget/udc/lpc32xx_udc.c
1336
udc_enable(udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
1337
udc->gadget.speed = USB_SPEED_FULL;
drivers/usb/gadget/udc/lpc32xx_udc.c
1340
struct lpc32xx_ep *ep = &udc->ep[i];
drivers/usb/gadget/udc/lpc32xx_udc.c
1346
static void udc_ep0_send_zlp(struct lpc32xx_udc *udc)
drivers/usb/gadget/udc/lpc32xx_udc.c
1348
udc_write_hwep(udc, EP_IN, NULL, 0);
drivers/usb/gadget/udc/lpc32xx_udc.c
1352
static u16 udc_get_current_frame(struct lpc32xx_udc *udc)
drivers/usb/gadget/udc/lpc32xx_udc.c
1356
udc_protocol_cmd_w(udc, CMD_RD_FRAME);
drivers/usb/gadget/udc/lpc32xx_udc.c
1357
flo = (u16) udc_protocol_cmd_r(udc, DAT_RD_FRAME);
drivers/usb/gadget/udc/lpc32xx_udc.c
1358
fhi = (u16) udc_protocol_cmd_r(udc, DAT_RD_FRAME);
drivers/usb/gadget/udc/lpc32xx_udc.c
1364
static inline void udc_set_device_configured(struct lpc32xx_udc *udc)
drivers/usb/gadget/udc/lpc32xx_udc.c
1366
udc_protocol_cmd_data_w(udc, CMD_CFG_DEV, DAT_WR_BYTE(CONF_DVICE));
drivers/usb/gadget/udc/lpc32xx_udc.c
1370
static inline void udc_set_device_unconfigured(struct lpc32xx_udc *udc)
drivers/usb/gadget/udc/lpc32xx_udc.c
1372
udc_protocol_cmd_data_w(udc, CMD_CFG_DEV, DAT_WR_BYTE(0));
drivers/usb/gadget/udc/lpc32xx_udc.c
1376
static void udc_reinit(struct lpc32xx_udc *udc)
drivers/usb/gadget/udc/lpc32xx_udc.c
1380
INIT_LIST_HEAD(&udc->gadget.ep_list);
drivers/usb/gadget/udc/lpc32xx_udc.c
1381
INIT_LIST_HEAD(&udc->gadget.ep0->ep_list);
drivers/usb/gadget/udc/lpc32xx_udc.c
1384
struct lpc32xx_ep *ep = &udc->ep[i];
drivers/usb/gadget/udc/lpc32xx_udc.c
1387
list_add_tail(&ep->ep.ep_list, &udc->gadget.ep_list);
drivers/usb/gadget/udc/lpc32xx_udc.c
1393
udc->ep0state = WAIT_FOR_SETUP;
drivers/usb/gadget/udc/lpc32xx_udc.c
1399
struct lpc32xx_udc *udc = ep->udc;
drivers/usb/gadget/udc/lpc32xx_udc.c
1408
usb_gadget_unmap_request(&udc->gadget, &req->req, ep->is_in);
drivers/usb/gadget/udc/lpc32xx_udc.c
1411
udc_dd_free(udc, req->dd_desc_ptr);
drivers/usb/gadget/udc/lpc32xx_udc.c
1418
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/lpc32xx_udc.c
1420
spin_lock(&udc->lock);
drivers/usb/gadget/udc/lpc32xx_udc.c
1434
uda_disable_hwepint(ep->udc, ep->hwep_num);
drivers/usb/gadget/udc/lpc32xx_udc.c
1435
udc_disable_hwep(ep->udc, ep->hwep_num);
drivers/usb/gadget/udc/lpc32xx_udc.c
1440
static int udc_ep0_in_req(struct lpc32xx_udc *udc)
drivers/usb/gadget/udc/lpc32xx_udc.c
1443
struct lpc32xx_ep *ep0 = &udc->ep[0];
drivers/usb/gadget/udc/lpc32xx_udc.c
1456
udc_ep0_send_zlp(udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
1463
udc_write_hwep(udc, EP_IN, (req->req.buf + req->req.actual), ts);
drivers/usb/gadget/udc/lpc32xx_udc.c
1472
udc->ep0state = WAIT_FOR_SETUP;
drivers/usb/gadget/udc/lpc32xx_udc.c
1478
static int udc_ep0_out_req(struct lpc32xx_udc *udc)
drivers/usb/gadget/udc/lpc32xx_udc.c
1481
struct lpc32xx_ep *ep0 = &udc->ep[0];
drivers/usb/gadget/udc/lpc32xx_udc.c
1493
udc->ep0state = WAIT_FOR_SETUP;
drivers/usb/gadget/udc/lpc32xx_udc.c
1504
tr = udc_read_hwep(udc, EP_OUT, req->req.buf + req->req.actual,
drivers/usb/gadget/udc/lpc32xx_udc.c
1511
udc->ep0state = WAIT_FOR_SETUP;
drivers/usb/gadget/udc/lpc32xx_udc.c
1519
static void stop_activity(struct lpc32xx_udc *udc)
drivers/usb/gadget/udc/lpc32xx_udc.c
1521
struct usb_gadget_driver *driver = udc->driver;
drivers/usb/gadget/udc/lpc32xx_udc.c
1524
if (udc->gadget.speed == USB_SPEED_UNKNOWN)
drivers/usb/gadget/udc/lpc32xx_udc.c
1527
udc->gadget.speed = USB_SPEED_UNKNOWN;
drivers/usb/gadget/udc/lpc32xx_udc.c
1528
udc->suspended = 0;
drivers/usb/gadget/udc/lpc32xx_udc.c
1531
struct lpc32xx_ep *ep = &udc->ep[i];
drivers/usb/gadget/udc/lpc32xx_udc.c
1535
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/lpc32xx_udc.c
1536
driver->disconnect(&udc->gadget);
drivers/usb/gadget/udc/lpc32xx_udc.c
1537
spin_lock(&udc->lock);
drivers/usb/gadget/udc/lpc32xx_udc.c
1540
isp1301_pullup_enable(udc, 0, 0);
drivers/usb/gadget/udc/lpc32xx_udc.c
1541
udc_disable(udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
1542
udc_reinit(udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
1549
static void pullup(struct lpc32xx_udc *udc, int is_on)
drivers/usb/gadget/udc/lpc32xx_udc.c
1551
if (!udc->clocked)
drivers/usb/gadget/udc/lpc32xx_udc.c
1554
if (!udc->enabled || !udc->vbus)
drivers/usb/gadget/udc/lpc32xx_udc.c
1557
if (is_on != udc->pullup)
drivers/usb/gadget/udc/lpc32xx_udc.c
1558
isp1301_pullup_enable(udc, is_on, 0);
drivers/usb/gadget/udc/lpc32xx_udc.c
1565
struct lpc32xx_udc *udc = ep->udc;
drivers/usb/gadget/udc/lpc32xx_udc.c
1570
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/lpc32xx_udc.c
1575
udc_ep_dma_disable(udc, ep->hwep_num);
drivers/usb/gadget/udc/lpc32xx_udc.c
1576
writel(1 << ep->hwep_num, USBD_EOTINTCLR(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
1577
writel(1 << ep->hwep_num, USBD_NDDRTINTCLR(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
1578
writel(1 << ep->hwep_num, USBD_SYSERRTINTCLR(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
1579
writel(1 << ep->hwep_num, USBD_DMARCLR(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
1582
udc->udca_v_base[ep->hwep_num] = 0;
drivers/usb/gadget/udc/lpc32xx_udc.c
1585
uda_clear_hwepint(udc, ep->hwep_num);
drivers/usb/gadget/udc/lpc32xx_udc.c
1586
udc_unrealize_hwep(udc, ep->hwep_num);
drivers/usb/gadget/udc/lpc32xx_udc.c
1590
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/lpc32xx_udc.c
1592
atomic_dec(&udc->enabled_ep_cnt);
drivers/usb/gadget/udc/lpc32xx_udc.c
1593
wake_up(&udc->ep_disable_wait_queue);
drivers/usb/gadget/udc/lpc32xx_udc.c
1603
struct lpc32xx_udc *udc;
drivers/usb/gadget/udc/lpc32xx_udc.c
1613
udc = ep->udc;
drivers/usb/gadget/udc/lpc32xx_udc.c
1616
dev_dbg(udc->dev, "bad ep descriptor's packet size\n");
drivers/usb/gadget/udc/lpc32xx_udc.c
1622
dev_dbg(udc->dev, "Can't re-enable EP0!!!\n");
drivers/usb/gadget/udc/lpc32xx_udc.c
1627
if ((!udc->driver) || (udc->gadget.speed == USB_SPEED_UNKNOWN)) {
drivers/usb/gadget/udc/lpc32xx_udc.c
1628
dev_dbg(udc->dev, "bogus device state\n");
drivers/usb/gadget/udc/lpc32xx_udc.c
1639
dev_dbg(udc->dev,
drivers/usb/gadget/udc/lpc32xx_udc.c
1654
dev_dbg(udc->dev,
drivers/usb/gadget/udc/lpc32xx_udc.c
1663
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/lpc32xx_udc.c
1681
udc_realize_hwep(udc, ep->hwep_num, ep->ep.maxpacket);
drivers/usb/gadget/udc/lpc32xx_udc.c
1682
udc_clr_buffer_hwep(udc, ep->hwep_num);
drivers/usb/gadget/udc/lpc32xx_udc.c
1683
uda_disable_hwepint(udc, ep->hwep_num);
drivers/usb/gadget/udc/lpc32xx_udc.c
1684
udc_clrstall_hwep(udc, ep->hwep_num);
drivers/usb/gadget/udc/lpc32xx_udc.c
1687
udc_ep_dma_disable(udc, ep->hwep_num);
drivers/usb/gadget/udc/lpc32xx_udc.c
1688
writel(1 << ep->hwep_num, USBD_EOTINTCLR(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
1689
writel(1 << ep->hwep_num, USBD_NDDRTINTCLR(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
1690
writel(1 << ep->hwep_num, USBD_SYSERRTINTCLR(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
1691
writel(1 << ep->hwep_num, USBD_DMARCLR(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
1693
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/lpc32xx_udc.c
1695
atomic_inc(&udc->enabled_ep_cnt);
drivers/usb/gadget/udc/lpc32xx_udc.c
1736
struct lpc32xx_udc *udc;
drivers/usb/gadget/udc/lpc32xx_udc.c
1747
udc = ep->udc;
drivers/usb/gadget/udc/lpc32xx_udc.c
1749
if (udc->gadget.speed == USB_SPEED_UNKNOWN)
drivers/usb/gadget/udc/lpc32xx_udc.c
1755
status = usb_gadget_map_request(&udc->gadget, _req, ep->is_in);
drivers/usb/gadget/udc/lpc32xx_udc.c
1760
dd = udc_dd_alloc(udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
1790
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/lpc32xx_udc.c
1804
udc->ep0state = DATA_IN;
drivers/usb/gadget/udc/lpc32xx_udc.c
1805
status = udc_ep0_in_req(udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
1808
udc->ep0state = DATA_OUT;
drivers/usb/gadget/udc/lpc32xx_udc.c
1809
status = udc_ep0_out_req(udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
1814
udc_ep_in_req_dma(udc, ep);
drivers/usb/gadget/udc/lpc32xx_udc.c
1818
udc_ep_out_req_dma(udc, ep);
drivers/usb/gadget/udc/lpc32xx_udc.c
1822
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/lpc32xx_udc.c
1838
spin_lock_irqsave(&ep->udc->lock, flags);
drivers/usb/gadget/udc/lpc32xx_udc.c
1848
spin_unlock_irqrestore(&ep->udc->lock, flags);
drivers/usb/gadget/udc/lpc32xx_udc.c
1854
spin_unlock_irqrestore(&ep->udc->lock, flags);
drivers/usb/gadget/udc/lpc32xx_udc.c
1863
struct lpc32xx_udc *udc;
drivers/usb/gadget/udc/lpc32xx_udc.c
1873
udc = ep->udc;
drivers/usb/gadget/udc/lpc32xx_udc.c
1874
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/lpc32xx_udc.c
1878
udc_protocol_cmd_data_w(udc, CMD_SET_EP_STAT(ep->hwep_num),
drivers/usb/gadget/udc/lpc32xx_udc.c
188
dev_dbg(epp->udc->dev, "%s: " fmt, __func__, ## arg)
drivers/usb/gadget/udc/lpc32xx_udc.c
1883
udc_protocol_cmd_data_w(udc, CMD_SET_EP_STAT(ep->hwep_num),
drivers/usb/gadget/udc/lpc32xx_udc.c
1887
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/lpc32xx_udc.c
1897
if (!_ep || !ep->udc)
drivers/usb/gadget/udc/lpc32xx_udc.c
190
dev_err(epp->udc->dev, "%s: " fmt, __func__, ## arg)
drivers/usb/gadget/udc/lpc32xx_udc.c
1917
static void udc_send_in_zlp(struct lpc32xx_udc *udc, struct lpc32xx_ep *ep)
drivers/usb/gadget/udc/lpc32xx_udc.c
192
dev_info(epp->udc->dev, "%s: " fmt, __func__, ## arg)
drivers/usb/gadget/udc/lpc32xx_udc.c
1920
udc_clearep_getsts(udc, ep->hwep_num);
drivers/usb/gadget/udc/lpc32xx_udc.c
1923
udc_write_hwep(udc, ep->hwep_num, NULL, 0);
drivers/usb/gadget/udc/lpc32xx_udc.c
1931
static void udc_handle_eps(struct lpc32xx_udc *udc, struct lpc32xx_ep *ep)
drivers/usb/gadget/udc/lpc32xx_udc.c
1939
uda_clear_hwepint(udc, ep->hwep_num);
drivers/usb/gadget/udc/lpc32xx_udc.c
194
dev_warn(epp->udc->dev, "%s:" fmt, __func__, ## arg)
drivers/usb/gadget/udc/lpc32xx_udc.c
1942
if (!(udc->enabled_hwepints & (1 << ep->hwep_num)))
drivers/usb/gadget/udc/lpc32xx_udc.c
1946
epstatus = udc_clearep_getsts(udc, ep->hwep_num);
drivers/usb/gadget/udc/lpc32xx_udc.c
1956
udc_send_in_zlp(udc, ep);
drivers/usb/gadget/udc/lpc32xx_udc.c
1957
uda_disable_hwepint(udc, ep->hwep_num);
drivers/usb/gadget/udc/lpc32xx_udc.c
1969
udc_ep_in_req_dma(udc, ep);
drivers/usb/gadget/udc/lpc32xx_udc.c
1971
udc_ep_out_req_dma(udc, ep);
drivers/usb/gadget/udc/lpc32xx_udc.c
1978
static void udc_handle_dma_ep(struct lpc32xx_udc *udc, struct lpc32xx_ep *ep)
drivers/usb/gadget/udc/lpc32xx_udc.c
1996
udc_ep_dma_disable(udc, ep->hwep_num);
drivers/usb/gadget/udc/lpc32xx_udc.c
1997
writel((1 << ep->hwep_num), USBD_EOTINTCLR(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
1998
writel((1 << ep->hwep_num), USBD_NDDRTINTCLR(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
2001
if (readl(USBD_SYSERRTINTST(udc->udp_baseaddr)) &
drivers/usb/gadget/udc/lpc32xx_udc.c
2004
USBD_SYSERRTINTCLR(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
2067
if (udc_clearep_getsts(udc, ep->hwep_num) & EP_SEL_F) {
drivers/usb/gadget/udc/lpc32xx_udc.c
2068
udc_clearep_getsts(udc, ep->hwep_num);
drivers/usb/gadget/udc/lpc32xx_udc.c
2069
uda_enable_hwepint(udc, ep->hwep_num);
drivers/usb/gadget/udc/lpc32xx_udc.c
2070
udc_clearep_getsts(udc, ep->hwep_num);
drivers/usb/gadget/udc/lpc32xx_udc.c
2075
udc_send_in_zlp(udc, ep);
drivers/usb/gadget/udc/lpc32xx_udc.c
2082
udc_clearep_getsts(udc, ep->hwep_num);
drivers/usb/gadget/udc/lpc32xx_udc.c
2085
udc_ep_in_req_dma(udc, ep);
drivers/usb/gadget/udc/lpc32xx_udc.c
2087
udc_ep_out_req_dma(udc, ep);
drivers/usb/gadget/udc/lpc32xx_udc.c
2098
static void udc_handle_dev(struct lpc32xx_udc *udc)
drivers/usb/gadget/udc/lpc32xx_udc.c
2102
udc_protocol_cmd_w(udc, CMD_GET_DEV_STAT);
drivers/usb/gadget/udc/lpc32xx_udc.c
2103
tmp = udc_protocol_cmd_r(udc, DAT_GET_DEV_STAT);
drivers/usb/gadget/udc/lpc32xx_udc.c
2106
uda_usb_reset(udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
2108
uda_power_event(udc, (tmp & DEV_CON));
drivers/usb/gadget/udc/lpc32xx_udc.c
2111
if (udc->vbus == 0)
drivers/usb/gadget/udc/lpc32xx_udc.c
2112
stop_activity(udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
2113
else if ((udc->gadget.speed != USB_SPEED_UNKNOWN) &&
drivers/usb/gadget/udc/lpc32xx_udc.c
2114
udc->driver) {
drivers/usb/gadget/udc/lpc32xx_udc.c
2116
udc->poweron = 0;
drivers/usb/gadget/udc/lpc32xx_udc.c
2117
schedule_work(&udc->pullup_job);
drivers/usb/gadget/udc/lpc32xx_udc.c
2118
uda_resm_susp_event(udc, 1);
drivers/usb/gadget/udc/lpc32xx_udc.c
2120
} else if ((udc->gadget.speed != USB_SPEED_UNKNOWN) &&
drivers/usb/gadget/udc/lpc32xx_udc.c
2121
udc->driver && udc->vbus) {
drivers/usb/gadget/udc/lpc32xx_udc.c
2122
uda_resm_susp_event(udc, 0);
drivers/usb/gadget/udc/lpc32xx_udc.c
2124
udc->poweron = 1;
drivers/usb/gadget/udc/lpc32xx_udc.c
2125
schedule_work(&udc->pullup_job);
drivers/usb/gadget/udc/lpc32xx_udc.c
2130
static int udc_get_status(struct lpc32xx_udc *udc, u16 reqtype, u16 wIndex)
drivers/usb/gadget/udc/lpc32xx_udc.c
2140
ep0buff = udc->gadget.is_selfpowered;
drivers/usb/gadget/udc/lpc32xx_udc.c
2141
if (udc->dev_status & (1 << USB_DEVICE_REMOTE_WAKEUP))
drivers/usb/gadget/udc/lpc32xx_udc.c
2147
ep = &udc->ep[tmp];
drivers/usb/gadget/udc/lpc32xx_udc.c
2158
udc_protocol_cmd_w(udc, CMD_SEL_EP(ep->hwep_num));
drivers/usb/gadget/udc/lpc32xx_udc.c
2159
tmp = udc_protocol_cmd_r(udc, DAT_SEL_EP(ep->hwep_num));
drivers/usb/gadget/udc/lpc32xx_udc.c
2172
udc_write_hwep(udc, EP_IN, &ep0buff, 2);
drivers/usb/gadget/udc/lpc32xx_udc.c
2177
static void udc_handle_ep0_setup(struct lpc32xx_udc *udc)
drivers/usb/gadget/udc/lpc32xx_udc.c
2179
struct lpc32xx_ep *ep, *ep0 = &udc->ep[0];
drivers/usb/gadget/udc/lpc32xx_udc.c
2188
bytes = udc_read_hwep(udc, EP_OUT, (u32 *) &ctrlpkt, 8);
drivers/usb/gadget/udc/lpc32xx_udc.c
2218
udc->dev_status &=
drivers/usb/gadget/udc/lpc32xx_udc.c
2221
udc->dev_status |=
drivers/usb/gadget/udc/lpc32xx_udc.c
2223
uda_remwkp_cgh(udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
2233
ep = &udc->ep[tmp];
drivers/usb/gadget/udc/lpc32xx_udc.c
2239
udc_stall_hwep(udc, tmp);
drivers/usb/gadget/udc/lpc32xx_udc.c
2241
udc_clrstall_hwep(udc, tmp);
drivers/usb/gadget/udc/lpc32xx_udc.c
2252
udc_set_address(udc, wValue);
drivers/usb/gadget/udc/lpc32xx_udc.c
2258
udc_get_status(udc, reqtype, wIndex);
drivers/usb/gadget/udc/lpc32xx_udc.c
2265
if (likely(udc->driver)) {
drivers/usb/gadget/udc/lpc32xx_udc.c
2268
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/lpc32xx_udc.c
2269
i = udc->driver->setup(&udc->gadget, &ctrlpkt);
drivers/usb/gadget/udc/lpc32xx_udc.c
2271
spin_lock(&udc->lock);
drivers/usb/gadget/udc/lpc32xx_udc.c
2276
udc_set_device_configured(udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
2278
udc_protocol_cmd_data_w(udc, CMD_SET_MODE,
drivers/usb/gadget/udc/lpc32xx_udc.c
2283
udc_set_device_unconfigured(udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
2286
udc_protocol_cmd_data_w(udc, CMD_SET_MODE,
drivers/usb/gadget/udc/lpc32xx_udc.c
2293
dev_dbg(udc->dev,
drivers/usb/gadget/udc/lpc32xx_udc.c
2296
udc->ep0state = WAIT_FOR_SETUP;
drivers/usb/gadget/udc/lpc32xx_udc.c
2302
udc_ep0_send_zlp(udc); /* ZLP IN packet on data phase */
drivers/usb/gadget/udc/lpc32xx_udc.c
2307
udc_stall_hwep(udc, EP_IN);
drivers/usb/gadget/udc/lpc32xx_udc.c
2311
udc_ep0_send_zlp(udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
2316
static void udc_handle_ep0_in(struct lpc32xx_udc *udc)
drivers/usb/gadget/udc/lpc32xx_udc.c
2318
struct lpc32xx_ep *ep0 = &udc->ep[0];
drivers/usb/gadget/udc/lpc32xx_udc.c
2322
epstatus = udc_clearep_getsts(udc, EP_IN);
drivers/usb/gadget/udc/lpc32xx_udc.c
2330
udc_clrstall_hwep(udc, EP_IN);
drivers/usb/gadget/udc/lpc32xx_udc.c
2332
udc->ep0state = WAIT_FOR_SETUP;
drivers/usb/gadget/udc/lpc32xx_udc.c
2339
if (udc->ep0state == DATA_IN)
drivers/usb/gadget/udc/lpc32xx_udc.c
2340
udc_ep0_in_req(udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
2344
udc->ep0state = WAIT_FOR_SETUP;
drivers/usb/gadget/udc/lpc32xx_udc.c
2350
static void udc_handle_ep0_out(struct lpc32xx_udc *udc)
drivers/usb/gadget/udc/lpc32xx_udc.c
2352
struct lpc32xx_ep *ep0 = &udc->ep[0];
drivers/usb/gadget/udc/lpc32xx_udc.c
2356
epstatus = udc_clearep_getsts(udc, EP_OUT);
drivers/usb/gadget/udc/lpc32xx_udc.c
2365
udc_clrstall_hwep(udc, EP_OUT);
drivers/usb/gadget/udc/lpc32xx_udc.c
2367
udc->ep0state = WAIT_FOR_SETUP;
drivers/usb/gadget/udc/lpc32xx_udc.c
2377
udc->ep0state = WAIT_FOR_SETUP;
drivers/usb/gadget/udc/lpc32xx_udc.c
2383
switch (udc->ep0state) {
drivers/usb/gadget/udc/lpc32xx_udc.c
2385
udc_handle_ep0_setup(udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
2389
udc_ep0_out_req(udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
2395
udc->ep0state = WAIT_FOR_SETUP;
drivers/usb/gadget/udc/lpc32xx_udc.c
2404
struct lpc32xx_udc *udc = to_udc(gadget);
drivers/usb/gadget/udc/lpc32xx_udc.c
2406
if (!udc->clocked)
drivers/usb/gadget/udc/lpc32xx_udc.c
2409
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/lpc32xx_udc.c
2411
frame = (int) udc_get_current_frame(udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
2413
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/lpc32xx_udc.c
2437
struct lpc32xx_udc *udc = to_udc(gadget);
drivers/usb/gadget/udc/lpc32xx_udc.c
2439
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/lpc32xx_udc.c
2442
if (udc->driver) {
drivers/usb/gadget/udc/lpc32xx_udc.c
2443
udc_clk_set(udc, 1);
drivers/usb/gadget/udc/lpc32xx_udc.c
2444
udc_enable(udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
2445
pullup(udc, is_active);
drivers/usb/gadget/udc/lpc32xx_udc.c
2447
stop_activity(udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
2448
pullup(udc, 0);
drivers/usb/gadget/udc/lpc32xx_udc.c
2450
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/lpc32xx_udc.c
2456
if (atomic_read(&udc->enabled_ep_cnt))
drivers/usb/gadget/udc/lpc32xx_udc.c
2457
wait_event_interruptible(udc->ep_disable_wait_queue,
drivers/usb/gadget/udc/lpc32xx_udc.c
2458
(atomic_read(&udc->enabled_ep_cnt) == 0));
drivers/usb/gadget/udc/lpc32xx_udc.c
2460
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/lpc32xx_udc.c
2462
udc_clk_set(udc, 0);
drivers/usb/gadget/udc/lpc32xx_udc.c
2465
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/lpc32xx_udc.c
2473
struct lpc32xx_udc *udc = to_udc(gadget);
drivers/usb/gadget/udc/lpc32xx_udc.c
2476
pullup(udc, is_on);
drivers/usb/gadget/udc/lpc32xx_udc.c
2722
struct lpc32xx_udc *udc = _udc;
drivers/usb/gadget/udc/lpc32xx_udc.c
2724
spin_lock(&udc->lock);
drivers/usb/gadget/udc/lpc32xx_udc.c
2727
devstat = readl(USBD_DEVINTST(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
2730
writel(devstat, USBD_DEVINTCLR(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
2731
devstat = devstat & udc->enabled_devints;
drivers/usb/gadget/udc/lpc32xx_udc.c
2735
udc_handle_dev(udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
2747
udc_protocol_cmd_w(udc, CMD_RD_ERR_STAT);
drivers/usb/gadget/udc/lpc32xx_udc.c
2748
tmp = udc_protocol_cmd_r(udc, DAT_RD_ERR_STAT);
drivers/usb/gadget/udc/lpc32xx_udc.c
2749
dev_dbg(udc->dev, "Device error (0x%x)!\n", tmp);
drivers/usb/gadget/udc/lpc32xx_udc.c
2752
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/lpc32xx_udc.c
2761
struct lpc32xx_udc *udc = _udc;
drivers/usb/gadget/udc/lpc32xx_udc.c
2763
spin_lock(&udc->lock);
drivers/usb/gadget/udc/lpc32xx_udc.c
2766
writel(USBD_EP_FAST, USBD_DEVINTCLR(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
2769
tmp = readl(USBD_EPINTST(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
2775
udc_handle_ep0_in(udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
2779
udc_handle_ep0_out(udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
2788
if (tmp & (1 << udc->ep[i].hwep_num))
drivers/usb/gadget/udc/lpc32xx_udc.c
2789
udc_handle_eps(udc, &udc->ep[i]);
drivers/usb/gadget/udc/lpc32xx_udc.c
2793
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/lpc32xx_udc.c
2800
struct lpc32xx_udc *udc = _udc;
drivers/usb/gadget/udc/lpc32xx_udc.c
2805
spin_lock(&udc->lock);
drivers/usb/gadget/udc/lpc32xx_udc.c
2808
tmp = readl(USBD_EOTINTST(udc->udp_baseaddr)) |
drivers/usb/gadget/udc/lpc32xx_udc.c
2809
(readl(USBD_EPDMAST(udc->udp_baseaddr)) &
drivers/usb/gadget/udc/lpc32xx_udc.c
2810
readl(USBD_NDDRTINTST(udc->udp_baseaddr))) |
drivers/usb/gadget/udc/lpc32xx_udc.c
2811
readl(USBD_SYSERRTINTST(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
2813
if (tmp & (1 << udc->ep[i].hwep_num))
drivers/usb/gadget/udc/lpc32xx_udc.c
2814
udc_handle_dma_ep(udc, &udc->ep[i]);
drivers/usb/gadget/udc/lpc32xx_udc.c
2817
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/lpc32xx_udc.c
2827
static void vbus_work(struct lpc32xx_udc *udc)
drivers/usb/gadget/udc/lpc32xx_udc.c
2831
if (udc->enabled != 0) {
drivers/usb/gadget/udc/lpc32xx_udc.c
2833
i2c_smbus_write_byte_data(udc->isp1301_i2c_client,
drivers/usb/gadget/udc/lpc32xx_udc.c
2840
i2c_smbus_write_byte_data(udc->isp1301_i2c_client,
drivers/usb/gadget/udc/lpc32xx_udc.c
2845
i2c_smbus_write_byte_data(udc->isp1301_i2c_client,
drivers/usb/gadget/udc/lpc32xx_udc.c
2850
value = i2c_smbus_read_byte_data(udc->isp1301_i2c_client,
drivers/usb/gadget/udc/lpc32xx_udc.c
2855
udc->vbus = 1;
drivers/usb/gadget/udc/lpc32xx_udc.c
2857
udc->vbus = 0;
drivers/usb/gadget/udc/lpc32xx_udc.c
2860
if (udc->last_vbus != udc->vbus) {
drivers/usb/gadget/udc/lpc32xx_udc.c
2861
udc->last_vbus = udc->vbus;
drivers/usb/gadget/udc/lpc32xx_udc.c
2862
lpc32xx_vbus_session(&udc->gadget, udc->vbus);
drivers/usb/gadget/udc/lpc32xx_udc.c
2869
struct lpc32xx_udc *udc = _udc;
drivers/usb/gadget/udc/lpc32xx_udc.c
2871
vbus_work(udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
2879
struct lpc32xx_udc *udc = to_udc(gadget);
drivers/usb/gadget/udc/lpc32xx_udc.c
2882
dev_err(udc->dev, "bad parameter.\n");
drivers/usb/gadget/udc/lpc32xx_udc.c
2886
if (udc->driver) {
drivers/usb/gadget/udc/lpc32xx_udc.c
2887
dev_err(udc->dev, "UDC already has a gadget driver\n");
drivers/usb/gadget/udc/lpc32xx_udc.c
2891
udc->driver = driver;
drivers/usb/gadget/udc/lpc32xx_udc.c
2892
udc->gadget.dev.of_node = udc->dev->of_node;
drivers/usb/gadget/udc/lpc32xx_udc.c
2893
udc->enabled = 1;
drivers/usb/gadget/udc/lpc32xx_udc.c
2894
udc->gadget.is_selfpowered = 1;
drivers/usb/gadget/udc/lpc32xx_udc.c
2895
udc->vbus = 0;
drivers/usb/gadget/udc/lpc32xx_udc.c
2898
udc->last_vbus = udc->vbus = 0;
drivers/usb/gadget/udc/lpc32xx_udc.c
2899
vbus_work(udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
2902
i2c_smbus_write_byte_data(udc->isp1301_i2c_client,
drivers/usb/gadget/udc/lpc32xx_udc.c
2904
i2c_smbus_write_byte_data(udc->isp1301_i2c_client,
drivers/usb/gadget/udc/lpc32xx_udc.c
2912
struct lpc32xx_udc *udc = to_udc(gadget);
drivers/usb/gadget/udc/lpc32xx_udc.c
2914
i2c_smbus_write_byte_data(udc->isp1301_i2c_client,
drivers/usb/gadget/udc/lpc32xx_udc.c
2916
i2c_smbus_write_byte_data(udc->isp1301_i2c_client,
drivers/usb/gadget/udc/lpc32xx_udc.c
2919
if (udc->clocked) {
drivers/usb/gadget/udc/lpc32xx_udc.c
2920
spin_lock(&udc->lock);
drivers/usb/gadget/udc/lpc32xx_udc.c
2921
stop_activity(udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
2922
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/lpc32xx_udc.c
2929
if (atomic_read(&udc->enabled_ep_cnt))
drivers/usb/gadget/udc/lpc32xx_udc.c
2930
wait_event_interruptible(udc->ep_disable_wait_queue,
drivers/usb/gadget/udc/lpc32xx_udc.c
2931
(atomic_read(&udc->enabled_ep_cnt) == 0));
drivers/usb/gadget/udc/lpc32xx_udc.c
2933
spin_lock(&udc->lock);
drivers/usb/gadget/udc/lpc32xx_udc.c
2934
udc_clk_set(udc, 0);
drivers/usb/gadget/udc/lpc32xx_udc.c
2935
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/lpc32xx_udc.c
2938
udc->enabled = 0;
drivers/usb/gadget/udc/lpc32xx_udc.c
2939
udc->driver = NULL;
drivers/usb/gadget/udc/lpc32xx_udc.c
2947
struct lpc32xx_udc *udc = platform_get_drvdata(dev);
drivers/usb/gadget/udc/lpc32xx_udc.c
2949
pullup(udc, 0);
drivers/usb/gadget/udc/lpc32xx_udc.c
2985
struct lpc32xx_udc *udc;
drivers/usb/gadget/udc/lpc32xx_udc.c
2990
udc = devm_kmemdup(dev, &controller_template, sizeof(*udc), GFP_KERNEL);
drivers/usb/gadget/udc/lpc32xx_udc.c
2991
if (!udc)
drivers/usb/gadget/udc/lpc32xx_udc.c
2995
udc->ep[i].udc = udc;
drivers/usb/gadget/udc/lpc32xx_udc.c
2996
udc->gadget.ep0 = &udc->ep[0].ep;
drivers/usb/gadget/udc/lpc32xx_udc.c
2999
udc->gadget.dev.parent = dev;
drivers/usb/gadget/udc/lpc32xx_udc.c
3000
udc->pdev = pdev;
drivers/usb/gadget/udc/lpc32xx_udc.c
3001
udc->dev = &pdev->dev;
drivers/usb/gadget/udc/lpc32xx_udc.c
3002
udc->enabled = 0;
drivers/usb/gadget/udc/lpc32xx_udc.c
3011
udc->isp1301_i2c_client = isp1301_get_client(isp1301_node);
drivers/usb/gadget/udc/lpc32xx_udc.c
3013
if (!udc->isp1301_i2c_client) {
drivers/usb/gadget/udc/lpc32xx_udc.c
3017
dev_info(udc->dev, "ISP1301 I2C device at address 0x%x\n",
drivers/usb/gadget/udc/lpc32xx_udc.c
3018
udc->isp1301_i2c_client->addr);
drivers/usb/gadget/udc/lpc32xx_udc.c
3025
udc->board = &lpc32xx_usbddata;
drivers/usb/gadget/udc/lpc32xx_udc.c
3036
spin_lock_init(&udc->lock);
drivers/usb/gadget/udc/lpc32xx_udc.c
3040
udc->udp_irq[i] = platform_get_irq(pdev, i);
drivers/usb/gadget/udc/lpc32xx_udc.c
3041
if (udc->udp_irq[i] < 0) {
drivers/usb/gadget/udc/lpc32xx_udc.c
3042
retval = udc->udp_irq[i];
drivers/usb/gadget/udc/lpc32xx_udc.c
3047
udc->udp_baseaddr = devm_platform_ioremap_resource(pdev, 0);
drivers/usb/gadget/udc/lpc32xx_udc.c
3048
if (IS_ERR(udc->udp_baseaddr)) {
drivers/usb/gadget/udc/lpc32xx_udc.c
3049
dev_err(udc->dev, "IO map failure\n");
drivers/usb/gadget/udc/lpc32xx_udc.c
3050
retval = PTR_ERR(udc->udp_baseaddr);
drivers/usb/gadget/udc/lpc32xx_udc.c
3055
udc->usb_slv_clk = devm_clk_get(&pdev->dev, NULL);
drivers/usb/gadget/udc/lpc32xx_udc.c
3056
if (IS_ERR(udc->usb_slv_clk)) {
drivers/usb/gadget/udc/lpc32xx_udc.c
3057
dev_err(udc->dev, "failed to acquire USB device clock\n");
drivers/usb/gadget/udc/lpc32xx_udc.c
3058
retval = PTR_ERR(udc->usb_slv_clk);
drivers/usb/gadget/udc/lpc32xx_udc.c
3063
retval = clk_prepare_enable(udc->usb_slv_clk);
drivers/usb/gadget/udc/lpc32xx_udc.c
3065
dev_err(udc->dev, "failed to start USB device clock\n");
drivers/usb/gadget/udc/lpc32xx_udc.c
3070
udc->poweron = udc->pullup = 0;
drivers/usb/gadget/udc/lpc32xx_udc.c
3071
INIT_WORK(&udc->pullup_job, pullup_work);
drivers/usb/gadget/udc/lpc32xx_udc.c
3073
INIT_WORK(&udc->power_job, power_work);
drivers/usb/gadget/udc/lpc32xx_udc.c
3077
udc->clocked = 1;
drivers/usb/gadget/udc/lpc32xx_udc.c
3079
isp1301_udc_configure(udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
3081
udc->udca_v_base = dma_alloc_coherent(&pdev->dev, UDCA_BUFF_SIZE,
drivers/usb/gadget/udc/lpc32xx_udc.c
3084
if (!udc->udca_v_base) {
drivers/usb/gadget/udc/lpc32xx_udc.c
3085
dev_err(udc->dev, "error getting UDCA region\n");
drivers/usb/gadget/udc/lpc32xx_udc.c
3089
udc->udca_p_base = dma_handle;
drivers/usb/gadget/udc/lpc32xx_udc.c
3090
dev_dbg(udc->dev, "DMA buffer(0x%x bytes), P:0x%08x, V:0x%p\n",
drivers/usb/gadget/udc/lpc32xx_udc.c
3091
UDCA_BUFF_SIZE, udc->udca_p_base, udc->udca_v_base);
drivers/usb/gadget/udc/lpc32xx_udc.c
3094
udc->dd_cache = dma_pool_create("udc_dd", udc->dev,
drivers/usb/gadget/udc/lpc32xx_udc.c
3097
if (!udc->dd_cache) {
drivers/usb/gadget/udc/lpc32xx_udc.c
3098
dev_err(udc->dev, "error getting DD DMA region\n");
drivers/usb/gadget/udc/lpc32xx_udc.c
3104
udc_disable(udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
3105
udc_reinit(udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
3109
retval = devm_request_irq(dev, udc->udp_irq[IRQ_USB_LP],
drivers/usb/gadget/udc/lpc32xx_udc.c
3110
lpc32xx_usb_lp_irq, 0, "udc_lp", udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
3112
dev_err(udc->dev, "LP request irq %d failed\n",
drivers/usb/gadget/udc/lpc32xx_udc.c
3113
udc->udp_irq[IRQ_USB_LP]);
drivers/usb/gadget/udc/lpc32xx_udc.c
3116
retval = devm_request_irq(dev, udc->udp_irq[IRQ_USB_HP],
drivers/usb/gadget/udc/lpc32xx_udc.c
3117
lpc32xx_usb_hp_irq, 0, "udc_hp", udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
3119
dev_err(udc->dev, "HP request irq %d failed\n",
drivers/usb/gadget/udc/lpc32xx_udc.c
3120
udc->udp_irq[IRQ_USB_HP]);
drivers/usb/gadget/udc/lpc32xx_udc.c
3124
retval = devm_request_irq(dev, udc->udp_irq[IRQ_USB_DEVDMA],
drivers/usb/gadget/udc/lpc32xx_udc.c
3125
lpc32xx_usb_devdma_irq, 0, "udc_dma", udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
3127
dev_err(udc->dev, "DEV request irq %d failed\n",
drivers/usb/gadget/udc/lpc32xx_udc.c
3128
udc->udp_irq[IRQ_USB_DEVDMA]);
drivers/usb/gadget/udc/lpc32xx_udc.c
3134
retval = devm_request_threaded_irq(dev, udc->udp_irq[IRQ_USB_ATX], NULL,
drivers/usb/gadget/udc/lpc32xx_udc.c
3136
"udc_otg", udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
3138
dev_err(udc->dev, "VBUS request irq %d failed\n",
drivers/usb/gadget/udc/lpc32xx_udc.c
3139
udc->udp_irq[IRQ_USB_ATX]);
drivers/usb/gadget/udc/lpc32xx_udc.c
3144
init_waitqueue_head(&udc->ep_disable_wait_queue);
drivers/usb/gadget/udc/lpc32xx_udc.c
3145
atomic_set(&udc->enabled_ep_cnt, 0);
drivers/usb/gadget/udc/lpc32xx_udc.c
3147
retval = usb_add_gadget_udc(dev, &udc->gadget);
drivers/usb/gadget/udc/lpc32xx_udc.c
3151
dev_set_drvdata(dev, udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
3153
create_debug_file(udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
3156
udc_clk_set(udc, 0);
drivers/usb/gadget/udc/lpc32xx_udc.c
3158
dev_info(udc->dev, "%s version %s\n", driver_name, DRIVER_VERSION);
drivers/usb/gadget/udc/lpc32xx_udc.c
3162
dma_pool_destroy(udc->dd_cache);
drivers/usb/gadget/udc/lpc32xx_udc.c
3165
udc->udca_v_base, udc->udca_p_base);
drivers/usb/gadget/udc/lpc32xx_udc.c
3167
clk_disable_unprepare(udc->usb_slv_clk);
drivers/usb/gadget/udc/lpc32xx_udc.c
3169
put_device(&udc->isp1301_i2c_client->dev);
drivers/usb/gadget/udc/lpc32xx_udc.c
3171
dev_err(udc->dev, "%s probe failed, %d\n", driver_name, retval);
drivers/usb/gadget/udc/lpc32xx_udc.c
3178
struct lpc32xx_udc *udc = platform_get_drvdata(pdev);
drivers/usb/gadget/udc/lpc32xx_udc.c
3180
usb_del_gadget_udc(&udc->gadget);
drivers/usb/gadget/udc/lpc32xx_udc.c
3181
if (udc->driver) {
drivers/usb/gadget/udc/lpc32xx_udc.c
3187
udc_clk_set(udc, 1);
drivers/usb/gadget/udc/lpc32xx_udc.c
3188
udc_disable(udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
3189
pullup(udc, 0);
drivers/usb/gadget/udc/lpc32xx_udc.c
3192
remove_debug_file(udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
3194
dma_pool_destroy(udc->dd_cache);
drivers/usb/gadget/udc/lpc32xx_udc.c
3196
udc->udca_v_base, udc->udca_p_base);
drivers/usb/gadget/udc/lpc32xx_udc.c
3198
clk_disable_unprepare(udc->usb_slv_clk);
drivers/usb/gadget/udc/lpc32xx_udc.c
3200
put_device(&udc->isp1301_i2c_client->dev);
drivers/usb/gadget/udc/lpc32xx_udc.c
3206
struct lpc32xx_udc *udc = platform_get_drvdata(pdev);
drivers/usb/gadget/udc/lpc32xx_udc.c
3208
if (udc->clocked) {
drivers/usb/gadget/udc/lpc32xx_udc.c
3210
udc->poweron = 0;
drivers/usb/gadget/udc/lpc32xx_udc.c
3211
isp1301_set_powerstate(udc, 0);
drivers/usb/gadget/udc/lpc32xx_udc.c
3214
udc_clk_set(udc, 0);
drivers/usb/gadget/udc/lpc32xx_udc.c
3218
udc->clocked = 1;
drivers/usb/gadget/udc/lpc32xx_udc.c
3221
clk_disable_unprepare(udc->usb_slv_clk);
drivers/usb/gadget/udc/lpc32xx_udc.c
3229
struct lpc32xx_udc *udc = platform_get_drvdata(pdev);
drivers/usb/gadget/udc/lpc32xx_udc.c
3231
if (udc->clocked) {
drivers/usb/gadget/udc/lpc32xx_udc.c
3233
clk_prepare_enable(udc->usb_slv_clk);
drivers/usb/gadget/udc/lpc32xx_udc.c
3236
udc_clk_set(udc, 1);
drivers/usb/gadget/udc/lpc32xx_udc.c
3239
udc->poweron = 1;
drivers/usb/gadget/udc/lpc32xx_udc.c
3240
isp1301_set_powerstate(udc, 1);
drivers/usb/gadget/udc/lpc32xx_udc.c
499
struct lpc32xx_udc *udc = s->private;
drivers/usb/gadget/udc/lpc32xx_udc.c
505
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/lpc32xx_udc.c
508
udc->vbus ? "present" : "off",
drivers/usb/gadget/udc/lpc32xx_udc.c
509
udc->enabled ? (udc->vbus ? "active" : "enabled") :
drivers/usb/gadget/udc/lpc32xx_udc.c
511
udc->gadget.is_selfpowered ? "self" : "VBUS",
drivers/usb/gadget/udc/lpc32xx_udc.c
512
udc->suspended ? ", suspended" : "",
drivers/usb/gadget/udc/lpc32xx_udc.c
513
udc->driver ? udc->driver->driver.name : "(none)");
drivers/usb/gadget/udc/lpc32xx_udc.c
515
if (udc->enabled && udc->vbus) {
drivers/usb/gadget/udc/lpc32xx_udc.c
516
proc_ep_show(s, &udc->ep[0]);
drivers/usb/gadget/udc/lpc32xx_udc.c
517
list_for_each_entry(ep, &udc->gadget.ep_list, ep.ep_list)
drivers/usb/gadget/udc/lpc32xx_udc.c
521
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/lpc32xx_udc.c
526
DEFINE_SHOW_ATTRIBUTE(udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
528
static void create_debug_file(struct lpc32xx_udc *udc)
drivers/usb/gadget/udc/lpc32xx_udc.c
530
debugfs_create_file(debug_filename, 0, NULL, udc, &udc_fops);
drivers/usb/gadget/udc/lpc32xx_udc.c
533
static void remove_debug_file(struct lpc32xx_udc *udc)
drivers/usb/gadget/udc/lpc32xx_udc.c
539
static inline void create_debug_file(struct lpc32xx_udc *udc) {}
drivers/usb/gadget/udc/lpc32xx_udc.c
540
static inline void remove_debug_file(struct lpc32xx_udc *udc) {}
drivers/usb/gadget/udc/lpc32xx_udc.c
544
static void isp1301_udc_configure(struct lpc32xx_udc *udc)
drivers/usb/gadget/udc/lpc32xx_udc.c
549
vendor = i2c_smbus_read_word_data(udc->isp1301_i2c_client, 0x00);
drivers/usb/gadget/udc/lpc32xx_udc.c
550
product = i2c_smbus_read_word_data(udc->isp1301_i2c_client, 0x02);
drivers/usb/gadget/udc/lpc32xx_udc.c
553
udc->atx = STOTG04;
drivers/usb/gadget/udc/lpc32xx_udc.c
559
i2c_smbus_write_byte_data(udc->isp1301_i2c_client,
drivers/usb/gadget/udc/lpc32xx_udc.c
564
i2c_smbus_write_byte_data(udc->isp1301_i2c_client,
drivers/usb/gadget/udc/lpc32xx_udc.c
566
i2c_smbus_write_byte_data(udc->isp1301_i2c_client,
drivers/usb/gadget/udc/lpc32xx_udc.c
572
i2c_smbus_write_byte_data(udc->isp1301_i2c_client,
drivers/usb/gadget/udc/lpc32xx_udc.c
576
if (udc->atx != STOTG04)
drivers/usb/gadget/udc/lpc32xx_udc.c
578
i2c_smbus_write_byte_data(udc->isp1301_i2c_client,
drivers/usb/gadget/udc/lpc32xx_udc.c
582
if (udc->board->vbus_drv_pol != 0)
drivers/usb/gadget/udc/lpc32xx_udc.c
583
i2c_smbus_write_byte_data(udc->isp1301_i2c_client,
drivers/usb/gadget/udc/lpc32xx_udc.c
586
i2c_smbus_write_byte_data(udc->isp1301_i2c_client,
drivers/usb/gadget/udc/lpc32xx_udc.c
593
i2c_smbus_write_byte_data(udc->isp1301_i2c_client,
drivers/usb/gadget/udc/lpc32xx_udc.c
595
i2c_smbus_write_byte_data(udc->isp1301_i2c_client,
drivers/usb/gadget/udc/lpc32xx_udc.c
600
i2c_smbus_write_byte_data(udc->isp1301_i2c_client,
drivers/usb/gadget/udc/lpc32xx_udc.c
603
i2c_smbus_write_byte_data(udc->isp1301_i2c_client,
drivers/usb/gadget/udc/lpc32xx_udc.c
607
i2c_smbus_write_byte_data(udc->isp1301_i2c_client,
drivers/usb/gadget/udc/lpc32xx_udc.c
610
i2c_smbus_write_byte_data(udc->isp1301_i2c_client,
drivers/usb/gadget/udc/lpc32xx_udc.c
612
i2c_smbus_write_byte_data(udc->isp1301_i2c_client,
drivers/usb/gadget/udc/lpc32xx_udc.c
615
dev_info(udc->dev, "ISP1301 Vendor ID : 0x%04x\n", vendor);
drivers/usb/gadget/udc/lpc32xx_udc.c
616
dev_info(udc->dev, "ISP1301 Product ID : 0x%04x\n", product);
drivers/usb/gadget/udc/lpc32xx_udc.c
617
dev_info(udc->dev, "ISP1301 Version ID : 0x%04x\n",
drivers/usb/gadget/udc/lpc32xx_udc.c
618
i2c_smbus_read_word_data(udc->isp1301_i2c_client, 0x14));
drivers/usb/gadget/udc/lpc32xx_udc.c
623
static void isp1301_pullup_set(struct lpc32xx_udc *udc)
drivers/usb/gadget/udc/lpc32xx_udc.c
625
if (udc->pullup)
drivers/usb/gadget/udc/lpc32xx_udc.c
627
i2c_smbus_write_byte_data(udc->isp1301_i2c_client,
drivers/usb/gadget/udc/lpc32xx_udc.c
631
i2c_smbus_write_byte_data(udc->isp1301_i2c_client,
drivers/usb/gadget/udc/lpc32xx_udc.c
638
struct lpc32xx_udc *udc =
drivers/usb/gadget/udc/lpc32xx_udc.c
641
isp1301_pullup_set(udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
644
static void isp1301_pullup_enable(struct lpc32xx_udc *udc, int en_pullup,
drivers/usb/gadget/udc/lpc32xx_udc.c
647
if (en_pullup == udc->pullup)
drivers/usb/gadget/udc/lpc32xx_udc.c
650
udc->pullup = en_pullup;
drivers/usb/gadget/udc/lpc32xx_udc.c
652
isp1301_pullup_set(udc);
drivers/usb/gadget/udc/lpc32xx_udc.c
655
schedule_work(&udc->pullup_job);
drivers/usb/gadget/udc/lpc32xx_udc.c
660
static void isp1301_set_powerstate(struct lpc32xx_udc *udc, int enable)
drivers/usb/gadget/udc/lpc32xx_udc.c
663
if (udc->atx == STOTG04)
drivers/usb/gadget/udc/lpc32xx_udc.c
669
i2c_smbus_write_byte_data(udc->isp1301_i2c_client,
drivers/usb/gadget/udc/lpc32xx_udc.c
674
i2c_smbus_write_byte_data(udc->isp1301_i2c_client,
drivers/usb/gadget/udc/lpc32xx_udc.c
680
struct lpc32xx_udc *udc =
drivers/usb/gadget/udc/lpc32xx_udc.c
683
isp1301_set_powerstate(udc, udc->poweron);
drivers/usb/gadget/udc/lpc32xx_udc.c
693
static void udc_protocol_cmd_w(struct lpc32xx_udc *udc, u32 cmd)
drivers/usb/gadget/udc/lpc32xx_udc.c
699
u32 tmp = readl(USBD_DEVINTST(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
703
writel(USBD_CCEMPTY, USBD_DEVINTCLR(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
706
writel(cmd, USBD_CMDCODE(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
708
while (((readl(USBD_DEVINTST(udc->udp_baseaddr)) &
drivers/usb/gadget/udc/lpc32xx_udc.c
721
static inline void udc_protocol_cmd_data_w(struct lpc32xx_udc *udc, u32 cmd,
drivers/usb/gadget/udc/lpc32xx_udc.c
724
udc_protocol_cmd_w(udc, cmd);
drivers/usb/gadget/udc/lpc32xx_udc.c
725
udc_protocol_cmd_w(udc, data);
drivers/usb/gadget/udc/lpc32xx_udc.c
730
static u32 udc_protocol_cmd_r(struct lpc32xx_udc *udc, u32 cmd)
drivers/usb/gadget/udc/lpc32xx_udc.c
736
USBD_DEVINTCLR(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
739
udc_protocol_cmd_w(udc, cmd);
drivers/usb/gadget/udc/lpc32xx_udc.c
741
while ((!(readl(USBD_DEVINTST(udc->udp_baseaddr)) & USBD_CDFULL))
drivers/usb/gadget/udc/lpc32xx_udc.c
745
dev_dbg(udc->dev,
drivers/usb/gadget/udc/lpc32xx_udc.c
748
return readl(USBD_CMDDATA(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
757
static inline void uda_enable_devint(struct lpc32xx_udc *udc, u32 devmask)
drivers/usb/gadget/udc/lpc32xx_udc.c
759
udc->enabled_devints |= devmask;
drivers/usb/gadget/udc/lpc32xx_udc.c
760
writel(udc->enabled_devints, USBD_DEVINTEN(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
764
static inline void uda_disable_devint(struct lpc32xx_udc *udc, u32 mask)
drivers/usb/gadget/udc/lpc32xx_udc.c
766
udc->enabled_devints &= ~mask;
drivers/usb/gadget/udc/lpc32xx_udc.c
767
writel(udc->enabled_devints, USBD_DEVINTEN(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
771
static inline void uda_clear_devint(struct lpc32xx_udc *udc, u32 mask)
drivers/usb/gadget/udc/lpc32xx_udc.c
773
writel(mask, USBD_DEVINTCLR(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
782
static void uda_enable_hwepint(struct lpc32xx_udc *udc, u32 hwep)
drivers/usb/gadget/udc/lpc32xx_udc.c
784
udc->enabled_hwepints |= (1 << hwep);
drivers/usb/gadget/udc/lpc32xx_udc.c
785
writel(udc->enabled_hwepints, USBD_EPINTEN(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
789
static void uda_disable_hwepint(struct lpc32xx_udc *udc, u32 hwep)
drivers/usb/gadget/udc/lpc32xx_udc.c
791
udc->enabled_hwepints &= ~(1 << hwep);
drivers/usb/gadget/udc/lpc32xx_udc.c
792
writel(udc->enabled_hwepints, USBD_EPINTEN(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
796
static inline void uda_clear_hwepint(struct lpc32xx_udc *udc, u32 hwep)
drivers/usb/gadget/udc/lpc32xx_udc.c
798
writel((1 << hwep), USBD_EPINTCLR(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
802
static inline void udc_ep_dma_enable(struct lpc32xx_udc *udc, u32 hwep)
drivers/usb/gadget/udc/lpc32xx_udc.c
804
writel((1 << hwep), USBD_EPDMAEN(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
808
static inline void udc_ep_dma_disable(struct lpc32xx_udc *udc, u32 hwep)
drivers/usb/gadget/udc/lpc32xx_udc.c
810
writel((1 << hwep), USBD_EPDMADIS(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
821
static void udc_realize_hwep(struct lpc32xx_udc *udc, u32 hwep,
drivers/usb/gadget/udc/lpc32xx_udc.c
826
writel(USBD_EP_RLZED, USBD_DEVINTCLR(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
827
writel(hwep, USBD_EPIND(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
828
udc->realized_eps |= (1 << hwep);
drivers/usb/gadget/udc/lpc32xx_udc.c
829
writel(udc->realized_eps, USBD_REEP(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
830
writel(maxpacket, USBD_EPMAXPSIZE(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
833
while ((!(readl(USBD_DEVINTST(udc->udp_baseaddr)) &
drivers/usb/gadget/udc/lpc32xx_udc.c
837
dev_dbg(udc->dev, "EP not correctly realized in hardware\n");
drivers/usb/gadget/udc/lpc32xx_udc.c
839
writel(USBD_EP_RLZED, USBD_DEVINTCLR(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
843
static void udc_unrealize_hwep(struct lpc32xx_udc *udc, u32 hwep)
drivers/usb/gadget/udc/lpc32xx_udc.c
845
udc->realized_eps &= ~(1 << hwep);
drivers/usb/gadget/udc/lpc32xx_udc.c
846
writel(udc->realized_eps, USBD_REEP(udc->udp_baseaddr));
drivers/usb/gadget/udc/lpc32xx_udc.c
855
static u32 udc_selep_clrint(struct lpc32xx_udc *udc, u32 hwep)
drivers/usb/gadget/udc/lpc32xx_udc.c
857
udc_protocol_cmd_w(udc, CMD_SEL_EP_CLRI(hwep));
drivers/usb/gadget/udc/lpc32xx_udc.c
858
return udc_protocol_cmd_r(udc, DAT_SEL_EP_CLRI(hwep));
drivers/usb/gadget/udc/lpc32xx_udc.c
862
static void udc_disable_hwep(struct lpc32xx_udc *udc, u32 hwep)
drivers/usb/gadget/udc/lpc32xx_udc.c
864
udc_protocol_cmd_data_w(udc, CMD_SET_EP_STAT(hwep),
drivers/usb/gadget/udc/lpc32xx_udc.c
869
static void udc_stall_hwep(struct lpc32xx_udc *udc, u32 hwep)
drivers/usb/gadget/udc/lpc32xx_udc.c
871
udc_protocol_cmd_data_w(udc, CMD_SET_EP_STAT(hwep),
drivers/usb/gadget/udc/lpc32xx_udc.c
876
static void udc_clrstall_hwep(struct lpc32xx_udc *udc, u32 hwep)
drivers/usb/gadget/udc/lpc32xx_udc.c
878
udc_protocol_cmd_data_w(udc, CMD_SET_EP_STAT(hwep),
drivers/usb/gadget/udc/lpc32xx_udc.c
883
static void udc_select_hwep(struct lpc32xx_udc *udc, u32 hwep)
drivers/usb/gadget/udc/lpc32xx_udc.c
885
udc_protocol_cmd_w(udc, CMD_SEL_EP(hwep));
drivers/usb/gadget/udc/lpc32xx_udc.c
894
static void udc_clr_buffer_hwep(struct lpc32xx_udc *udc, u32 hwep)
drivers/usb/gadget/udc/lpc32xx_udc.c
896
udc_select_hwep(udc, hwep);
drivers/usb/gadget/udc/lpc32xx_udc.c
897
udc_protocol_cmd_w(udc, CMD_CLR_BUF);
drivers/usb/gadget/udc/lpc32xx_udc.c
901
static void udc_val_buffer_hwep(struct lpc32xx_udc *udc, u32 hwep)
drivers/usb/gadget/udc/lpc32xx_udc.c
903
udc_select_hwep(udc, hwep);
drivers/usb/gadget/udc/lpc32xx_udc.c
904
udc_protocol_cmd_w(udc, CMD_VALID_BUF);
drivers/usb/gadget/udc/lpc32xx_udc.c
907
static inline u32 udc_clearep_getsts(struct lpc32xx_udc *udc, u32 hwep)
drivers/usb/gadget/udc/lpc32xx_udc.c
910
uda_clear_hwepint(udc, hwep);
drivers/usb/gadget/udc/lpc32xx_udc.c
911
return udc_selep_clrint(udc, hwep);
drivers/usb/gadget/udc/lpc32xx_udc.c
920
static struct lpc32xx_usbd_dd_gad *udc_dd_alloc(struct lpc32xx_udc *udc)
drivers/usb/gadget/udc/lpc32xx_udc.c
925
dd = dma_pool_alloc(udc->dd_cache, GFP_ATOMIC | GFP_DMA, &dma);
drivers/usb/gadget/udc/lpc32xx_udc.c
933
static void udc_dd_free(struct lpc32xx_udc *udc, struct lpc32xx_usbd_dd_gad *dd)
drivers/usb/gadget/udc/lpc32xx_udc.c
935
dma_pool_free(udc->dd_cache, dd, dd->this_dma);
drivers/usb/gadget/udc/lpc32xx_udc.c
946
static void udc_clk_set(struct lpc32xx_udc *udc, int enable)
drivers/usb/gadget/udc/lpc32xx_udc.c
949
if (udc->clocked)
drivers/usb/gadget/udc/lpc32xx_udc.c
952
udc->clocked = 1;
drivers/usb/gadget/udc/lpc32xx_udc.c
953
clk_prepare_enable(udc->usb_slv_clk);
drivers/usb/gadget/udc/lpc32xx_udc.c
955
if (!udc->clocked)
drivers/usb/gadget/udc/lpc32xx_udc.c
958
udc->clocked = 0;
drivers/usb/gadget/udc/lpc32xx_udc.c
959
clk_disable_unprepare(udc->usb_slv_clk);
drivers/usb/gadget/udc/lpc32xx_udc.c
964
static void udc_set_address(struct lpc32xx_udc *udc, u32 addr)
drivers/usb/gadget/udc/lpc32xx_udc.c
968
udc_protocol_cmd_data_w(udc, CMD_SET_ADDR,
drivers/usb/gadget/udc/lpc32xx_udc.c
975
static int udc_ep_in_req_dma(struct lpc32xx_udc *udc, struct lpc32xx_ep *ep)
drivers/usb/gadget/udc/lpc32xx_udc.c
986
udc->udca_v_base[hwep] = req->dd_desc_ptr->this_dma;
drivers/usb/gadget/udc/lpc32xx_udc.c
989
udc_ep_dma_enable(udc, hwep);
drivers/usb/gadget/udc/max3420_udc.c
1029
struct max3420_udc *udc = ep->udc;
drivers/usb/gadget/udc/max3420_udc.c
1039
wake_up_process(udc->thread_task);
drivers/usb/gadget/udc/max3420_udc.c
1082
struct max3420_udc *udc = to_udc(gadget);
drivers/usb/gadget/udc/max3420_udc.c
1086
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/max3420_udc.c
1089
if (udc->remote_wkp) {
drivers/usb/gadget/udc/max3420_udc.c
1090
udc->todo |= REMOTE_WAKEUP;
drivers/usb/gadget/udc/max3420_udc.c
1094
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/max3420_udc.c
1096
if (udc->thread_task)
drivers/usb/gadget/udc/max3420_udc.c
1097
wake_up_process(udc->thread_task);
drivers/usb/gadget/udc/max3420_udc.c
1104
struct max3420_udc *udc = to_udc(gadget);
drivers/usb/gadget/udc/max3420_udc.c
1107
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/max3420_udc.c
1109
udc->driver = driver;
drivers/usb/gadget/udc/max3420_udc.c
1110
udc->gadget.speed = USB_SPEED_FULL;
drivers/usb/gadget/udc/max3420_udc.c
1112
udc->gadget.is_selfpowered = udc->is_selfpowered;
drivers/usb/gadget/udc/max3420_udc.c
1113
udc->remote_wkp = 0;
drivers/usb/gadget/udc/max3420_udc.c
1114
udc->softconnect = true;
drivers/usb/gadget/udc/max3420_udc.c
1115
udc->todo |= UDC_START;
drivers/usb/gadget/udc/max3420_udc.c
1116
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/max3420_udc.c
1118
if (udc->thread_task)
drivers/usb/gadget/udc/max3420_udc.c
1119
wake_up_process(udc->thread_task);
drivers/usb/gadget/udc/max3420_udc.c
1126
struct max3420_udc *udc = to_udc(gadget);
drivers/usb/gadget/udc/max3420_udc.c
1129
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/max3420_udc.c
1130
udc->is_selfpowered = udc->gadget.is_selfpowered;
drivers/usb/gadget/udc/max3420_udc.c
1131
udc->gadget.speed = USB_SPEED_UNKNOWN;
drivers/usb/gadget/udc/max3420_udc.c
1132
udc->driver = NULL;
drivers/usb/gadget/udc/max3420_udc.c
1133
udc->softconnect = false;
drivers/usb/gadget/udc/max3420_udc.c
1134
udc->todo |= UDC_START;
drivers/usb/gadget/udc/max3420_udc.c
1135
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/max3420_udc.c
1137
if (udc->thread_task)
drivers/usb/gadget/udc/max3420_udc.c
1138
wake_up_process(udc->thread_task);
drivers/usb/gadget/udc/max3420_udc.c
1149
static void max3420_eps_init(struct max3420_udc *udc)
drivers/usb/gadget/udc/max3420_udc.c
1153
INIT_LIST_HEAD(&udc->gadget.ep_list);
drivers/usb/gadget/udc/max3420_udc.c
1156
struct max3420_ep *ep = &udc->ep[idx];
drivers/usb/gadget/udc/max3420_udc.c
1161
ep->udc = udc;
drivers/usb/gadget/udc/max3420_udc.c
1194
&udc->gadget.ep_list);
drivers/usb/gadget/udc/max3420_udc.c
1200
struct max3420_udc *udc;
drivers/usb/gadget/udc/max3420_udc.c
1218
udc = devm_kzalloc(&spi->dev, sizeof(*udc), GFP_KERNEL);
drivers/usb/gadget/udc/max3420_udc.c
1219
if (!udc)
drivers/usb/gadget/udc/max3420_udc.c
1222
udc->spi = spi;
drivers/usb/gadget/udc/max3420_udc.c
1224
udc->remote_wkp = 0;
drivers/usb/gadget/udc/max3420_udc.c
1227
udc->gadget.ops = &max3420_udc_ops;
drivers/usb/gadget/udc/max3420_udc.c
1228
udc->gadget.max_speed = USB_SPEED_FULL;
drivers/usb/gadget/udc/max3420_udc.c
1229
udc->gadget.speed = USB_SPEED_UNKNOWN;
drivers/usb/gadget/udc/max3420_udc.c
1230
udc->gadget.ep0 = &udc->ep[0].ep_usb;
drivers/usb/gadget/udc/max3420_udc.c
1231
udc->gadget.name = driver_name;
drivers/usb/gadget/udc/max3420_udc.c
1233
spin_lock_init(&udc->lock);
drivers/usb/gadget/udc/max3420_udc.c
1234
mutex_init(&udc->spi_bus_mutex);
drivers/usb/gadget/udc/max3420_udc.c
1236
udc->ep0req.ep = &udc->ep[0];
drivers/usb/gadget/udc/max3420_udc.c
1237
udc->ep0req.usb_req.buf = udc->ep0buf;
drivers/usb/gadget/udc/max3420_udc.c
1238
INIT_LIST_HEAD(&udc->ep0req.queue);
drivers/usb/gadget/udc/max3420_udc.c
1241
max3420_eps_init(udc);
drivers/usb/gadget/udc/max3420_udc.c
1244
spi_rd_buf(udc, MAX3420_REG_EPIRQ, reg, 8);
drivers/usb/gadget/udc/max3420_udc.c
1245
spi_wr8(udc, MAX3420_REG_PINCTL, FDUPSPI);
drivers/usb/gadget/udc/max3420_udc.c
1247
err = usb_add_gadget_udc(&spi->dev, &udc->gadget);
drivers/usb/gadget/udc/max3420_udc.c
1251
udc->dev = &udc->gadget.dev;
drivers/usb/gadget/udc/max3420_udc.c
1253
spi_set_drvdata(spi, udc);
drivers/usb/gadget/udc/max3420_udc.c
1257
"max3420", udc);
drivers/usb/gadget/udc/max3420_udc.c
1261
udc->thread_task = kthread_create(max3420_thread, udc,
drivers/usb/gadget/udc/max3420_udc.c
1263
if (IS_ERR(udc->thread_task)) {
drivers/usb/gadget/udc/max3420_udc.c
1264
err = PTR_ERR(udc->thread_task);
drivers/usb/gadget/udc/max3420_udc.c
1270
udc->is_selfpowered = 1;
drivers/usb/gadget/udc/max3420_udc.c
1271
udc->vbus_active = true;
drivers/usb/gadget/udc/max3420_udc.c
1272
udc->todo |= UDC_START;
drivers/usb/gadget/udc/max3420_udc.c
1273
usb_udc_vbus_handler(&udc->gadget, udc->vbus_active);
drivers/usb/gadget/udc/max3420_udc.c
1274
usb_gadget_set_state(&udc->gadget, USB_STATE_POWERED);
drivers/usb/gadget/udc/max3420_udc.c
1275
max3420_start(udc);
drivers/usb/gadget/udc/max3420_udc.c
1277
udc->is_selfpowered = 0;
drivers/usb/gadget/udc/max3420_udc.c
1279
spi_rd_buf(udc, MAX3420_REG_EPIRQ, reg, 8);
drivers/usb/gadget/udc/max3420_udc.c
1281
udc->vbus_active = true;
drivers/usb/gadget/udc/max3420_udc.c
1284
max3420_vbus_handler, 0, "vbus", udc);
drivers/usb/gadget/udc/max3420_udc.c
1292
usb_del_gadget_udc(&udc->gadget);
drivers/usb/gadget/udc/max3420_udc.c
1298
struct max3420_udc *udc = spi_get_drvdata(spi);
drivers/usb/gadget/udc/max3420_udc.c
1301
usb_del_gadget_udc(&udc->gadget);
drivers/usb/gadget/udc/max3420_udc.c
1303
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/max3420_udc.c
1305
kthread_stop(udc->thread_task);
drivers/usb/gadget/udc/max3420_udc.c
1307
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/max3420_udc.c
157
struct max3420_udc *udc;
drivers/usb/gadget/udc/max3420_udc.c
199
static void spi_ack_ctrl(struct max3420_udc *udc)
drivers/usb/gadget/udc/max3420_udc.c
201
struct spi_device *spi = udc->spi;
drivers/usb/gadget/udc/max3420_udc.c
218
static u8 spi_rd8_ack(struct max3420_udc *udc, u8 reg, int actstat)
drivers/usb/gadget/udc/max3420_udc.c
220
struct spi_device *spi = udc->spi;
drivers/usb/gadget/udc/max3420_udc.c
240
static u8 spi_rd8(struct max3420_udc *udc, u8 reg)
drivers/usb/gadget/udc/max3420_udc.c
242
return spi_rd8_ack(udc, reg, 0);
drivers/usb/gadget/udc/max3420_udc.c
245
static void spi_wr8_ack(struct max3420_udc *udc, u8 reg, u8 val, int actstat)
drivers/usb/gadget/udc/max3420_udc.c
247
struct spi_device *spi = udc->spi;
drivers/usb/gadget/udc/max3420_udc.c
266
static void spi_wr8(struct max3420_udc *udc, u8 reg, u8 val)
drivers/usb/gadget/udc/max3420_udc.c
268
spi_wr8_ack(udc, reg, val, 0);
drivers/usb/gadget/udc/max3420_udc.c
271
static void spi_rd_buf(struct max3420_udc *udc, u8 reg, void *buf, u8 len)
drivers/usb/gadget/udc/max3420_udc.c
273
struct spi_device *spi = udc->spi;
drivers/usb/gadget/udc/max3420_udc.c
293
static void spi_wr_buf(struct max3420_udc *udc, u8 reg, void *buf, u8 len)
drivers/usb/gadget/udc/max3420_udc.c
295
struct spi_device *spi = udc->spi;
drivers/usb/gadget/udc/max3420_udc.c
316
struct max3420_udc *udc = ep->udc;
drivers/usb/gadget/udc/max3420_udc.c
329
epien = spi_rd8(udc, MAX3420_REG_EPIEN);
drivers/usb/gadget/udc/max3420_udc.c
330
epdis = spi_rd8(udc, MAX3420_REG_CLRTOGS);
drivers/usb/gadget/udc/max3420_udc.c
340
spi_wr8(udc, MAX3420_REG_CLRTOGS, epdis);
drivers/usb/gadget/udc/max3420_udc.c
341
spi_wr8(udc, MAX3420_REG_EPIEN, epien);
drivers/usb/gadget/udc/max3420_udc.c
348
struct max3420_udc *udc = ep->udc;
drivers/usb/gadget/udc/max3420_udc.c
361
epstalls = spi_rd8(udc, MAX3420_REG_EPSTALLS);
drivers/usb/gadget/udc/max3420_udc.c
370
clrtogs = spi_rd8(udc, MAX3420_REG_CLRTOGS);
drivers/usb/gadget/udc/max3420_udc.c
372
spi_wr8(udc, MAX3420_REG_CLRTOGS, clrtogs);
drivers/usb/gadget/udc/max3420_udc.c
374
spi_wr8(udc, MAX3420_REG_EPSTALLS, epstalls | ACKSTAT);
drivers/usb/gadget/udc/max3420_udc.c
379
static int spi_max3420_rwkup(struct max3420_udc *udc)
drivers/usb/gadget/udc/max3420_udc.c
385
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/max3420_udc.c
386
wake_remote = udc->todo & REMOTE_WAKEUP;
drivers/usb/gadget/udc/max3420_udc.c
387
udc->todo &= ~REMOTE_WAKEUP;
drivers/usb/gadget/udc/max3420_udc.c
388
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/max3420_udc.c
390
if (!wake_remote || !udc->suspended)
drivers/usb/gadget/udc/max3420_udc.c
394
usbctl = spi_rd8(udc, MAX3420_REG_USBCTL);
drivers/usb/gadget/udc/max3420_udc.c
396
spi_wr8(udc, MAX3420_REG_USBCTL, usbctl);
drivers/usb/gadget/udc/max3420_udc.c
401
usbctl = spi_rd8(udc, MAX3420_REG_USBCTL);
drivers/usb/gadget/udc/max3420_udc.c
403
spi_wr8(udc, MAX3420_REG_USBCTL, usbctl);
drivers/usb/gadget/udc/max3420_udc.c
405
udc->suspended = false;
drivers/usb/gadget/udc/max3420_udc.c
411
static void __max3420_stop(struct max3420_udc *udc)
drivers/usb/gadget/udc/max3420_udc.c
418
max3420_nuke(&udc->ep[i], -ECONNRESET);
drivers/usb/gadget/udc/max3420_udc.c
421
spi_wr8(udc, MAX3420_REG_CPUCTL, 0);
drivers/usb/gadget/udc/max3420_udc.c
423
val = spi_rd8(udc, MAX3420_REG_USBCTL);
drivers/usb/gadget/udc/max3420_udc.c
425
if (udc->is_selfpowered)
drivers/usb/gadget/udc/max3420_udc.c
429
spi_wr8(udc, MAX3420_REG_USBCTL, val);
drivers/usb/gadget/udc/max3420_udc.c
432
static void __max3420_start(struct max3420_udc *udc)
drivers/usb/gadget/udc/max3420_udc.c
442
spi_wr8(udc, MAX3420_REG_PINCTL, FDUPSPI);
drivers/usb/gadget/udc/max3420_udc.c
445
spi_wr8(udc, MAX3420_REG_USBCTL, CHIPRES);
drivers/usb/gadget/udc/max3420_udc.c
447
spi_wr8(udc, MAX3420_REG_USBCTL, 0);
drivers/usb/gadget/udc/max3420_udc.c
451
val = spi_rd8(udc, MAX3420_REG_USBIRQ);
drivers/usb/gadget/udc/max3420_udc.c
458
val = spi_rd8(udc, MAX3420_REG_USBCTL);
drivers/usb/gadget/udc/max3420_udc.c
460
spi_wr8(udc, MAX3420_REG_USBCTL, val);
drivers/usb/gadget/udc/max3420_udc.c
463
if (udc->is_selfpowered)
drivers/usb/gadget/udc/max3420_udc.c
465
spi_wr8(udc, MAX3420_REG_USBIEN, val);
drivers/usb/gadget/udc/max3420_udc.c
469
spi_wr8(udc, MAX3420_REG_EPIEN, val);
drivers/usb/gadget/udc/max3420_udc.c
472
spi_wr8(udc, MAX3420_REG_CPUCTL, IE);
drivers/usb/gadget/udc/max3420_udc.c
475
static int max3420_start(struct max3420_udc *udc)
drivers/usb/gadget/udc/max3420_udc.c
480
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/max3420_udc.c
481
todo = udc->todo & UDC_START;
drivers/usb/gadget/udc/max3420_udc.c
482
udc->todo &= ~UDC_START;
drivers/usb/gadget/udc/max3420_udc.c
483
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/max3420_udc.c
488
if (udc->vbus_active && udc->softconnect)
drivers/usb/gadget/udc/max3420_udc.c
489
__max3420_start(udc);
drivers/usb/gadget/udc/max3420_udc.c
491
__max3420_stop(udc);
drivers/usb/gadget/udc/max3420_udc.c
498
struct max3420_udc *udc = dev_id;
drivers/usb/gadget/udc/max3420_udc.c
501
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/max3420_udc.c
503
udc->vbus_active = !udc->vbus_active;
drivers/usb/gadget/udc/max3420_udc.c
504
udc->todo |= UDC_START;
drivers/usb/gadget/udc/max3420_udc.c
505
usb_udc_vbus_handler(&udc->gadget, udc->vbus_active);
drivers/usb/gadget/udc/max3420_udc.c
506
usb_gadget_set_state(&udc->gadget, udc->vbus_active
drivers/usb/gadget/udc/max3420_udc.c
508
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/max3420_udc.c
510
if (udc->thread_task)
drivers/usb/gadget/udc/max3420_udc.c
511
wake_up_process(udc->thread_task);
drivers/usb/gadget/udc/max3420_udc.c
518
struct max3420_udc *udc = dev_id;
drivers/usb/gadget/udc/max3420_udc.c
519
struct spi_device *spi = udc->spi;
drivers/usb/gadget/udc/max3420_udc.c
522
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/max3420_udc.c
523
if ((udc->todo & ENABLE_IRQ) == 0) {
drivers/usb/gadget/udc/max3420_udc.c
525
udc->todo |= ENABLE_IRQ;
drivers/usb/gadget/udc/max3420_udc.c
527
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/max3420_udc.c
529
if (udc->thread_task)
drivers/usb/gadget/udc/max3420_udc.c
530
wake_up_process(udc->thread_task);
drivers/usb/gadget/udc/max3420_udc.c
535
static void max3420_getstatus(struct max3420_udc *udc)
drivers/usb/gadget/udc/max3420_udc.c
540
switch (udc->setup.bRequestType & USB_RECIP_MASK) {
drivers/usb/gadget/udc/max3420_udc.c
543
status = udc->gadget.is_selfpowered << USB_DEVICE_SELF_POWERED;
drivers/usb/gadget/udc/max3420_udc.c
544
status |= (udc->remote_wkp << USB_DEVICE_REMOTE_WAKEUP);
drivers/usb/gadget/udc/max3420_udc.c
547
if (udc->driver->setup(&udc->gadget, &udc->setup) < 0)
drivers/usb/gadget/udc/max3420_udc.c
551
ep = &udc->ep[udc->setup.wIndex & USB_ENDPOINT_NUMBER_MASK];
drivers/usb/gadget/udc/max3420_udc.c
552
if (udc->setup.wIndex & USB_DIR_IN) {
drivers/usb/gadget/udc/max3420_udc.c
567
spi_wr_buf(udc, MAX3420_REG_EP0FIFO, &status, 2);
drivers/usb/gadget/udc/max3420_udc.c
568
spi_wr8_ack(udc, MAX3420_REG_EP0BC, 2, 1);
drivers/usb/gadget/udc/max3420_udc.c
571
dev_err(udc->dev, "Can't respond to getstatus request\n");
drivers/usb/gadget/udc/max3420_udc.c
572
spi_wr8(udc, MAX3420_REG_EPSTALLS, STLEP0IN | STLEP0OUT | STLSTAT);
drivers/usb/gadget/udc/max3420_udc.c
575
static void max3420_set_clear_feature(struct max3420_udc *udc)
drivers/usb/gadget/udc/max3420_udc.c
578
int set = udc->setup.bRequest == USB_REQ_SET_FEATURE;
drivers/usb/gadget/udc/max3420_udc.c
582
switch (udc->setup.bRequestType) {
drivers/usb/gadget/udc/max3420_udc.c
584
if (udc->setup.wValue != USB_DEVICE_REMOTE_WAKEUP)
drivers/usb/gadget/udc/max3420_udc.c
587
if (udc->setup.bRequest == USB_REQ_SET_FEATURE)
drivers/usb/gadget/udc/max3420_udc.c
588
udc->remote_wkp = 1;
drivers/usb/gadget/udc/max3420_udc.c
590
udc->remote_wkp = 0;
drivers/usb/gadget/udc/max3420_udc.c
592
return spi_ack_ctrl(udc);
drivers/usb/gadget/udc/max3420_udc.c
595
if (udc->setup.wValue != USB_ENDPOINT_HALT)
drivers/usb/gadget/udc/max3420_udc.c
598
id = udc->setup.wIndex & USB_ENDPOINT_NUMBER_MASK;
drivers/usb/gadget/udc/max3420_udc.c
599
ep = &udc->ep[id];
drivers/usb/gadget/udc/max3420_udc.c
615
dev_err(udc->dev, "Can't respond to SET/CLEAR FEATURE\n");
drivers/usb/gadget/udc/max3420_udc.c
616
spi_wr8(udc, MAX3420_REG_EPSTALLS, STLEP0IN | STLEP0OUT | STLSTAT);
drivers/usb/gadget/udc/max3420_udc.c
619
static void max3420_handle_setup(struct max3420_udc *udc)
drivers/usb/gadget/udc/max3420_udc.c
623
spi_rd_buf(udc, MAX3420_REG_SUDFIFO, (void *)&setup, 8);
drivers/usb/gadget/udc/max3420_udc.c
625
udc->setup = setup;
drivers/usb/gadget/udc/max3420_udc.c
626
udc->setup.wValue = cpu_to_le16(setup.wValue);
drivers/usb/gadget/udc/max3420_udc.c
627
udc->setup.wIndex = cpu_to_le16(setup.wIndex);
drivers/usb/gadget/udc/max3420_udc.c
628
udc->setup.wLength = cpu_to_le16(setup.wLength);
drivers/usb/gadget/udc/max3420_udc.c
630
switch (udc->setup.bRequest) {
drivers/usb/gadget/udc/max3420_udc.c
633
if ((udc->setup.bRequestType &
drivers/usb/gadget/udc/max3420_udc.c
638
return max3420_getstatus(udc);
drivers/usb/gadget/udc/max3420_udc.c
641
if (udc->setup.bRequestType != (USB_DIR_OUT |
drivers/usb/gadget/udc/max3420_udc.c
645
spi_rd8_ack(udc, MAX3420_REG_FNADDR, 1);
drivers/usb/gadget/udc/max3420_udc.c
646
dev_dbg(udc->dev, "Assigned Address=%d\n", udc->setup.wValue);
drivers/usb/gadget/udc/max3420_udc.c
651
if ((udc->setup.bRequestType & USB_TYPE_MASK)
drivers/usb/gadget/udc/max3420_udc.c
654
return max3420_set_clear_feature(udc);
drivers/usb/gadget/udc/max3420_udc.c
659
if (udc->driver->setup(&udc->gadget, &setup) < 0) {
drivers/usb/gadget/udc/max3420_udc.c
661
spi_wr8(udc, MAX3420_REG_EPSTALLS,
drivers/usb/gadget/udc/max3420_udc.c
669
struct max3420_udc *udc = ep->udc;
drivers/usb/gadget/udc/max3420_udc.c
677
dev_err(udc->dev, "%s done %p, status %d\n",
drivers/usb/gadget/udc/max3420_udc.c
684
static int max3420_do_data(struct max3420_udc *udc, int ep_id, int in)
drivers/usb/gadget/udc/max3420_udc.c
686
struct max3420_ep *ep = &udc->ep[ep_id];
drivers/usb/gadget/udc/max3420_udc.c
709
spi_wr_buf(udc, MAX3420_REG_EP0FIFO + ep_id, buf, length);
drivers/usb/gadget/udc/max3420_udc.c
710
spi_wr8(udc, MAX3420_REG_EP0BC + ep_id, length);
drivers/usb/gadget/udc/max3420_udc.c
714
psz = spi_rd8(udc, MAX3420_REG_EP0BC + ep_id);
drivers/usb/gadget/udc/max3420_udc.c
717
spi_rd_buf(udc, MAX3420_REG_EP0FIFO + ep_id, buf, length);
drivers/usb/gadget/udc/max3420_udc.c
736
spi_ack_ctrl(udc);
drivers/usb/gadget/udc/max3420_udc.c
744
static int max3420_handle_irqs(struct max3420_udc *udc)
drivers/usb/gadget/udc/max3420_udc.c
749
spi_rd_buf(udc, MAX3420_REG_EPIRQ, reg, 4);
drivers/usb/gadget/udc/max3420_udc.c
759
spi_wr8(udc, MAX3420_REG_EPIRQ, SUDAVIRQ);
drivers/usb/gadget/udc/max3420_udc.c
760
max3420_handle_setup(udc);
drivers/usb/gadget/udc/max3420_udc.c
765
spi_wr8(udc, MAX3420_REG_USBIRQ, VBUSIRQ);
drivers/usb/gadget/udc/max3420_udc.c
766
dev_dbg(udc->dev, "Cable plugged in\n");
drivers/usb/gadget/udc/max3420_udc.c
771
spi_wr8(udc, MAX3420_REG_USBIRQ, NOVBUSIRQ);
drivers/usb/gadget/udc/max3420_udc.c
772
dev_dbg(udc->dev, "Cable pulled out\n");
drivers/usb/gadget/udc/max3420_udc.c
777
spi_wr8(udc, MAX3420_REG_USBIRQ, URESIRQ);
drivers/usb/gadget/udc/max3420_udc.c
778
dev_dbg(udc->dev, "USB Reset - Start\n");
drivers/usb/gadget/udc/max3420_udc.c
783
spi_wr8(udc, MAX3420_REG_USBIRQ, URESDNIRQ);
drivers/usb/gadget/udc/max3420_udc.c
784
dev_dbg(udc->dev, "USB Reset - END\n");
drivers/usb/gadget/udc/max3420_udc.c
785
spi_wr8(udc, MAX3420_REG_USBIEN, URESDNIRQ | URESIRQ);
drivers/usb/gadget/udc/max3420_udc.c
786
spi_wr8(udc, MAX3420_REG_EPIEN, SUDAVIRQ | IN0BAVIRQ
drivers/usb/gadget/udc/max3420_udc.c
792
spi_wr8(udc, MAX3420_REG_USBIRQ, SUSPIRQ);
drivers/usb/gadget/udc/max3420_udc.c
793
dev_dbg(udc->dev, "USB Suspend - Enter\n");
drivers/usb/gadget/udc/max3420_udc.c
794
udc->suspended = true;
drivers/usb/gadget/udc/max3420_udc.c
799
spi_wr8(udc, MAX3420_REG_USBIRQ, BUSACTIRQ);
drivers/usb/gadget/udc/max3420_udc.c
800
dev_dbg(udc->dev, "USB Suspend - Exit\n");
drivers/usb/gadget/udc/max3420_udc.c
801
udc->suspended = false;
drivers/usb/gadget/udc/max3420_udc.c
806
spi_wr8(udc, MAX3420_REG_USBIRQ, RWUDNIRQ);
drivers/usb/gadget/udc/max3420_udc.c
807
dev_dbg(udc->dev, "Asked Host to wakeup\n");
drivers/usb/gadget/udc/max3420_udc.c
812
spi_wr8(udc, MAX3420_REG_USBIRQ, OSCOKIRQ);
drivers/usb/gadget/udc/max3420_udc.c
813
dev_dbg(udc->dev, "Osc stabilized, start work\n");
drivers/usb/gadget/udc/max3420_udc.c
817
if (epirq & OUT0DAVIRQ && max3420_do_data(udc, 0, 0)) {
drivers/usb/gadget/udc/max3420_udc.c
818
spi_wr8_ack(udc, MAX3420_REG_EPIRQ, OUT0DAVIRQ, 1);
drivers/usb/gadget/udc/max3420_udc.c
822
if (epirq & IN0BAVIRQ && max3420_do_data(udc, 0, 1))
drivers/usb/gadget/udc/max3420_udc.c
825
if (epirq & OUT1DAVIRQ && max3420_do_data(udc, 1, 0)) {
drivers/usb/gadget/udc/max3420_udc.c
826
spi_wr8_ack(udc, MAX3420_REG_EPIRQ, OUT1DAVIRQ, 1);
drivers/usb/gadget/udc/max3420_udc.c
830
if (epirq & IN2BAVIRQ && max3420_do_data(udc, 2, 1))
drivers/usb/gadget/udc/max3420_udc.c
833
if (epirq & IN3BAVIRQ && max3420_do_data(udc, 3, 1))
drivers/usb/gadget/udc/max3420_udc.c
841
struct max3420_udc *udc = dev_id;
drivers/usb/gadget/udc/max3420_udc.c
842
struct spi_device *spi = udc->spi;
drivers/usb/gadget/udc/max3420_udc.c
852
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/max3420_udc.c
853
if (udc->todo & ENABLE_IRQ) {
drivers/usb/gadget/udc/max3420_udc.c
855
udc->todo &= ~ENABLE_IRQ;
drivers/usb/gadget/udc/max3420_udc.c
857
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/max3420_udc.c
863
mutex_lock(&udc->spi_bus_mutex);
drivers/usb/gadget/udc/max3420_udc.c
866
if (!udc->vbus_active || !udc->softconnect)
drivers/usb/gadget/udc/max3420_udc.c
869
if (max3420_start(udc)) {
drivers/usb/gadget/udc/max3420_udc.c
874
if (max3420_handle_irqs(udc)) {
drivers/usb/gadget/udc/max3420_udc.c
879
if (spi_max3420_rwkup(udc)) {
drivers/usb/gadget/udc/max3420_udc.c
884
max3420_do_data(udc, 0, 1); /* get done with the EP0 ZLP */
drivers/usb/gadget/udc/max3420_udc.c
887
struct max3420_ep *ep = &udc->ep[i];
drivers/usb/gadget/udc/max3420_udc.c
895
mutex_unlock(&udc->spi_bus_mutex);
drivers/usb/gadget/udc/max3420_udc.c
899
dev_info(udc->dev, "SPI thread exiting\n");
drivers/usb/gadget/udc/max3420_udc.c
906
struct max3420_udc *udc = ep->udc;
drivers/usb/gadget/udc/max3420_udc.c
919
wake_up_process(udc->thread_task);
drivers/usb/gadget/udc/max3420_udc.c
921
dev_dbg(udc->dev, "%sStall %s\n", stall ? "" : "Un", ep->name);
drivers/usb/gadget/udc/max3420_udc.c
946
struct max3420_udc *udc = ep->udc;
drivers/usb/gadget/udc/max3420_udc.c
950
wake_up_process(udc->thread_task);
drivers/usb/gadget/udc/max3420_udc.c
975
struct max3420_udc *udc = ep->udc;
drivers/usb/gadget/udc/max3420_udc.c
987
dev_dbg(udc->dev, "Disabled %s\n", ep->name);
drivers/usb/gadget/udc/max3420_udc.c
993
struct max3420_udc *udc = ep->udc;
drivers/usb/gadget/udc/max3420_udc.c
999
wake_up_process(udc->thread_task);
drivers/usb/gadget/udc/omap_udc.c
1000
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/omap_udc.c
1014
spin_lock_irqsave(&ep->udc->lock, flags);
drivers/usb/gadget/udc/omap_udc.c
1024
spin_unlock_irqrestore(&ep->udc->lock, flags);
drivers/usb/gadget/udc/omap_udc.c
1038
spin_unlock_irqrestore(&ep->udc->lock, flags);
drivers/usb/gadget/udc/omap_udc.c
1050
spin_lock_irqsave(&ep->udc->lock, flags);
drivers/usb/gadget/udc/omap_udc.c
1054
if (!ep->udc->ep0_pending)
drivers/usb/gadget/udc/omap_udc.c
1057
if (ep->udc->ep0_set_config) {
drivers/usb/gadget/udc/omap_udc.c
1062
ep->udc->ep0_pending = 0;
drivers/usb/gadget/udc/omap_udc.c
1099
omap_writew(ep->udc->clr_halt, UDC_CTRL);
drivers/usb/gadget/udc/omap_udc.c
1111
spin_unlock_irqrestore(&ep->udc->lock, flags);
drivers/usb/gadget/udc/omap_udc.c
1140
struct omap_udc *udc;
drivers/usb/gadget/udc/omap_udc.c
1144
udc = container_of(gadget, struct omap_udc, gadget);
drivers/usb/gadget/udc/omap_udc.c
1146
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/omap_udc.c
1147
if (udc->devstat & UDC_SUS) {
drivers/usb/gadget/udc/omap_udc.c
1151
if (udc->devstat & (UDC_B_HNP_ENABLE|UDC_R_WK_OK)) {
drivers/usb/gadget/udc/omap_udc.c
1158
} else if (!(udc->devstat & UDC_ATT)) {
drivers/usb/gadget/udc/omap_udc.c
1159
if (!IS_ERR_OR_NULL(udc->transceiver))
drivers/usb/gadget/udc/omap_udc.c
1160
retval = otg_start_srp(udc->transceiver->otg);
drivers/usb/gadget/udc/omap_udc.c
1162
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/omap_udc.c
1170
struct omap_udc *udc;
drivers/usb/gadget/udc/omap_udc.c
1175
udc = container_of(gadget, struct omap_udc, gadget);
drivers/usb/gadget/udc/omap_udc.c
1176
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/omap_udc.c
1183
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/omap_udc.c
1188
static int can_pullup(struct omap_udc *udc)
drivers/usb/gadget/udc/omap_udc.c
1190
return udc->driver && udc->softconnect && udc->vbus_active;
drivers/usb/gadget/udc/omap_udc.c
1193
static void pullup_enable(struct omap_udc *udc)
drivers/usb/gadget/udc/omap_udc.c
1200
if (!gadget_is_otg(&udc->gadget) && !cpu_is_omap15xx()) {
drivers/usb/gadget/udc/omap_udc.c
1210
static void pullup_disable(struct omap_udc *udc)
drivers/usb/gadget/udc/omap_udc.c
1214
if (!gadget_is_otg(&udc->gadget) && !cpu_is_omap15xx()) {
drivers/usb/gadget/udc/omap_udc.c
1227
static struct omap_udc *udc;
drivers/usb/gadget/udc/omap_udc.c
1231
if (udc == NULL || udc->dc_clk == NULL || udc->hhc_clk == NULL)
drivers/usb/gadget/udc/omap_udc.c
1235
clk_enable(udc->dc_clk);
drivers/usb/gadget/udc/omap_udc.c
1236
clk_enable(udc->hhc_clk);
drivers/usb/gadget/udc/omap_udc.c
1239
clk_disable(udc->hhc_clk);
drivers/usb/gadget/udc/omap_udc.c
1240
clk_disable(udc->dc_clk);
drivers/usb/gadget/udc/omap_udc.c
1250
struct omap_udc *udc;
drivers/usb/gadget/udc/omap_udc.c
1254
udc = container_of(gadget, struct omap_udc, gadget);
drivers/usb/gadget/udc/omap_udc.c
1255
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/omap_udc.c
1257
udc->vbus_active = (is_active != 0);
drivers/usb/gadget/udc/omap_udc.c
1267
if (udc->dc_clk != NULL && is_active) {
drivers/usb/gadget/udc/omap_udc.c
1268
if (!udc->clk_requested) {
drivers/usb/gadget/udc/omap_udc.c
1270
udc->clk_requested = 1;
drivers/usb/gadget/udc/omap_udc.c
1273
if (can_pullup(udc))
drivers/usb/gadget/udc/omap_udc.c
1274
pullup_enable(udc);
drivers/usb/gadget/udc/omap_udc.c
1276
pullup_disable(udc);
drivers/usb/gadget/udc/omap_udc.c
1277
if (udc->dc_clk != NULL && !is_active) {
drivers/usb/gadget/udc/omap_udc.c
1278
if (udc->clk_requested) {
drivers/usb/gadget/udc/omap_udc.c
1280
udc->clk_requested = 0;
drivers/usb/gadget/udc/omap_udc.c
1283
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/omap_udc.c
1289
struct omap_udc *udc;
drivers/usb/gadget/udc/omap_udc.c
1291
udc = container_of(gadget, struct omap_udc, gadget);
drivers/usb/gadget/udc/omap_udc.c
1292
if (!IS_ERR_OR_NULL(udc->transceiver))
drivers/usb/gadget/udc/omap_udc.c
1293
return usb_phy_set_power(udc->transceiver, mA);
drivers/usb/gadget/udc/omap_udc.c
1299
struct omap_udc *udc;
drivers/usb/gadget/udc/omap_udc.c
1302
udc = container_of(gadget, struct omap_udc, gadget);
drivers/usb/gadget/udc/omap_udc.c
1303
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/omap_udc.c
1304
udc->softconnect = (is_on != 0);
drivers/usb/gadget/udc/omap_udc.c
1305
if (can_pullup(udc))
drivers/usb/gadget/udc/omap_udc.c
1306
pullup_enable(udc);
drivers/usb/gadget/udc/omap_udc.c
1308
pullup_disable(udc);
drivers/usb/gadget/udc/omap_udc.c
1309
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/omap_udc.c
1352
static void udc_quiesce(struct omap_udc *udc)
drivers/usb/gadget/udc/omap_udc.c
1356
udc->gadget.speed = USB_SPEED_UNKNOWN;
drivers/usb/gadget/udc/omap_udc.c
1357
nuke(&udc->ep[0], -ESHUTDOWN);
drivers/usb/gadget/udc/omap_udc.c
1358
list_for_each_entry(ep, &udc->gadget.ep_list, ep.ep_list)
drivers/usb/gadget/udc/omap_udc.c
1364
static void update_otg(struct omap_udc *udc)
drivers/usb/gadget/udc/omap_udc.c
1368
if (!gadget_is_otg(&udc->gadget))
drivers/usb/gadget/udc/omap_udc.c
1376
udc->gadget.b_hnp_enable = !!(devstat & UDC_B_HNP_ENABLE);
drivers/usb/gadget/udc/omap_udc.c
1377
udc->gadget.a_hnp_support = !!(devstat & UDC_A_HNP_SUPPORT);
drivers/usb/gadget/udc/omap_udc.c
1378
udc->gadget.a_alt_hnp_support = !!(devstat & UDC_A_ALT_HNP_SUPPORT);
drivers/usb/gadget/udc/omap_udc.c
1383
if (udc->gadget.b_hnp_enable) {
drivers/usb/gadget/udc/omap_udc.c
1393
static void ep0_irq(struct omap_udc *udc, u16 irq_src)
drivers/usb/gadget/udc/omap_udc.c
1395
struct omap_ep *ep0 = &udc->ep[0];
drivers/usb/gadget/udc/omap_udc.c
1432
if (udc->ep0_in) {
drivers/usb/gadget/udc/omap_udc.c
1439
if (!req && udc->ep0_pending) {
drivers/usb/gadget/udc/omap_udc.c
1444
udc->ep0_pending = 0;
drivers/usb/gadget/udc/omap_udc.c
1469
if (!udc->ep0_in) {
drivers/usb/gadget/udc/omap_udc.c
1477
udc->ep0_pending = 0;
drivers/usb/gadget/udc/omap_udc.c
148
struct omap_udc *udc;
drivers/usb/gadget/udc/omap_udc.c
1492
udc->ep0_pending = 0;
drivers/usb/gadget/udc/omap_udc.c
1536
udc->ep0_in = (u.r.bRequestType & USB_DIR_IN) != 0;
drivers/usb/gadget/udc/omap_udc.c
1537
udc->ep0_set_config = 0;
drivers/usb/gadget/udc/omap_udc.c
1538
udc->ep0_pending = 1;
drivers/usb/gadget/udc/omap_udc.c
1548
udc->ep0_set_config = 1;
drivers/usb/gadget/udc/omap_udc.c
1549
udc->ep0_reset_config = (w_value == 0);
drivers/usb/gadget/udc/omap_udc.c
1556
if (udc->ep0_reset_config)
drivers/usb/gadget/udc/omap_udc.c
1560
update_otg(udc);
drivers/usb/gadget/udc/omap_udc.c
1569
ep = &udc->ep[w_index & 0xf];
drivers/usb/gadget/udc/omap_udc.c
1577
omap_writew(udc->clr_halt, UDC_CTRL);
drivers/usb/gadget/udc/omap_udc.c
1598
ep = &udc->ep[w_index & 0xf];
drivers/usb/gadget/udc/omap_udc.c
1622
udc->ep0_pending = 0;
drivers/usb/gadget/udc/omap_udc.c
1634
ep = &udc->ep[w_index & 0xf];
drivers/usb/gadget/udc/omap_udc.c
1669
if (!udc->ep0_in && w_length) {
drivers/usb/gadget/udc/omap_udc.c
1697
udc->ep0_setup = 1;
drivers/usb/gadget/udc/omap_udc.c
1698
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/omap_udc.c
1699
status = udc->driver->setup(&udc->gadget, &u.r);
drivers/usb/gadget/udc/omap_udc.c
1700
spin_lock(&udc->lock);
drivers/usb/gadget/udc/omap_udc.c
1701
udc->ep0_setup = 0;
drivers/usb/gadget/udc/omap_udc.c
1708
if (udc->ep0_set_config) {
drivers/usb/gadget/udc/omap_udc.c
1709
if (udc->ep0_reset_config)
drivers/usb/gadget/udc/omap_udc.c
1715
udc->ep0_pending = 0;
drivers/usb/gadget/udc/omap_udc.c
1724
static void devstate_irq(struct omap_udc *udc, u16 irq_src)
drivers/usb/gadget/udc/omap_udc.c
1729
change = devstat ^ udc->devstat;
drivers/usb/gadget/udc/omap_udc.c
1730
udc->devstat = devstat;
drivers/usb/gadget/udc/omap_udc.c
1733
udc_quiesce(udc);
drivers/usb/gadget/udc/omap_udc.c
1740
udc->gadget.speed = USB_SPEED_FULL;
drivers/usb/gadget/udc/omap_udc.c
1742
if (IS_ERR_OR_NULL(udc->transceiver))
drivers/usb/gadget/udc/omap_udc.c
1743
pullup_enable(udc);
drivers/usb/gadget/udc/omap_udc.c
1745
} else if (udc->gadget.speed != USB_SPEED_UNKNOWN) {
drivers/usb/gadget/udc/omap_udc.c
1746
udc->gadget.speed = USB_SPEED_UNKNOWN;
drivers/usb/gadget/udc/omap_udc.c
1747
if (IS_ERR_OR_NULL(udc->transceiver))
drivers/usb/gadget/udc/omap_udc.c
1748
pullup_disable(udc);
drivers/usb/gadget/udc/omap_udc.c
1750
udc->driver->driver.name);
drivers/usb/gadget/udc/omap_udc.c
1751
if (udc->driver->disconnect) {
drivers/usb/gadget/udc/omap_udc.c
1752
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/omap_udc.c
1753
udc->driver->disconnect(&udc->gadget);
drivers/usb/gadget/udc/omap_udc.c
1754
spin_lock(&udc->lock);
drivers/usb/gadget/udc/omap_udc.c
1764
udc->gadget.speed = USB_SPEED_FULL;
drivers/usb/gadget/udc/omap_udc.c
1766
udc->driver->driver.name);
drivers/usb/gadget/udc/omap_udc.c
1775
if (udc->gadget.speed != USB_SPEED_UNKNOWN) {
drivers/usb/gadget/udc/omap_udc.c
1779
update_otg(udc);
drivers/usb/gadget/udc/omap_udc.c
1781
if (udc->gadget.speed == USB_SPEED_FULL
drivers/usb/gadget/udc/omap_udc.c
1782
&& udc->driver->suspend) {
drivers/usb/gadget/udc/omap_udc.c
1783
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/omap_udc.c
1784
udc->driver->suspend(&udc->gadget);
drivers/usb/gadget/udc/omap_udc.c
1785
spin_lock(&udc->lock);
drivers/usb/gadget/udc/omap_udc.c
1787
if (!IS_ERR_OR_NULL(udc->transceiver))
drivers/usb/gadget/udc/omap_udc.c
1789
udc->transceiver, 1);
drivers/usb/gadget/udc/omap_udc.c
1792
if (!IS_ERR_OR_NULL(udc->transceiver))
drivers/usb/gadget/udc/omap_udc.c
1794
udc->transceiver, 0);
drivers/usb/gadget/udc/omap_udc.c
1795
if (udc->gadget.speed == USB_SPEED_FULL
drivers/usb/gadget/udc/omap_udc.c
1796
&& udc->driver->resume) {
drivers/usb/gadget/udc/omap_udc.c
1797
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/omap_udc.c
1798
udc->driver->resume(&udc->gadget);
drivers/usb/gadget/udc/omap_udc.c
1799
spin_lock(&udc->lock);
drivers/usb/gadget/udc/omap_udc.c
1806
update_otg(udc);
drivers/usb/gadget/udc/omap_udc.c
1820
struct omap_udc *udc = _udc;
drivers/usb/gadget/udc/omap_udc.c
1825
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/omap_udc.c
1852
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/omap_udc.c
1867
spin_lock_irqsave(&ep->udc->lock, flags);
drivers/usb/gadget/udc/omap_udc.c
1887
spin_unlock_irqrestore(&ep->udc->lock, flags);
drivers/usb/gadget/udc/omap_udc.c
1896
struct omap_udc *udc = _dev;
drivers/usb/gadget/udc/omap_udc.c
1900
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/omap_udc.c
1909
ep = &udc->ep[epnum];
drivers/usb/gadget/udc/omap_udc.c
192
udc = ep->udc;
drivers/usb/gadget/udc/omap_udc.c
193
if (!udc->driver || udc->gadget.speed == USB_SPEED_UNKNOWN) {
drivers/usb/gadget/udc/omap_udc.c
1945
ep = &udc->ep[16 + epnum];
drivers/usb/gadget/udc/omap_udc.c
1964
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/omap_udc.c
1971
struct omap_udc *udc = _dev;
drivers/usb/gadget/udc/omap_udc.c
1976
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/omap_udc.c
1979
list_for_each_entry(ep, &udc->iso, iso) {
drivers/usb/gadget/udc/omap_udc.c
198
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/omap_udc.c
2029
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/omap_udc.c
2050
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/omap_udc.c
2052
list_for_each_entry(ep, &udc->gadget.ep_list, ep.ep_list) {
drivers/usb/gadget/udc/omap_udc.c
2059
udc->ep0_pending = 0;
drivers/usb/gadget/udc/omap_udc.c
2060
udc->ep[0].irqs = 0;
drivers/usb/gadget/udc/omap_udc.c
2061
udc->softconnect = 1;
drivers/usb/gadget/udc/omap_udc.c
2064
udc->driver = driver;
drivers/usb/gadget/udc/omap_udc.c
2065
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/omap_udc.c
2067
if (udc->dc_clk != NULL)
drivers/usb/gadget/udc/omap_udc.c
2073
if (!IS_ERR_OR_NULL(udc->transceiver)) {
drivers/usb/gadget/udc/omap_udc.c
2074
status = otg_set_peripheral(udc->transceiver->otg,
drivers/usb/gadget/udc/omap_udc.c
2075
&udc->gadget);
drivers/usb/gadget/udc/omap_udc.c
2078
udc->driver = NULL;
drivers/usb/gadget/udc/omap_udc.c
2083
if (can_pullup(udc))
drivers/usb/gadget/udc/omap_udc.c
2084
pullup_enable(udc);
drivers/usb/gadget/udc/omap_udc.c
2086
pullup_disable(udc);
drivers/usb/gadget/udc/omap_udc.c
2093
omap_vbus_session(&udc->gadget, 1);
drivers/usb/gadget/udc/omap_udc.c
2096
if (udc->dc_clk != NULL)
drivers/usb/gadget/udc/omap_udc.c
210
omap_writew(udc->clr_halt, UDC_CTRL);
drivers/usb/gadget/udc/omap_udc.c
2106
if (udc->dc_clk != NULL)
drivers/usb/gadget/udc/omap_udc.c
2110
omap_vbus_session(&udc->gadget, 0);
drivers/usb/gadget/udc/omap_udc.c
2112
if (!IS_ERR_OR_NULL(udc->transceiver))
drivers/usb/gadget/udc/omap_udc.c
2113
(void) otg_set_peripheral(udc->transceiver->otg, NULL);
drivers/usb/gadget/udc/omap_udc.c
2115
pullup_disable(udc);
drivers/usb/gadget/udc/omap_udc.c
2117
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/omap_udc.c
2118
udc_quiesce(udc);
drivers/usb/gadget/udc/omap_udc.c
2119
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/omap_udc.c
2121
udc->driver = NULL;
drivers/usb/gadget/udc/omap_udc.c
2123
if (udc->dc_clk != NULL)
drivers/usb/gadget/udc/omap_udc.c
215
list_add(&ep->iso, &udc->iso);
drivers/usb/gadget/udc/omap_udc.c
2299
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/omap_udc.c
230
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/omap_udc.c
2313
udc->driver ? udc->driver->driver.name : "(none)",
drivers/usb/gadget/udc/omap_udc.c
2315
udc->transceiver
drivers/usb/gadget/udc/omap_udc.c
2316
? udc->transceiver->label
drivers/usb/gadget/udc/omap_udc.c
2343
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/omap_udc.c
2420
proc_ep_show(s, &udc->ep[0]);
drivers/usb/gadget/udc/omap_udc.c
2422
list_for_each_entry(ep, &udc->gadget.ep_list,
drivers/usb/gadget/udc/omap_udc.c
2429
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/omap_udc.c
2468
ep = &udc->ep[addr & 0xf];
drivers/usb/gadget/udc/omap_udc.c
248
spin_lock_irqsave(&ep->udc->lock, flags);
drivers/usb/gadget/udc/omap_udc.c
2559
ep->udc = udc;
drivers/usb/gadget/udc/omap_udc.c
257
spin_unlock_irqrestore(&ep->udc->lock, flags);
drivers/usb/gadget/udc/omap_udc.c
2587
list_add_tail(&ep->ep.ep_list, &udc->gadget.ep_list);
drivers/usb/gadget/udc/omap_udc.c
2594
pullup_disable(udc);
drivers/usb/gadget/udc/omap_udc.c
2595
if (!IS_ERR_OR_NULL(udc->transceiver)) {
drivers/usb/gadget/udc/omap_udc.c
2596
usb_put_phy(udc->transceiver);
drivers/usb/gadget/udc/omap_udc.c
2597
udc->transceiver = NULL;
drivers/usb/gadget/udc/omap_udc.c
2601
if (udc->dc_clk) {
drivers/usb/gadget/udc/omap_udc.c
2602
if (udc->clk_requested)
drivers/usb/gadget/udc/omap_udc.c
2604
clk_unprepare(udc->hhc_clk);
drivers/usb/gadget/udc/omap_udc.c
2605
clk_unprepare(udc->dc_clk);
drivers/usb/gadget/udc/omap_udc.c
2606
clk_put(udc->hhc_clk);
drivers/usb/gadget/udc/omap_udc.c
2607
clk_put(udc->dc_clk);
drivers/usb/gadget/udc/omap_udc.c
2609
if (udc->done)
drivers/usb/gadget/udc/omap_udc.c
2610
complete(udc->done);
drivers/usb/gadget/udc/omap_udc.c
2611
kfree(udc);
drivers/usb/gadget/udc/omap_udc.c
2630
udc = kzalloc_obj(*udc);
drivers/usb/gadget/udc/omap_udc.c
2631
if (!udc)
drivers/usb/gadget/udc/omap_udc.c
2634
spin_lock_init(&udc->lock);
drivers/usb/gadget/udc/omap_udc.c
2636
udc->gadget.ops = &omap_gadget_ops;
drivers/usb/gadget/udc/omap_udc.c
2637
udc->gadget.ep0 = &udc->ep[0].ep;
drivers/usb/gadget/udc/omap_udc.c
2638
INIT_LIST_HEAD(&udc->gadget.ep_list);
drivers/usb/gadget/udc/omap_udc.c
2639
INIT_LIST_HEAD(&udc->iso);
drivers/usb/gadget/udc/omap_udc.c
2640
udc->gadget.speed = USB_SPEED_UNKNOWN;
drivers/usb/gadget/udc/omap_udc.c
2641
udc->gadget.max_speed = USB_SPEED_FULL;
drivers/usb/gadget/udc/omap_udc.c
2642
udc->gadget.name = driver_name;
drivers/usb/gadget/udc/omap_udc.c
2643
udc->gadget.quirk_ep_out_aligned_size = 1;
drivers/usb/gadget/udc/omap_udc.c
2644
udc->transceiver = xceiv;
drivers/usb/gadget/udc/omap_udc.c
2649
list_del_init(&udc->ep[0].ep.ep_list);
drivers/usb/gadget/udc/omap_udc.c
2859
pullup_disable(udc);
drivers/usb/gadget/udc/omap_udc.c
2861
udc->gadget.is_otg = (config->otg != 0);
drivers/usb/gadget/udc/omap_udc.c
2866
udc->clr_halt = UDC_RESET_EP | UDC_CLRDATA_TOGGLE;
drivers/usb/gadget/udc/omap_udc.c
2868
udc->clr_halt = UDC_RESET_EP;
drivers/usb/gadget/udc/omap_udc.c
2872
omap_udc_irq, 0, driver_name, udc);
drivers/usb/gadget/udc/omap_udc.c
2881
omap_udc_pio_irq, 0, "omap_udc pio", udc);
drivers/usb/gadget/udc/omap_udc.c
2889
omap_udc_iso_irq, 0, "omap_udc iso", udc);
drivers/usb/gadget/udc/omap_udc.c
2897
udc->dc_clk = dc_clk;
drivers/usb/gadget/udc/omap_udc.c
2898
udc->hhc_clk = hhc_clk;
drivers/usb/gadget/udc/omap_udc.c
2904
return usb_add_gadget_udc_release(&pdev->dev, &udc->gadget,
drivers/usb/gadget/udc/omap_udc.c
2908
kfree(udc);
drivers/usb/gadget/udc/omap_udc.c
2909
udc = NULL;
drivers/usb/gadget/udc/omap_udc.c
292
struct omap_udc *udc = ep->udc;
drivers/usb/gadget/udc/omap_udc.c
2932
udc->done = &done;
drivers/usb/gadget/udc/omap_udc.c
2934
usb_del_gadget_udc(&udc->gadget);
drivers/usb/gadget/udc/omap_udc.c
2964
omap_pullup(&udc->gadget, 0);
drivers/usb/gadget/udc/omap_udc.c
2973
omap_pullup(&udc->gadget, 1);
drivers/usb/gadget/udc/omap_udc.c
2977
return omap_wakeup(&udc->gadget);
drivers/usb/gadget/udc/omap_udc.c
303
usb_gadget_unmap_request(&udc->gadget, &req->req,
drivers/usb/gadget/udc/omap_udc.c
315
spin_unlock(&ep->udc->lock);
drivers/usb/gadget/udc/omap_udc.c
317
spin_lock(&ep->udc->lock);
drivers/usb/gadget/udc/omap_udc.c
635
static void dma_irq(struct omap_udc *udc, u16 irq_src)
drivers/usb/gadget/udc/omap_udc.c
643
ep = &udc->ep[16 + UDC_DMA_TX_SRC(dman_stat)];
drivers/usb/gadget/udc/omap_udc.c
662
ep = &udc->ep[UDC_DMA_RX_SRC(dman_stat)];
drivers/usb/gadget/udc/omap_udc.c
680
ep = &udc->ep[UDC_DMA_RX_SRC(dman_stat)];
drivers/usb/gadget/udc/omap_udc.c
869
struct omap_udc *udc;
drivers/usb/gadget/udc/omap_udc.c
901
udc = ep->udc;
drivers/usb/gadget/udc/omap_udc.c
902
if (!udc->driver || udc->gadget.speed == USB_SPEED_UNKNOWN)
drivers/usb/gadget/udc/omap_udc.c
906
usb_gadget_map_request(&udc->gadget, &req->req,
drivers/usb/gadget/udc/omap_udc.c
912
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/omap_udc.c
928
if (!udc->ep0_pending || !list_empty(&ep->queue)) {
drivers/usb/gadget/udc/omap_udc.c
929
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/omap_udc.c
934
is_in = udc->ep0_in;
drivers/usb/gadget/udc/omap_udc.c
941
if (udc->ep0_set_config) {
drivers/usb/gadget/udc/omap_udc.c
945
if (!udc->ep0_reset_config)
drivers/usb/gadget/udc/omap_udc.c
962
udc->ep0_pending = 0;
drivers/usb/gadget/udc/omap_udc.c
971
if (udc->ep0_setup)
drivers/usb/gadget/udc/omap_udc.h
156
struct omap_udc *udc;
drivers/usb/gadget/udc/pxa25x_udc.c
1127
struct pxa25x_udc *udc;
drivers/usb/gadget/udc/pxa25x_udc.c
1129
udc = container_of(_gadget, struct pxa25x_udc, gadget);
drivers/usb/gadget/udc/pxa25x_udc.c
1132
if ((udc_ep0_get_UDCCS(udc) & UDCCS0_DRWF) == 0)
drivers/usb/gadget/udc/pxa25x_udc.c
1134
udc_set_mask_UDCCR(udc, UDCCR_RSM);
drivers/usb/gadget/udc/pxa25x_udc.c
1145
static int pullup(struct pxa25x_udc *udc)
drivers/usb/gadget/udc/pxa25x_udc.c
1147
int is_active = udc->vbus && udc->pullup && !udc->suspended;
drivers/usb/gadget/udc/pxa25x_udc.c
1150
if (!udc->active) {
drivers/usb/gadget/udc/pxa25x_udc.c
1151
udc->active = 1;
drivers/usb/gadget/udc/pxa25x_udc.c
1153
clk_enable(udc->clk);
drivers/usb/gadget/udc/pxa25x_udc.c
1154
udc_enable(udc);
drivers/usb/gadget/udc/pxa25x_udc.c
1157
if (udc->active) {
drivers/usb/gadget/udc/pxa25x_udc.c
1158
if (udc->gadget.speed != USB_SPEED_UNKNOWN) {
drivers/usb/gadget/udc/pxa25x_udc.c
1159
DMSG("disconnect %s\n", udc->driver
drivers/usb/gadget/udc/pxa25x_udc.c
1160
? udc->driver->driver.name
drivers/usb/gadget/udc/pxa25x_udc.c
1162
stop_activity(udc, udc->driver);
drivers/usb/gadget/udc/pxa25x_udc.c
1164
udc_disable(udc);
drivers/usb/gadget/udc/pxa25x_udc.c
1166
clk_disable(udc->clk);
drivers/usb/gadget/udc/pxa25x_udc.c
1167
udc->active = 0;
drivers/usb/gadget/udc/pxa25x_udc.c
1177
struct pxa25x_udc *udc;
drivers/usb/gadget/udc/pxa25x_udc.c
1179
udc = container_of(_gadget, struct pxa25x_udc, gadget);
drivers/usb/gadget/udc/pxa25x_udc.c
1180
udc->vbus = is_active;
drivers/usb/gadget/udc/pxa25x_udc.c
1182
pullup(udc);
drivers/usb/gadget/udc/pxa25x_udc.c
1189
struct pxa25x_udc *udc;
drivers/usb/gadget/udc/pxa25x_udc.c
1191
udc = container_of(_gadget, struct pxa25x_udc, gadget);
drivers/usb/gadget/udc/pxa25x_udc.c
1194
if (!gpio_is_valid(udc->mach->gpio_pullup) && !udc->mach->udc_command)
drivers/usb/gadget/udc/pxa25x_udc.c
1197
udc->pullup = (is_active != 0);
drivers/usb/gadget/udc/pxa25x_udc.c
1198
pullup(udc);
drivers/usb/gadget/udc/pxa25x_udc.c
1208
struct pxa25x_udc *udc;
drivers/usb/gadget/udc/pxa25x_udc.c
1210
udc = container_of(_gadget, struct pxa25x_udc, gadget);
drivers/usb/gadget/udc/pxa25x_udc.c
1212
if (!IS_ERR_OR_NULL(udc->transceiver))
drivers/usb/gadget/udc/pxa25x_udc.c
1213
return usb_phy_set_power(udc->transceiver, mA);
drivers/usb/gadget/udc/pxa25x_udc.c
2439
struct pxa25x_udc *udc = platform_get_drvdata(dev);
drivers/usb/gadget/udc/pxa25x_udc.c
2442
if (!gpio_is_valid(udc->mach->gpio_pullup) && !udc->mach->udc_command)
drivers/usb/gadget/udc/pxa25x_udc.c
2444
udc->suspended = 1;
drivers/usb/gadget/udc/pxa25x_udc.c
2447
pullup(udc);
drivers/usb/gadget/udc/pxa25x_udc.c
2455
struct pxa25x_udc *udc = platform_get_drvdata(dev);
drivers/usb/gadget/udc/pxa25x_udc.c
2458
udc->suspended = 0;
drivers/usb/gadget/udc/pxa25x_udc.c
2460
pullup(udc);
drivers/usb/gadget/udc/pxa27x_udc.c
103
udc->driver ? udc->driver->driver.name : "(none)");
drivers/usb/gadget/udc/pxa27x_udc.c
105
tmp = udc_readl(udc, UDCCR);
drivers/usb/gadget/udc/pxa27x_udc.c
124
udc_readl(udc, UDCICR0), udc_readl(udc, UDCICR1));
drivers/usb/gadget/udc/pxa27x_udc.c
126
udc_readl(udc, UDCISR0), udc_readl(udc, UDCISR1));
drivers/usb/gadget/udc/pxa27x_udc.c
127
seq_printf(s, "udcfnr=%d\n", udc_readl(udc, UDCFNR));
drivers/usb/gadget/udc/pxa27x_udc.c
129
udc->stats.irqs_reset, udc->stats.irqs_suspend,
drivers/usb/gadget/udc/pxa27x_udc.c
130
udc->stats.irqs_resume, udc->stats.irqs_reconfig);
drivers/usb/gadget/udc/pxa27x_udc.c
1320
struct pxa_udc *udc;
drivers/usb/gadget/udc/pxa27x_udc.c
1353
udc = ep->dev;
drivers/usb/gadget/udc/pxa27x_udc.c
1355
if (!udc->driver || udc->gadget.speed == USB_SPEED_UNKNOWN) {
drivers/usb/gadget/udc/pxa27x_udc.c
138
struct pxa_udc *udc = s->private;
drivers/usb/gadget/udc/pxa27x_udc.c
1424
static void dplus_pullup(struct pxa_udc *udc, int on)
drivers/usb/gadget/udc/pxa27x_udc.c
1426
if (udc->gpiod) {
drivers/usb/gadget/udc/pxa27x_udc.c
1427
gpiod_set_value(udc->gpiod, on);
drivers/usb/gadget/udc/pxa27x_udc.c
1428
} else if (udc->udc_command) {
drivers/usb/gadget/udc/pxa27x_udc.c
143
if (!udc->driver)
drivers/usb/gadget/udc/pxa27x_udc.c
1430
udc->udc_command(PXA2XX_UDC_CMD_CONNECT);
drivers/usb/gadget/udc/pxa27x_udc.c
1432
udc->udc_command(PXA2XX_UDC_CMD_DISCONNECT);
drivers/usb/gadget/udc/pxa27x_udc.c
1434
udc->pullup_on = on;
drivers/usb/gadget/udc/pxa27x_udc.c
1443
struct pxa_udc *udc = to_gadget_udc(_gadget);
drivers/usb/gadget/udc/pxa27x_udc.c
1445
return (udc_readl(udc, UDCFNR) & 0x7ff);
drivers/usb/gadget/udc/pxa27x_udc.c
1456
struct pxa_udc *udc = to_gadget_udc(_gadget);
drivers/usb/gadget/udc/pxa27x_udc.c
1459
if ((udc_readl(udc, UDCCR) & UDCCR_DWRE) == 0)
drivers/usb/gadget/udc/pxa27x_udc.c
1461
udc_set_mask_UDCCR(udc, UDCCR_UDR);
drivers/usb/gadget/udc/pxa27x_udc.c
1465
static void udc_enable(struct pxa_udc *udc);
drivers/usb/gadget/udc/pxa27x_udc.c
1466
static void udc_disable(struct pxa_udc *udc);
drivers/usb/gadget/udc/pxa27x_udc.c
148
ep = &udc->pxa_ep[i];
drivers/usb/gadget/udc/pxa27x_udc.c
1480
static int should_enable_udc(struct pxa_udc *udc)
drivers/usb/gadget/udc/pxa27x_udc.c
1484
put_on = ((udc->pullup_on) && (udc->driver));
drivers/usb/gadget/udc/pxa27x_udc.c
1485
put_on &= ((udc->vbus_sensed) || (IS_ERR_OR_NULL(udc->transceiver)));
drivers/usb/gadget/udc/pxa27x_udc.c
1501
static int should_disable_udc(struct pxa_udc *udc)
drivers/usb/gadget/udc/pxa27x_udc.c
1505
put_off = ((!udc->pullup_on) || (!udc->driver));
drivers/usb/gadget/udc/pxa27x_udc.c
1506
put_off |= ((!udc->vbus_sensed) && (!IS_ERR_OR_NULL(udc->transceiver)));
drivers/usb/gadget/udc/pxa27x_udc.c
1521
struct pxa_udc *udc = to_gadget_udc(_gadget);
drivers/usb/gadget/udc/pxa27x_udc.c
1523
if (!udc->gpiod && !udc->udc_command)
drivers/usb/gadget/udc/pxa27x_udc.c
1526
dplus_pullup(udc, is_active);
drivers/usb/gadget/udc/pxa27x_udc.c
1528
if (should_enable_udc(udc))
drivers/usb/gadget/udc/pxa27x_udc.c
1529
udc_enable(udc);
drivers/usb/gadget/udc/pxa27x_udc.c
1530
if (should_disable_udc(udc))
drivers/usb/gadget/udc/pxa27x_udc.c
1531
udc_disable(udc);
drivers/usb/gadget/udc/pxa27x_udc.c
1547
struct pxa_udc *udc = to_gadget_udc(_gadget);
drivers/usb/gadget/udc/pxa27x_udc.c
1549
udc->vbus_sensed = is_active;
drivers/usb/gadget/udc/pxa27x_udc.c
1550
if (should_enable_udc(udc))
drivers/usb/gadget/udc/pxa27x_udc.c
1551
udc_enable(udc);
drivers/usb/gadget/udc/pxa27x_udc.c
1552
if (should_disable_udc(udc))
drivers/usb/gadget/udc/pxa27x_udc.c
1553
udc_disable(udc);
drivers/usb/gadget/udc/pxa27x_udc.c
1572
struct pxa_udc *udc;
drivers/usb/gadget/udc/pxa27x_udc.c
1574
udc = to_gadget_udc(_gadget);
drivers/usb/gadget/udc/pxa27x_udc.c
1575
if (!IS_ERR_OR_NULL(udc->transceiver))
drivers/usb/gadget/udc/pxa27x_udc.c
1576
return usb_phy_set_power(udc->transceiver, mA);
drivers/usb/gadget/udc/pxa27x_udc.c
1633
static void udc_disable(struct pxa_udc *udc)
drivers/usb/gadget/udc/pxa27x_udc.c
1635
if (!udc->enabled)
drivers/usb/gadget/udc/pxa27x_udc.c
1638
udc_writel(udc, UDCICR0, 0);
drivers/usb/gadget/udc/pxa27x_udc.c
1639
udc_writel(udc, UDCICR1, 0);
drivers/usb/gadget/udc/pxa27x_udc.c
1641
udc_clear_mask_UDCCR(udc, UDCCR_UDE);
drivers/usb/gadget/udc/pxa27x_udc.c
1643
ep0_idle(udc);
drivers/usb/gadget/udc/pxa27x_udc.c
1644
udc->gadget.speed = USB_SPEED_UNKNOWN;
drivers/usb/gadget/udc/pxa27x_udc.c
1645
clk_disable(udc->clk);
drivers/usb/gadget/udc/pxa27x_udc.c
1647
udc->enabled = 0;
drivers/usb/gadget/udc/pxa27x_udc.c
1694
static void udc_enable(struct pxa_udc *udc)
drivers/usb/gadget/udc/pxa27x_udc.c
1696
if (udc->enabled)
drivers/usb/gadget/udc/pxa27x_udc.c
1699
clk_enable(udc->clk);
drivers/usb/gadget/udc/pxa27x_udc.c
1700
udc_writel(udc, UDCICR0, 0);
drivers/usb/gadget/udc/pxa27x_udc.c
1701
udc_writel(udc, UDCICR1, 0);
drivers/usb/gadget/udc/pxa27x_udc.c
1702
udc_clear_mask_UDCCR(udc, UDCCR_UDE);
drivers/usb/gadget/udc/pxa27x_udc.c
1704
ep0_idle(udc);
drivers/usb/gadget/udc/pxa27x_udc.c
1705
udc->gadget.speed = USB_SPEED_FULL;
drivers/usb/gadget/udc/pxa27x_udc.c
1706
memset(&udc->stats, 0, sizeof(udc->stats));
drivers/usb/gadget/udc/pxa27x_udc.c
1708
pxa_eps_setup(udc);
drivers/usb/gadget/udc/pxa27x_udc.c
1709
udc_set_mask_UDCCR(udc, UDCCR_UDE);
drivers/usb/gadget/udc/pxa27x_udc.c
171
struct pxa_udc *udc = s->private;
drivers/usb/gadget/udc/pxa27x_udc.c
1710
ep_write_UDCCSR(&udc->pxa_ep[0], UDCCSR0_ACM);
drivers/usb/gadget/udc/pxa27x_udc.c
1712
if (udc_readl(udc, UDCCR) & UDCCR_EMCE)
drivers/usb/gadget/udc/pxa27x_udc.c
1713
dev_err(udc->dev, "Configuration errors, udc disabled\n");
drivers/usb/gadget/udc/pxa27x_udc.c
1721
udc_writel(udc, UDCICR1,
drivers/usb/gadget/udc/pxa27x_udc.c
1726
pio_irq_enable(&udc->pxa_ep[0]);
drivers/usb/gadget/udc/pxa27x_udc.c
1728
udc->enabled = 1;
drivers/usb/gadget/udc/pxa27x_udc.c
1749
struct pxa_udc *udc = to_pxa(g);
drivers/usb/gadget/udc/pxa27x_udc.c
1753
udc->driver = driver;
drivers/usb/gadget/udc/pxa27x_udc.c
1755
if (!IS_ERR_OR_NULL(udc->transceiver)) {
drivers/usb/gadget/udc/pxa27x_udc.c
1756
retval = otg_set_peripheral(udc->transceiver->otg,
drivers/usb/gadget/udc/pxa27x_udc.c
1757
&udc->gadget);
drivers/usb/gadget/udc/pxa27x_udc.c
1759
dev_err(udc->dev, "can't bind to transceiver\n");
drivers/usb/gadget/udc/pxa27x_udc.c
176
if (!udc->driver)
drivers/usb/gadget/udc/pxa27x_udc.c
1764
if (should_enable_udc(udc))
drivers/usb/gadget/udc/pxa27x_udc.c
1765
udc_enable(udc);
drivers/usb/gadget/udc/pxa27x_udc.c
1769
udc->driver = NULL;
drivers/usb/gadget/udc/pxa27x_udc.c
1780
static void stop_activity(struct pxa_udc *udc)
drivers/usb/gadget/udc/pxa27x_udc.c
1784
udc->gadget.speed = USB_SPEED_UNKNOWN;
drivers/usb/gadget/udc/pxa27x_udc.c
1787
pxa_ep_disable(&udc->udc_usb_ep[i].usb_ep);
drivers/usb/gadget/udc/pxa27x_udc.c
179
ep = &udc->pxa_ep[0];
drivers/usb/gadget/udc/pxa27x_udc.c
1798
struct pxa_udc *udc = to_pxa(g);
drivers/usb/gadget/udc/pxa27x_udc.c
1800
stop_activity(udc);
drivers/usb/gadget/udc/pxa27x_udc.c
1801
udc_disable(udc);
drivers/usb/gadget/udc/pxa27x_udc.c
1803
udc->driver = NULL;
drivers/usb/gadget/udc/pxa27x_udc.c
1805
if (!IS_ERR_OR_NULL(udc->transceiver))
drivers/usb/gadget/udc/pxa27x_udc.c
1806
return otg_set_peripheral(udc->transceiver->otg, NULL);
drivers/usb/gadget/udc/pxa27x_udc.c
1815
static void handle_ep0_ctrl_req(struct pxa_udc *udc,
drivers/usb/gadget/udc/pxa27x_udc.c
1818
struct pxa_ep *ep = &udc->pxa_ep[0];
drivers/usb/gadget/udc/pxa27x_udc.c
1860
set_ep0state(udc, IN_DATA_STAGE);
drivers/usb/gadget/udc/pxa27x_udc.c
1862
set_ep0state(udc, OUT_DATA_STAGE);
drivers/usb/gadget/udc/pxa27x_udc.c
1868
i = udc->driver->setup(&udc->gadget, &u.r);
drivers/usb/gadget/udc/pxa27x_udc.c
1879
set_ep0state(udc, STALL);
drivers/usb/gadget/udc/pxa27x_udc.c
191
ep = &udc->pxa_ep[i];
drivers/usb/gadget/udc/pxa27x_udc.c
192
tmp = i? udc_ep_readl(ep, UDCCR) : udc_readl(udc, UDCCR);
drivers/usb/gadget/udc/pxa27x_udc.c
1931
static void handle_ep0(struct pxa_udc *udc, int fifo_irq, int opc_irq)
drivers/usb/gadget/udc/pxa27x_udc.c
1934
struct pxa_ep *ep = &udc->pxa_ep[0];
drivers/usb/gadget/udc/pxa27x_udc.c
1943
EP0_STNAME(udc), req, udccsr0, udc_ep_readl(ep, UDCBCR),
drivers/usb/gadget/udc/pxa27x_udc.c
1950
ep0_idle(udc);
drivers/usb/gadget/udc/pxa27x_udc.c
1955
set_ep0state(udc, SETUP_STAGE);
drivers/usb/gadget/udc/pxa27x_udc.c
1958
switch (udc->ep0state) {
drivers/usb/gadget/udc/pxa27x_udc.c
1970
handle_ep0_ctrl_req(udc, req);
drivers/usb/gadget/udc/pxa27x_udc.c
1996
ep0_idle(udc);
drivers/usb/gadget/udc/pxa27x_udc.c
2002
ep0_idle(udc);
drivers/usb/gadget/udc/pxa27x_udc.c
206
static void pxa_init_debugfs(struct pxa_udc *udc)
drivers/usb/gadget/udc/pxa27x_udc.c
2078
static void pxa27x_change_configuration(struct pxa_udc *udc, int config)
drivers/usb/gadget/udc/pxa27x_udc.c
2082
dev_dbg(udc->dev, "config=%d\n", config);
drivers/usb/gadget/udc/pxa27x_udc.c
2084
udc->config = config;
drivers/usb/gadget/udc/pxa27x_udc.c
2085
udc->last_interface = 0;
drivers/usb/gadget/udc/pxa27x_udc.c
2086
udc->last_alternate = 0;
drivers/usb/gadget/udc/pxa27x_udc.c
2094
set_ep0state(udc, WAIT_ACK_SET_CONF_INTERF);
drivers/usb/gadget/udc/pxa27x_udc.c
2095
udc->driver->setup(&udc->gadget, &req);
drivers/usb/gadget/udc/pxa27x_udc.c
2096
ep_write_UDCCSR(&udc->pxa_ep[0], UDCCSR0_AREN);
drivers/usb/gadget/udc/pxa27x_udc.c
210
root = debugfs_create_dir(udc->gadget.name, usb_debug_root);
drivers/usb/gadget/udc/pxa27x_udc.c
2108
static void pxa27x_change_interface(struct pxa_udc *udc, int iface, int alt)
drivers/usb/gadget/udc/pxa27x_udc.c
211
debugfs_create_file("udcstate", 0400, root, udc, &state_dbg_fops);
drivers/usb/gadget/udc/pxa27x_udc.c
2112
dev_dbg(udc->dev, "interface=%d, alternate setting=%d\n", iface, alt);
drivers/usb/gadget/udc/pxa27x_udc.c
2114
udc->last_interface = iface;
drivers/usb/gadget/udc/pxa27x_udc.c
2115
udc->last_alternate = alt;
drivers/usb/gadget/udc/pxa27x_udc.c
212
debugfs_create_file("queues", 0400, root, udc, &queues_dbg_fops);
drivers/usb/gadget/udc/pxa27x_udc.c
2123
set_ep0state(udc, WAIT_ACK_SET_CONF_INTERF);
drivers/usb/gadget/udc/pxa27x_udc.c
2124
udc->driver->setup(&udc->gadget, &req);
drivers/usb/gadget/udc/pxa27x_udc.c
2125
ep_write_UDCCSR(&udc->pxa_ep[0], UDCCSR0_AREN);
drivers/usb/gadget/udc/pxa27x_udc.c
213
debugfs_create_file("epstate", 0400, root, udc, &eps_dbg_fops);
drivers/usb/gadget/udc/pxa27x_udc.c
2135
static void irq_handle_data(int irq, struct pxa_udc *udc)
drivers/usb/gadget/udc/pxa27x_udc.c
2139
u32 udcisr0 = udc_readl(udc, UDCISR0) & UDCCISR0_EP_MASK;
drivers/usb/gadget/udc/pxa27x_udc.c
2140
u32 udcisr1 = udc_readl(udc, UDCISR1) & UDCCISR1_EP_MASK;
drivers/usb/gadget/udc/pxa27x_udc.c
2143
udc->pxa_ep[0].stats.irqs++;
drivers/usb/gadget/udc/pxa27x_udc.c
2144
udc_writel(udc, UDCISR0, UDCISR_INT(0, UDCISR_INT_MASK));
drivers/usb/gadget/udc/pxa27x_udc.c
2145
handle_ep0(udc, !!(udcisr0 & UDCICR_FIFOERR),
drivers/usb/gadget/udc/pxa27x_udc.c
2154
udc_writel(udc, UDCISR0, UDCISR_INT(i, UDCISR_INT_MASK));
drivers/usb/gadget/udc/pxa27x_udc.c
2156
WARN_ON(i >= ARRAY_SIZE(udc->pxa_ep));
drivers/usb/gadget/udc/pxa27x_udc.c
2157
if (i < ARRAY_SIZE(udc->pxa_ep)) {
drivers/usb/gadget/udc/pxa27x_udc.c
2158
ep = &udc->pxa_ep[i];
drivers/usb/gadget/udc/pxa27x_udc.c
216
static void pxa_cleanup_debugfs(struct pxa_udc *udc)
drivers/usb/gadget/udc/pxa27x_udc.c
2165
udc_writel(udc, UDCISR1, UDCISR_INT(i - 16, UDCISR_INT_MASK));
drivers/usb/gadget/udc/pxa27x_udc.c
2169
WARN_ON(i >= ARRAY_SIZE(udc->pxa_ep));
drivers/usb/gadget/udc/pxa27x_udc.c
2170
if (i < ARRAY_SIZE(udc->pxa_ep)) {
drivers/usb/gadget/udc/pxa27x_udc.c
2171
ep = &udc->pxa_ep[i];
drivers/usb/gadget/udc/pxa27x_udc.c
218
debugfs_lookup_and_remove(udc->gadget.name, usb_debug_root);
drivers/usb/gadget/udc/pxa27x_udc.c
2183
static void irq_udc_suspend(struct pxa_udc *udc)
drivers/usb/gadget/udc/pxa27x_udc.c
2185
udc_writel(udc, UDCISR1, UDCISR1_IRSU);
drivers/usb/gadget/udc/pxa27x_udc.c
2186
udc->stats.irqs_suspend++;
drivers/usb/gadget/udc/pxa27x_udc.c
2188
if (udc->gadget.speed != USB_SPEED_UNKNOWN
drivers/usb/gadget/udc/pxa27x_udc.c
2189
&& udc->driver && udc->driver->suspend)
drivers/usb/gadget/udc/pxa27x_udc.c
2190
udc->driver->suspend(&udc->gadget);
drivers/usb/gadget/udc/pxa27x_udc.c
2191
ep0_idle(udc);
drivers/usb/gadget/udc/pxa27x_udc.c
2198
static void irq_udc_resume(struct pxa_udc *udc)
drivers/usb/gadget/udc/pxa27x_udc.c
2200
udc_writel(udc, UDCISR1, UDCISR1_IRRU);
drivers/usb/gadget/udc/pxa27x_udc.c
2201
udc->stats.irqs_resume++;
drivers/usb/gadget/udc/pxa27x_udc.c
2203
if (udc->gadget.speed != USB_SPEED_UNKNOWN
drivers/usb/gadget/udc/pxa27x_udc.c
2204
&& udc->driver && udc->driver->resume)
drivers/usb/gadget/udc/pxa27x_udc.c
2205
udc->driver->resume(&udc->gadget);
drivers/usb/gadget/udc/pxa27x_udc.c
2212
static void irq_udc_reconfig(struct pxa_udc *udc)
drivers/usb/gadget/udc/pxa27x_udc.c
2215
u32 udccr = udc_readl(udc, UDCCR);
drivers/usb/gadget/udc/pxa27x_udc.c
2217
udc_writel(udc, UDCISR1, UDCISR1_IRCC);
drivers/usb/gadget/udc/pxa27x_udc.c
2218
udc->stats.irqs_reconfig++;
drivers/usb/gadget/udc/pxa27x_udc.c
222
static inline void pxa_init_debugfs(struct pxa_udc *udc)
drivers/usb/gadget/udc/pxa27x_udc.c
2221
config_change = (config != udc->config);
drivers/usb/gadget/udc/pxa27x_udc.c
2222
pxa27x_change_configuration(udc, config);
drivers/usb/gadget/udc/pxa27x_udc.c
2226
pxa27x_change_interface(udc, interface, alternate);
drivers/usb/gadget/udc/pxa27x_udc.c
2229
update_pxa_ep_matches(udc);
drivers/usb/gadget/udc/pxa27x_udc.c
2230
udc_set_mask_UDCCR(udc, UDCCR_SMAC);
drivers/usb/gadget/udc/pxa27x_udc.c
2237
static void irq_udc_reset(struct pxa_udc *udc)
drivers/usb/gadget/udc/pxa27x_udc.c
2239
u32 udccr = udc_readl(udc, UDCCR);
drivers/usb/gadget/udc/pxa27x_udc.c
2240
struct pxa_ep *ep = &udc->pxa_ep[0];
drivers/usb/gadget/udc/pxa27x_udc.c
2242
dev_info(udc->dev, "USB reset\n");
drivers/usb/gadget/udc/pxa27x_udc.c
2243
udc_writel(udc, UDCISR1, UDCISR1_IRRS);
drivers/usb/gadget/udc/pxa27x_udc.c
2244
udc->stats.irqs_reset++;
drivers/usb/gadget/udc/pxa27x_udc.c
2247
dev_dbg(udc->dev, "USB reset start\n");
drivers/usb/gadget/udc/pxa27x_udc.c
2248
stop_activity(udc);
drivers/usb/gadget/udc/pxa27x_udc.c
2250
udc->gadget.speed = USB_SPEED_FULL;
drivers/usb/gadget/udc/pxa27x_udc.c
2251
memset(&udc->stats, 0, sizeof udc->stats);
drivers/usb/gadget/udc/pxa27x_udc.c
2255
ep0_idle(udc);
drivers/usb/gadget/udc/pxa27x_udc.c
226
static inline void pxa_cleanup_debugfs(struct pxa_udc *udc)
drivers/usb/gadget/udc/pxa27x_udc.c
2267
struct pxa_udc *udc = _dev;
drivers/usb/gadget/udc/pxa27x_udc.c
2268
u32 udcisr0 = udc_readl(udc, UDCISR0);
drivers/usb/gadget/udc/pxa27x_udc.c
2269
u32 udcisr1 = udc_readl(udc, UDCISR1);
drivers/usb/gadget/udc/pxa27x_udc.c
2270
u32 udccr = udc_readl(udc, UDCCR);
drivers/usb/gadget/udc/pxa27x_udc.c
2273
dev_vdbg(udc->dev, "Interrupt, UDCISR0:0x%08x, UDCISR1:0x%08x, "
drivers/usb/gadget/udc/pxa27x_udc.c
2278
irq_udc_suspend(udc);
drivers/usb/gadget/udc/pxa27x_udc.c
2280
irq_udc_resume(udc);
drivers/usb/gadget/udc/pxa27x_udc.c
2282
irq_udc_reconfig(udc);
drivers/usb/gadget/udc/pxa27x_udc.c
2284
irq_udc_reset(udc);
drivers/usb/gadget/udc/pxa27x_udc.c
2287
irq_handle_data(irq, udc);
drivers/usb/gadget/udc/pxa27x_udc.c
2356
struct pxa_udc *udc = &memory;
drivers/usb/gadget/udc/pxa27x_udc.c
2368
udc->gpiod = gpio_to_desc(mach->gpio_pullup);
drivers/usb/gadget/udc/pxa27x_udc.c
2370
if (mach->gpio_pullup_inverted ^ gpiod_is_active_low(udc->gpiod))
drivers/usb/gadget/udc/pxa27x_udc.c
2371
gpiod_toggle_active_low(udc->gpiod);
drivers/usb/gadget/udc/pxa27x_udc.c
2373
udc->udc_command = mach->udc_command;
drivers/usb/gadget/udc/pxa27x_udc.c
2375
udc->gpiod = devm_gpiod_get(&pdev->dev, NULL, GPIOD_ASIS);
drivers/usb/gadget/udc/pxa27x_udc.c
2378
udc->regs = devm_platform_ioremap_resource(pdev, 0);
drivers/usb/gadget/udc/pxa27x_udc.c
2379
if (IS_ERR(udc->regs))
drivers/usb/gadget/udc/pxa27x_udc.c
2380
return PTR_ERR(udc->regs);
drivers/usb/gadget/udc/pxa27x_udc.c
2381
udc->irq = platform_get_irq(pdev, 0);
drivers/usb/gadget/udc/pxa27x_udc.c
2382
if (udc->irq < 0)
drivers/usb/gadget/udc/pxa27x_udc.c
2383
return udc->irq;
drivers/usb/gadget/udc/pxa27x_udc.c
2385
udc->dev = &pdev->dev;
drivers/usb/gadget/udc/pxa27x_udc.c
2387
udc->transceiver =
drivers/usb/gadget/udc/pxa27x_udc.c
2388
devm_usb_get_phy_by_phandle(udc->dev, "phys", 0);
drivers/usb/gadget/udc/pxa27x_udc.c
2389
if (IS_ERR(udc->transceiver))
drivers/usb/gadget/udc/pxa27x_udc.c
2390
return PTR_ERR(udc->transceiver);
drivers/usb/gadget/udc/pxa27x_udc.c
2392
udc->transceiver = usb_get_phy(USB_PHY_TYPE_USB2);
drivers/usb/gadget/udc/pxa27x_udc.c
2395
if (IS_ERR(udc->gpiod)) {
drivers/usb/gadget/udc/pxa27x_udc.c
2397
PTR_ERR(udc->gpiod));
drivers/usb/gadget/udc/pxa27x_udc.c
2398
return PTR_ERR(udc->gpiod);
drivers/usb/gadget/udc/pxa27x_udc.c
2400
if (udc->gpiod)
drivers/usb/gadget/udc/pxa27x_udc.c
2401
gpiod_direction_output(udc->gpiod, 0);
drivers/usb/gadget/udc/pxa27x_udc.c
2403
udc->clk = devm_clk_get(&pdev->dev, NULL);
drivers/usb/gadget/udc/pxa27x_udc.c
2404
if (IS_ERR(udc->clk))
drivers/usb/gadget/udc/pxa27x_udc.c
2405
return PTR_ERR(udc->clk);
drivers/usb/gadget/udc/pxa27x_udc.c
2407
retval = clk_prepare(udc->clk);
drivers/usb/gadget/udc/pxa27x_udc.c
2411
udc->vbus_sensed = 0;
drivers/usb/gadget/udc/pxa27x_udc.c
2413
the_controller = udc;
drivers/usb/gadget/udc/pxa27x_udc.c
2414
platform_set_drvdata(pdev, udc);
drivers/usb/gadget/udc/pxa27x_udc.c
2415
udc_init_data(udc);
drivers/usb/gadget/udc/pxa27x_udc.c
2418
retval = devm_request_irq(&pdev->dev, udc->irq, pxa_udc_irq,
drivers/usb/gadget/udc/pxa27x_udc.c
2419
IRQF_SHARED, driver_name, udc);
drivers/usb/gadget/udc/pxa27x_udc.c
2421
dev_err(udc->dev, "%s: can't get irq %i, err %d\n",
drivers/usb/gadget/udc/pxa27x_udc.c
2422
driver_name, udc->irq, retval);
drivers/usb/gadget/udc/pxa27x_udc.c
2426
if (!IS_ERR_OR_NULL(udc->transceiver))
drivers/usb/gadget/udc/pxa27x_udc.c
2427
usb_register_notifier(udc->transceiver, &pxa27x_udc_phy);
drivers/usb/gadget/udc/pxa27x_udc.c
2428
retval = usb_add_gadget_udc(&pdev->dev, &udc->gadget);
drivers/usb/gadget/udc/pxa27x_udc.c
2432
pxa_init_debugfs(udc);
drivers/usb/gadget/udc/pxa27x_udc.c
2433
if (should_enable_udc(udc))
drivers/usb/gadget/udc/pxa27x_udc.c
2434
udc_enable(udc);
drivers/usb/gadget/udc/pxa27x_udc.c
2438
if (!IS_ERR_OR_NULL(udc->transceiver))
drivers/usb/gadget/udc/pxa27x_udc.c
2439
usb_unregister_notifier(udc->transceiver, &pxa27x_udc_phy);
drivers/usb/gadget/udc/pxa27x_udc.c
2441
clk_unprepare(udc->clk);
drivers/usb/gadget/udc/pxa27x_udc.c
2451
struct pxa_udc *udc = platform_get_drvdata(_dev);
drivers/usb/gadget/udc/pxa27x_udc.c
2453
usb_del_gadget_udc(&udc->gadget);
drivers/usb/gadget/udc/pxa27x_udc.c
2454
pxa_cleanup_debugfs(udc);
drivers/usb/gadget/udc/pxa27x_udc.c
2456
if (!IS_ERR_OR_NULL(udc->transceiver)) {
drivers/usb/gadget/udc/pxa27x_udc.c
2457
usb_unregister_notifier(udc->transceiver, &pxa27x_udc_phy);
drivers/usb/gadget/udc/pxa27x_udc.c
2458
usb_put_phy(udc->transceiver);
drivers/usb/gadget/udc/pxa27x_udc.c
2461
udc->transceiver = NULL;
drivers/usb/gadget/udc/pxa27x_udc.c
2463
clk_unprepare(udc->clk);
drivers/usb/gadget/udc/pxa27x_udc.c
2468
struct pxa_udc *udc = platform_get_drvdata(_dev);
drivers/usb/gadget/udc/pxa27x_udc.c
2470
if (udc_readl(udc, UDCCR) & UDCCR_UDE)
drivers/usb/gadget/udc/pxa27x_udc.c
2471
udc_disable(udc);
drivers/usb/gadget/udc/pxa27x_udc.c
2485
struct pxa_udc *udc = platform_get_drvdata(_dev);
drivers/usb/gadget/udc/pxa27x_udc.c
2488
ep = &udc->pxa_ep[0];
drivers/usb/gadget/udc/pxa27x_udc.c
2489
udc->udccsr0 = udc_ep_readl(ep, UDCCSR);
drivers/usb/gadget/udc/pxa27x_udc.c
2491
udc_disable(udc);
drivers/usb/gadget/udc/pxa27x_udc.c
2492
udc->pullup_resume = udc->pullup_on;
drivers/usb/gadget/udc/pxa27x_udc.c
2493
dplus_pullup(udc, 0);
drivers/usb/gadget/udc/pxa27x_udc.c
2495
if (udc->driver)
drivers/usb/gadget/udc/pxa27x_udc.c
2496
udc->driver->disconnect(&udc->gadget);
drivers/usb/gadget/udc/pxa27x_udc.c
2510
struct pxa_udc *udc = platform_get_drvdata(_dev);
drivers/usb/gadget/udc/pxa27x_udc.c
2513
ep = &udc->pxa_ep[0];
drivers/usb/gadget/udc/pxa27x_udc.c
2514
udc_ep_writel(ep, UDCCSR, udc->udccsr0 & (UDCCSR0_FST | UDCCSR0_DME));
drivers/usb/gadget/udc/pxa27x_udc.c
2516
dplus_pullup(udc, udc->pullup_resume);
drivers/usb/gadget/udc/pxa27x_udc.c
2517
if (should_enable_udc(udc))
drivers/usb/gadget/udc/pxa27x_udc.c
2518
udc_enable(udc);
drivers/usb/gadget/udc/pxa27x_udc.c
281
static struct pxa_ep *find_pxa_ep(struct pxa_udc *udc,
drivers/usb/gadget/udc/pxa27x_udc.c
286
int cfg = udc->config;
drivers/usb/gadget/udc/pxa27x_udc.c
287
int iface = udc->last_interface;
drivers/usb/gadget/udc/pxa27x_udc.c
288
int alt = udc->last_alternate;
drivers/usb/gadget/udc/pxa27x_udc.c
290
if (udc_usb_ep == &udc->udc_usb_ep[0])
drivers/usb/gadget/udc/pxa27x_udc.c
291
return &udc->pxa_ep[0];
drivers/usb/gadget/udc/pxa27x_udc.c
294
ep = &udc->pxa_ep[i];
drivers/usb/gadget/udc/pxa27x_udc.c
311
static void update_pxa_ep_matches(struct pxa_udc *udc)
drivers/usb/gadget/udc/pxa27x_udc.c
317
udc_usb_ep = &udc->udc_usb_ep[i];
drivers/usb/gadget/udc/pxa27x_udc.c
319
udc_usb_ep->pxa_ep = find_pxa_ep(udc, udc_usb_ep);
drivers/usb/gadget/udc/pxa27x_udc.c
329
struct pxa_udc *udc = ep->dev;
drivers/usb/gadget/udc/pxa27x_udc.c
331
u32 udcicr0 = udc_readl(udc, UDCICR0);
drivers/usb/gadget/udc/pxa27x_udc.c
332
u32 udcicr1 = udc_readl(udc, UDCICR1);
drivers/usb/gadget/udc/pxa27x_udc.c
335
udc_writel(udc, UDCICR0, udcicr0 | (3 << (index * 2)));
drivers/usb/gadget/udc/pxa27x_udc.c
337
udc_writel(udc, UDCICR1, udcicr1 | (3 << ((index - 16) * 2)));
drivers/usb/gadget/udc/pxa27x_udc.c
346
struct pxa_udc *udc = ep->dev;
drivers/usb/gadget/udc/pxa27x_udc.c
348
u32 udcicr0 = udc_readl(udc, UDCICR0);
drivers/usb/gadget/udc/pxa27x_udc.c
349
u32 udcicr1 = udc_readl(udc, UDCICR1);
drivers/usb/gadget/udc/pxa27x_udc.c
352
udc_writel(udc, UDCICR0, udcicr0 & ~(3 << (index * 2)));
drivers/usb/gadget/udc/pxa27x_udc.c
354
udc_writel(udc, UDCICR1, udcicr1 & ~(3 << ((index - 16) * 2)));
drivers/usb/gadget/udc/pxa27x_udc.c
364
static inline void udc_set_mask_UDCCR(struct pxa_udc *udc, int mask)
drivers/usb/gadget/udc/pxa27x_udc.c
366
u32 udccr = udc_readl(udc, UDCCR);
drivers/usb/gadget/udc/pxa27x_udc.c
367
udc_writel(udc, UDCCR,
drivers/usb/gadget/udc/pxa27x_udc.c
378
static inline void udc_clear_mask_UDCCR(struct pxa_udc *udc, int mask)
drivers/usb/gadget/udc/pxa27x_udc.c
380
u32 udccr = udc_readl(udc, UDCCR);
drivers/usb/gadget/udc/pxa27x_udc.c
381
udc_writel(udc, UDCCR,
drivers/usb/gadget/udc/pxa27x_udc.c
476
static void set_ep0state(struct pxa_udc *udc, int state)
drivers/usb/gadget/udc/pxa27x_udc.c
478
struct pxa_ep *ep = &udc->pxa_ep[0];
drivers/usb/gadget/udc/pxa27x_udc.c
479
char *old_stname = EP0_STNAME(udc);
drivers/usb/gadget/udc/pxa27x_udc.c
481
udc->ep0state = state;
drivers/usb/gadget/udc/pxa27x_udc.c
483
EP0_STNAME(udc), udc_ep_readl(ep, UDCCSR),
drivers/usb/gadget/udc/pxa27x_udc.c
92
struct pxa_udc *udc = s->private;
drivers/usb/gadget/udc/pxa27x_udc.c
95
if (!udc->driver)
drivers/usb/gadget/udc/pxa27x_udc.h
190
#define udc_writel(udc, reg, value) \
drivers/usb/gadget/udc/pxa27x_udc.h
191
__raw_writel((value), (udc)->regs + (reg))
drivers/usb/gadget/udc/pxa27x_udc.h
404
#define EP0_STNAME(udc) ep0_state_name[(udc)->ep0state]
drivers/usb/gadget/udc/renesas_usbf.c
1018
dev_dbg(epn->udc->dev, "ep%u recv %u/%u\n", epn->id,
drivers/usb/gadget/udc/renesas_usbf.c
1022
dev_dbg(epn->udc->dev, "ep%u req.status=%d\n", epn->id,
drivers/usb/gadget/udc/renesas_usbf.c
1029
dev_dbg(epn->udc->dev, "ep%u short packet\n", epn->id);
drivers/usb/gadget/udc/renesas_usbf.c
1044
dev_dbg(epn->udc->dev, "ep%u null packet\n", epn->id);
drivers/usb/gadget/udc/renesas_usbf.c
1118
usbf_reg_bitclr(epn->udc, USBF_REG_AHBBINTEN,
drivers/usb/gadget/udc/renesas_usbf.c
1122
usbf_reg_writel(epn->udc, USBF_REG_AHBBINT,
drivers/usb/gadget/udc/renesas_usbf.c
1152
usbf_reg_bitset(epn->udc, USBF_REG_AHBBINTEN,
drivers/usb/gadget/udc/renesas_usbf.c
1169
dev_err(epn->udc->dev, "ep%u wait bridge timed out\n",
drivers/usb/gadget/udc/renesas_usbf.c
1196
dev_dbg(epn->udc->dev, "ep%u buf unaligned -> fallback pio\n",
drivers/usb/gadget/udc/renesas_usbf.c
1205
dev_dbg(epn->udc->dev, "ep%u null packet\n", epn->id);
drivers/usb/gadget/udc/renesas_usbf.c
1216
dev_dbg(epn->udc->dev, "ep%u OUT_INT not set -> spurious\n",
drivers/usb/gadget/udc/renesas_usbf.c
1224
dev_dbg(epn->udc->dev, "ep%u recv = 0 -> spurious\n",
drivers/usb/gadget/udc/renesas_usbf.c
1231
dev_dbg(epn->udc->dev, "ep%u recv %u, left %u, mpkt %u\n", epn->id,
drivers/usb/gadget/udc/renesas_usbf.c
1235
dev_err(epn->udc->dev, "ep%u overflow (%u/%u)\n",
drivers/usb/gadget/udc/renesas_usbf.c
1243
dev_dbg(epn->udc->dev, "ep%u short packet\n", epn->id);
drivers/usb/gadget/udc/renesas_usbf.c
1249
dev_dbg(epn->udc->dev, "ep%u recv done %u/%u\n",
drivers/usb/gadget/udc/renesas_usbf.c
1256
ret = usb_gadget_map_request(&epn->udc->gadget, &req->req, 0);
drivers/usb/gadget/udc/renesas_usbf.c
1258
dev_err(epn->udc->dev, "map request failed (%d)\n",
drivers/usb/gadget/udc/renesas_usbf.c
1269
dev_dbg(epn->udc->dev, "ep%u dma short xfer %zu\n", epn->id,
drivers/usb/gadget/udc/renesas_usbf.c
1276
ret = usb_gadget_map_request(&epn->udc->gadget, &req->req, 0);
drivers/usb/gadget/udc/renesas_usbf.c
1278
dev_err(epn->udc->dev, "map request failed (%d)\n",
drivers/usb/gadget/udc/renesas_usbf.c
1295
dev_dbg(epn->udc->dev, "ep%u dma xfer %zu (%u)\n", epn->id,
drivers/usb/gadget/udc/renesas_usbf.c
1303
dev_dbg(epn->udc->dev, "ep%u dma short not done\n", epn->id);
drivers/usb/gadget/udc/renesas_usbf.c
1306
dev_dbg(epn->udc->dev, "ep%u dma short done\n", epn->id);
drivers/usb/gadget/udc/renesas_usbf.c
1310
usb_gadget_unmap_request(&epn->udc->gadget, &req->req, 0);
drivers/usb/gadget/udc/renesas_usbf.c
1320
dev_dbg(epn->udc->dev, "ep%u recv residue %u\n", epn->id,
drivers/usb/gadget/udc/renesas_usbf.c
1327
dev_dbg(epn->udc->dev, "ep%u recv done %u/%u\n", epn->id,
drivers/usb/gadget/udc/renesas_usbf.c
1335
dev_dbg(epn->udc->dev, "ep%u dma not done\n", epn->id);
drivers/usb/gadget/udc/renesas_usbf.c
1338
dev_dbg(epn->udc->dev, "ep%u dma done\n", epn->id);
drivers/usb/gadget/udc/renesas_usbf.c
1345
dev_dbg(epn->udc->dev, "ep%u dma xfer done %u\n", epn->id,
drivers/usb/gadget/udc/renesas_usbf.c
1352
dev_dbg(epn->udc->dev, "ep%u dma stopped by null pckt\n",
drivers/usb/gadget/udc/renesas_usbf.c
1354
usb_gadget_unmap_request(&epn->udc->gadget,
drivers/usb/gadget/udc/renesas_usbf.c
1367
dev_dbg(epn->udc->dev, "ep%u recv done %u/%u\n",
drivers/usb/gadget/udc/renesas_usbf.c
1377
dev_err(epn->udc->dev,
drivers/usb/gadget/udc/renesas_usbf.c
1381
usb_gadget_unmap_request(&epn->udc->gadget,
drivers/usb/gadget/udc/renesas_usbf.c
1395
dev_dbg(epn->udc->dev, "ep%u dma short xfer %zu\n",
drivers/usb/gadget/udc/renesas_usbf.c
1402
usb_gadget_unmap_request(&epn->udc->gadget, &req->req, 0);
drivers/usb/gadget/udc/renesas_usbf.c
1407
dev_dbg(epn->udc->dev, "ep%u recv residue %u\n",
drivers/usb/gadget/udc/renesas_usbf.c
1414
dev_dbg(epn->udc->dev, "ep%u recv done %u/%u\n", epn->id,
drivers/usb/gadget/udc/renesas_usbf.c
1431
dev_dbg(epn->udc->dev, "ep%u bridge transfers done\n", epn->id);
drivers/usb/gadget/udc/renesas_usbf.c
1438
usb_gadget_unmap_request(&epn->udc->gadget, &req->req, 0);
drivers/usb/gadget/udc/renesas_usbf.c
1447
dev_dbg(epn->udc->dev, "ep%u recv done %u/%u\n", epn->id,
drivers/usb/gadget/udc/renesas_usbf.c
1451
dev_dbg(epn->udc->dev, "ep%u recv done %u/%u, wait more data\n",
drivers/usb/gadget/udc/renesas_usbf.c
1478
dev_dbg(epn->udc->dev, "ep%u %s dma abort\n", epn->id,
drivers/usb/gadget/udc/renesas_usbf.c
1485
usb_gadget_unmap_request(&epn->udc->gadget, &req->req,
drivers/usb/gadget/udc/renesas_usbf.c
1505
usbf_reg_writel(epn->udc, USBF_REG_AHBBINT, USBF_SYS_DMA_ENDINT_EPN(epn->id));
drivers/usb/gadget/udc/renesas_usbf.c
1508
usbf_reg_bitset(epn->udc, USBF_REG_AHBBINTEN,
drivers/usb/gadget/udc/renesas_usbf.c
1521
dev_dbg(epn->udc->dev, "ep%u %s fifo flush\n", epn->id,
drivers/usb/gadget/udc/renesas_usbf.c
1534
dev_err(epn->udc->dev, "ep%u flush fifo timed out\n", epn->id);
drivers/usb/gadget/udc/renesas_usbf.c
1549
dev_dbg(ep->udc->dev, "ep%u %s req done length %u/%u, status=%d\n", ep->id,
drivers/usb/gadget/udc/renesas_usbf.c
1556
spin_unlock(&ep->udc->lock);
drivers/usb/gadget/udc/renesas_usbf.c
1558
spin_lock(&ep->udc->lock);
drivers/usb/gadget/udc/renesas_usbf.c
1565
dev_dbg(ep->udc->dev, "ep%u %s nuke status %d\n", ep->id,
drivers/usb/gadget/udc/renesas_usbf.c
1612
dev_err(epn->udc->dev,
drivers/usb/gadget/udc/renesas_usbf.c
1666
dev_err(ep->udc->dev,
drivers/usb/gadget/udc/renesas_usbf.c
1744
dev_dbg(ep->udc->dev, "ep%u %s %s\n", ep->id,
drivers/usb/gadget/udc/renesas_usbf.c
1793
ep0->udc->ep0state = EP0_IDLE;
drivers/usb/gadget/udc/renesas_usbf.c
1797
usbf_reg_bitset(ep0->udc, USBF_REG_USB_INT_ENA, USBF_USB_EPN_EN(0));
drivers/usb/gadget/udc/renesas_usbf.c
1832
struct usbf_udc *udc = ep->udc;
drivers/usb/gadget/udc/renesas_usbf.c
1842
dev_dbg(ep->udc->dev, "ep%u %s mpkts %d\n", ep->id,
drivers/usb/gadget/udc/renesas_usbf.c
1846
spin_lock_irqsave(&ep->udc->lock, flags);
drivers/usb/gadget/udc/renesas_usbf.c
1857
usbf_reg_bitset(udc, USBF_REG_USB_INT_ENA, USBF_USB_EPN_EN(ep->id));
drivers/usb/gadget/udc/renesas_usbf.c
1862
usbf_reg_bitset(udc, USBF_REG_AHBBINTEN,
drivers/usb/gadget/udc/renesas_usbf.c
1868
spin_unlock_irqrestore(&ep->udc->lock, flags);
drivers/usb/gadget/udc/renesas_usbf.c
1889
struct usbf_udc *udc = ep->udc;
drivers/usb/gadget/udc/renesas_usbf.c
1896
dev_dbg(ep->udc->dev, "ep%u %s mpkts %d\n", ep->id,
drivers/usb/gadget/udc/renesas_usbf.c
1899
spin_lock_irqsave(&ep->udc->lock, flags);
drivers/usb/gadget/udc/renesas_usbf.c
1903
usbf_reg_bitclr(udc, USBF_REG_AHBBINTEN,
drivers/usb/gadget/udc/renesas_usbf.c
1908
usbf_reg_bitclr(udc, USBF_REG_USB_INT_ENA, USBF_USB_EPN_EN(ep->id));
drivers/usb/gadget/udc/renesas_usbf.c
1911
spin_unlock_irqrestore(&ep->udc->lock, flags);
drivers/usb/gadget/udc/renesas_usbf.c
1927
if (ep0->udc->ep0state == EP0_IN_STATUS_START_PHASE)
drivers/usb/gadget/udc/renesas_usbf.c
1933
if (ep0->udc->ep0state == EP0_IN_STATUS_PHASE) {
drivers/usb/gadget/udc/renesas_usbf.c
1935
dev_err(ep0->udc->dev,
drivers/usb/gadget/udc/renesas_usbf.c
1945
dev_err(ep0->udc->dev,
drivers/usb/gadget/udc/renesas_usbf.c
1964
dev_err(ep->udc->dev, "ep%u request queue while disable\n",
drivers/usb/gadget/udc/renesas_usbf.c
1989
struct usbf_udc *udc = ep->udc;
drivers/usb/gadget/udc/renesas_usbf.c
1996
if (!udc || !udc->driver)
drivers/usb/gadget/udc/renesas_usbf.c
1999
dev_dbg(ep->udc->dev, "ep%u %s req queue length %u, zero %u, short_not_ok %u\n",
drivers/usb/gadget/udc/renesas_usbf.c
2003
spin_lock_irqsave(&ep->udc->lock, flags);
drivers/usb/gadget/udc/renesas_usbf.c
2008
spin_unlock_irqrestore(&ep->udc->lock, flags);
drivers/usb/gadget/udc/renesas_usbf.c
2021
spin_lock_irqsave(&ep->udc->lock, flags);
drivers/usb/gadget/udc/renesas_usbf.c
2023
dev_dbg(ep->udc->dev, "ep%u %s req dequeue length %u/%u\n",
drivers/usb/gadget/udc/renesas_usbf.c
2059
ep->udc->ep0state = EP0_IDLE;
drivers/usb/gadget/udc/renesas_usbf.c
2072
spin_unlock_irqrestore(&ep->udc->lock, flags);
drivers/usb/gadget/udc/renesas_usbf.c
2105
spin_lock_irqsave(&ep->udc->lock, flags);
drivers/usb/gadget/udc/renesas_usbf.c
2107
spin_unlock_irqrestore(&ep->udc->lock, flags);
drivers/usb/gadget/udc/renesas_usbf.c
2120
spin_lock_irqsave(&ep->udc->lock, flags);
drivers/usb/gadget/udc/renesas_usbf.c
2133
spin_unlock_irqrestore(&ep->udc->lock, flags);
drivers/usb/gadget/udc/renesas_usbf.c
2147
spin_lock_irqsave(&ep->udc->lock, flags);
drivers/usb/gadget/udc/renesas_usbf.c
2157
spin_unlock_irqrestore(&ep->udc->lock, flags);
drivers/usb/gadget/udc/renesas_usbf.c
2182
memcpy(ep0->udc->ep0_buf, buf, length);
drivers/usb/gadget/udc/renesas_usbf.c
2184
req->req.buf = ep0->udc->ep0_buf;
drivers/usb/gadget/udc/renesas_usbf.c
2194
static struct usbf_ep *usbf_get_ep_by_addr(struct usbf_udc *udc, u8 address)
drivers/usb/gadget/udc/renesas_usbf.c
2200
return &udc->ep[0];
drivers/usb/gadget/udc/renesas_usbf.c
2202
for (i = 1; i < ARRAY_SIZE(udc->ep); i++) {
drivers/usb/gadget/udc/renesas_usbf.c
2203
ep = &udc->ep[i];
drivers/usb/gadget/udc/renesas_usbf.c
2215
static int usbf_req_delegate(struct usbf_udc *udc,
drivers/usb/gadget/udc/renesas_usbf.c
2220
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/renesas_usbf.c
2221
ret = udc->driver->setup(&udc->gadget, ctrlrequest);
drivers/usb/gadget/udc/renesas_usbf.c
2222
spin_lock(&udc->lock);
drivers/usb/gadget/udc/renesas_usbf.c
2224
dev_dbg(udc->dev, "udc driver setup failed %d\n", ret);
drivers/usb/gadget/udc/renesas_usbf.c
2228
dev_dbg(udc->dev, "delayed status set\n");
drivers/usb/gadget/udc/renesas_usbf.c
2229
udc->ep[0].delayed_status = 1;
drivers/usb/gadget/udc/renesas_usbf.c
2235
static int usbf_req_get_status(struct usbf_udc *udc,
drivers/usb/gadget/udc/renesas_usbf.c
2254
if (udc->gadget.is_selfpowered)
drivers/usb/gadget/udc/renesas_usbf.c
2257
if (udc->is_remote_wakeup)
drivers/usb/gadget/udc/renesas_usbf.c
2266
ep = usbf_get_ep_by_addr(udc, wIndex);
drivers/usb/gadget/udc/renesas_usbf.c
2285
usbf_ep0_fill_req(&udc->ep[0], &udc->setup_reply, &status_data,
drivers/usb/gadget/udc/renesas_usbf.c
2287
usbf_ep0_queue(&udc->ep[0], &udc->setup_reply, GFP_ATOMIC);
drivers/usb/gadget/udc/renesas_usbf.c
2292
return usbf_req_delegate(udc, ctrlrequest);
drivers/usb/gadget/udc/renesas_usbf.c
2295
static int usbf_req_clear_set_feature(struct usbf_udc *udc,
drivers/usb/gadget/udc/renesas_usbf.c
2316
udc->is_remote_wakeup = is_set;
drivers/usb/gadget/udc/renesas_usbf.c
2323
ep = usbf_get_ep_by_addr(udc, wIndex);
drivers/usb/gadget/udc/renesas_usbf.c
2350
return usbf_req_delegate(udc, ctrlrequest);
drivers/usb/gadget/udc/renesas_usbf.c
2361
usb_gadget_set_state(&ep->udc->gadget, USB_STATE_ADDRESS);
drivers/usb/gadget/udc/renesas_usbf.c
2370
static int usbf_req_set_address(struct usbf_udc *udc,
drivers/usb/gadget/udc/renesas_usbf.c
2393
usbf_reg_writel(udc, USBF_REG_USB_ADDRESS, USBF_USB_SET_USB_ADDR(addr));
drivers/usb/gadget/udc/renesas_usbf.c
2396
usbf_ep0_fill_req(&udc->ep[0], &udc->setup_reply, NULL, 0,
drivers/usb/gadget/udc/renesas_usbf.c
2398
usbf_ep0_queue(&udc->ep[0], &udc->setup_reply, GFP_ATOMIC);
drivers/usb/gadget/udc/renesas_usbf.c
2403
return usbf_req_delegate(udc, ctrlrequest);
drivers/usb/gadget/udc/renesas_usbf.c
2406
static int usbf_req_set_configuration(struct usbf_udc *udc,
drivers/usb/gadget/udc/renesas_usbf.c
2414
ret = usbf_req_delegate(udc, ctrlrequest);
drivers/usb/gadget/udc/renesas_usbf.c
2432
usbf_reg_bitset(udc, USBF_REG_USB_CONTROL, USBF_USB_CONF);
drivers/usb/gadget/udc/renesas_usbf.c
2434
usbf_reg_bitclr(udc, USBF_REG_USB_CONTROL, USBF_USB_CONF);
drivers/usb/gadget/udc/renesas_usbf.c
2436
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/renesas_usbf.c
2437
usb_gadget_set_state(&udc->gadget, USB_STATE_ADDRESS);
drivers/usb/gadget/udc/renesas_usbf.c
2438
spin_lock(&udc->lock);
drivers/usb/gadget/udc/renesas_usbf.c
2450
struct usbf_udc *udc = ep0->udc;
drivers/usb/gadget/udc/renesas_usbf.c
2454
crq.raw[0] = usbf_reg_readl(udc, USBF_REG_SETUP_DATA0);
drivers/usb/gadget/udc/renesas_usbf.c
2455
crq.raw[1] = usbf_reg_readl(udc, USBF_REG_SETUP_DATA1);
drivers/usb/gadget/udc/renesas_usbf.c
2457
dev_dbg(ep0->udc->dev,
drivers/usb/gadget/udc/renesas_usbf.c
2465
udc->ep0state = EP0_IN_DATA_PHASE;
drivers/usb/gadget/udc/renesas_usbf.c
2471
udc->ep0state = EP0_OUT_DATA_PHASE;
drivers/usb/gadget/udc/renesas_usbf.c
2477
udc->ep0state = EP0_IN_STATUS_START_PHASE;
drivers/usb/gadget/udc/renesas_usbf.c
2491
ret = usbf_req_get_status(udc, &crq.ctrlreq);
drivers/usb/gadget/udc/renesas_usbf.c
2495
ret = usbf_req_clear_set_feature(udc, &crq.ctrlreq, false);
drivers/usb/gadget/udc/renesas_usbf.c
2499
ret = usbf_req_clear_set_feature(udc, &crq.ctrlreq, true);
drivers/usb/gadget/udc/renesas_usbf.c
2503
ret = usbf_req_set_address(udc, &crq.ctrlreq);
drivers/usb/gadget/udc/renesas_usbf.c
2507
ret = usbf_req_set_configuration(udc, &crq.ctrlreq);
drivers/usb/gadget/udc/renesas_usbf.c
2517
return usbf_req_delegate(udc, &crq.ctrlreq);
drivers/usb/gadget/udc/renesas_usbf.c
2524
struct usbf_udc *udc = ep0->udc;
drivers/usb/gadget/udc/renesas_usbf.c
2530
dev_err(udc->dev,
drivers/usb/gadget/udc/renesas_usbf.c
2540
udc->ep0state = next_ep0state;
drivers/usb/gadget/udc/renesas_usbf.c
2543
dev_err(udc->dev,
drivers/usb/gadget/udc/renesas_usbf.c
2553
struct usbf_udc *udc = ep0->udc;
drivers/usb/gadget/udc/renesas_usbf.c
2563
usbf_ep0_fill_req(ep0, &udc->setup_reply, NULL, 0, NULL);
drivers/usb/gadget/udc/renesas_usbf.c
2564
usbf_ep0_queue(ep0, &udc->setup_reply, GFP_ATOMIC);
drivers/usb/gadget/udc/renesas_usbf.c
2567
dev_err(udc->dev,
drivers/usb/gadget/udc/renesas_usbf.c
2572
udc->ep0state = EP0_OUT_STATUS_PHASE;
drivers/usb/gadget/udc/renesas_usbf.c
2578
struct usbf_udc *udc = ep0->udc;
drivers/usb/gadget/udc/renesas_usbf.c
2591
dev_dbg(ep0->udc->dev,
drivers/usb/gadget/udc/renesas_usbf.c
2593
udc->ep0state = EP0_IN_STATUS_PHASE;
drivers/usb/gadget/udc/renesas_usbf.c
2597
usbf_ep0_fill_req(ep0, &udc->setup_reply, NULL,
drivers/usb/gadget/udc/renesas_usbf.c
2599
usbf_ep0_queue(ep0, &udc->setup_reply,
drivers/usb/gadget/udc/renesas_usbf.c
2605
dev_err(udc->dev,
drivers/usb/gadget/udc/renesas_usbf.c
2614
udc->ep0state = EP0_IN_STATUS_END_PHASE;
drivers/usb/gadget/udc/renesas_usbf.c
2618
udc->ep0state = EP0_IN_STATUS_PHASE;
drivers/usb/gadget/udc/renesas_usbf.c
2624
struct usbf_udc *udc = ep0->udc;
drivers/usb/gadget/udc/renesas_usbf.c
2632
dev_dbg(ep0->udc->dev, "ep0 status=0x%08x, enable=%08x\n, ctrl=0x%08x\n",
drivers/usb/gadget/udc/renesas_usbf.c
2643
dev_dbg(ep0->udc->dev, "udc->ep0state=%d\n", udc->ep0state);
drivers/usb/gadget/udc/renesas_usbf.c
2646
prev_ep0state = udc->ep0state;
drivers/usb/gadget/udc/renesas_usbf.c
2647
switch (udc->ep0state) {
drivers/usb/gadget/udc/renesas_usbf.c
2653
dev_dbg(ep0->udc->dev, "ep0 handle setup\n");
drivers/usb/gadget/udc/renesas_usbf.c
2662
dev_dbg(ep0->udc->dev, "ep0 handle in data phase\n");
drivers/usb/gadget/udc/renesas_usbf.c
2672
dev_dbg(ep0->udc->dev, "ep0 handle out status start phase\n");
drivers/usb/gadget/udc/renesas_usbf.c
2681
dev_dbg(ep0->udc->dev, "ep0 handle out status phase\n");
drivers/usb/gadget/udc/renesas_usbf.c
2692
dev_dbg(ep0->udc->dev, "ep0 handle out status end phase\n");
drivers/usb/gadget/udc/renesas_usbf.c
2693
udc->ep0state = EP0_IDLE;
drivers/usb/gadget/udc/renesas_usbf.c
2701
dev_dbg(ep0->udc->dev, "ep0 handle out data phase\n");
drivers/usb/gadget/udc/renesas_usbf.c
2711
dev_dbg(ep0->udc->dev, "ep0 handle in status start phase\n");
drivers/usb/gadget/udc/renesas_usbf.c
2720
dev_dbg(ep0->udc->dev, "ep0 handle in status phase\n");
drivers/usb/gadget/udc/renesas_usbf.c
2730
dev_dbg(ep0->udc->dev, "ep0 handle in status end\n");
drivers/usb/gadget/udc/renesas_usbf.c
2731
udc->ep0state = EP0_IDLE;
drivers/usb/gadget/udc/renesas_usbf.c
2735
udc->ep0state = EP0_IDLE;
drivers/usb/gadget/udc/renesas_usbf.c
2740
dev_dbg(ep0->udc->dev, "ep0 failed (%d)\n", ret);
drivers/usb/gadget/udc/renesas_usbf.c
2750
udc->ep0state = EP0_IDLE;
drivers/usb/gadget/udc/renesas_usbf.c
2754
} while ((prev_ep0state != udc->ep0state) || (prev_sts != sts));
drivers/usb/gadget/udc/renesas_usbf.c
2756
dev_dbg(ep0->udc->dev, "ep0 done udc->ep0state=%d, status=0x%08x. next=0x%08x\n",
drivers/usb/gadget/udc/renesas_usbf.c
2757
udc->ep0state, sts,
drivers/usb/gadget/udc/renesas_usbf.c
2768
dev_warn(epn->udc->dev, "ep%u %s, no request available\n",
drivers/usb/gadget/udc/renesas_usbf.c
2779
dev_err(epn->udc->dev, "ep%u %s, process queue failed (%d)\n",
drivers/usb/gadget/udc/renesas_usbf.c
2785
dev_dbg(epn->udc->dev, "ep%u %s failed (%d)\n", epn->id,
drivers/usb/gadget/udc/renesas_usbf.c
2801
dev_dbg(epn->udc->dev, "ep%u %s status=0x%08x, enable=%08x\n, ctrl=0x%08x\n",
drivers/usb/gadget/udc/renesas_usbf.c
2806
dev_warn(epn->udc->dev, "ep%u %s, interrupt while disabled\n",
drivers/usb/gadget/udc/renesas_usbf.c
281
struct usbf_udc *udc;
drivers/usb/gadget/udc/renesas_usbf.c
2815
dev_dbg(epn->udc->dev, "ep%u %s process queue (in interrupts)\n",
drivers/usb/gadget/udc/renesas_usbf.c
2822
dev_dbg(epn->udc->dev, "ep%u %s process queue (out interrupts)\n",
drivers/usb/gadget/udc/renesas_usbf.c
2827
dev_dbg(epn->udc->dev, "ep%u %s done status=0x%08x. next=0x%08x\n",
drivers/usb/gadget/udc/renesas_usbf.c
2839
static void usbf_reset(struct usbf_udc *udc)
drivers/usb/gadget/udc/renesas_usbf.c
2843
for (i = 0; i < ARRAY_SIZE(udc->ep); i++) {
drivers/usb/gadget/udc/renesas_usbf.c
2844
if (udc->ep[i].disabled)
drivers/usb/gadget/udc/renesas_usbf.c
2847
usbf_ep_reset(&udc->ep[i]);
drivers/usb/gadget/udc/renesas_usbf.c
2850
if (usbf_reg_readl(udc, USBF_REG_USB_STATUS) & USBF_USB_SPEED_MODE)
drivers/usb/gadget/udc/renesas_usbf.c
2851
udc->gadget.speed = USB_SPEED_HIGH;
drivers/usb/gadget/udc/renesas_usbf.c
2853
udc->gadget.speed = USB_SPEED_FULL;
drivers/usb/gadget/udc/renesas_usbf.c
2856
udc->is_remote_wakeup = false;
drivers/usb/gadget/udc/renesas_usbf.c
2859
usbf_ep0_enable(&udc->ep[0]);
drivers/usb/gadget/udc/renesas_usbf.c
2861
if (udc->driver) {
drivers/usb/gadget/udc/renesas_usbf.c
2863
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/renesas_usbf.c
2864
usb_gadget_udc_reset(&udc->gadget, udc->driver);
drivers/usb/gadget/udc/renesas_usbf.c
2865
spin_lock(&udc->lock);
drivers/usb/gadget/udc/renesas_usbf.c
2869
static void usbf_driver_suspend(struct usbf_udc *udc)
drivers/usb/gadget/udc/renesas_usbf.c
2871
if (udc->is_usb_suspended) {
drivers/usb/gadget/udc/renesas_usbf.c
2872
dev_dbg(udc->dev, "already suspended\n");
drivers/usb/gadget/udc/renesas_usbf.c
2876
dev_dbg(udc->dev, "do usb suspend\n");
drivers/usb/gadget/udc/renesas_usbf.c
2877
udc->is_usb_suspended = true;
drivers/usb/gadget/udc/renesas_usbf.c
2879
if (udc->driver && udc->driver->suspend) {
drivers/usb/gadget/udc/renesas_usbf.c
2880
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/renesas_usbf.c
2881
udc->driver->suspend(&udc->gadget);
drivers/usb/gadget/udc/renesas_usbf.c
2882
spin_lock(&udc->lock);
drivers/usb/gadget/udc/renesas_usbf.c
2894
static void usbf_driver_resume(struct usbf_udc *udc)
drivers/usb/gadget/udc/renesas_usbf.c
2896
if (!udc->is_usb_suspended)
drivers/usb/gadget/udc/renesas_usbf.c
2899
dev_dbg(udc->dev, "do usb resume\n");
drivers/usb/gadget/udc/renesas_usbf.c
2900
udc->is_usb_suspended = false;
drivers/usb/gadget/udc/renesas_usbf.c
2902
if (udc->driver && udc->driver->resume) {
drivers/usb/gadget/udc/renesas_usbf.c
2903
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/renesas_usbf.c
2904
udc->driver->resume(&udc->gadget);
drivers/usb/gadget/udc/renesas_usbf.c
2905
spin_lock(&udc->lock);
drivers/usb/gadget/udc/renesas_usbf.c
2911
struct usbf_udc *udc = (struct usbf_udc *)_udc;
drivers/usb/gadget/udc/renesas_usbf.c
2918
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/renesas_usbf.c
2920
int_en = usbf_reg_readl(udc, USBF_REG_USB_INT_ENA);
drivers/usb/gadget/udc/renesas_usbf.c
2921
int_sts = usbf_reg_readl(udc, USBF_REG_USB_INT_STA) & int_en;
drivers/usb/gadget/udc/renesas_usbf.c
2922
usbf_reg_writel(udc, USBF_REG_USB_INT_STA, ~int_sts);
drivers/usb/gadget/udc/renesas_usbf.c
2924
dev_dbg(udc->dev, "int_sts=0x%08x\n", int_sts);
drivers/usb/gadget/udc/renesas_usbf.c
2927
dev_dbg(udc->dev, "handle resume\n");
drivers/usb/gadget/udc/renesas_usbf.c
2928
usbf_driver_resume(udc);
drivers/usb/gadget/udc/renesas_usbf.c
2932
dev_dbg(udc->dev, "handle bus reset\n");
drivers/usb/gadget/udc/renesas_usbf.c
2933
usbf_driver_resume(udc);
drivers/usb/gadget/udc/renesas_usbf.c
2934
usbf_reset(udc);
drivers/usb/gadget/udc/renesas_usbf.c
2938
if (usbf_reg_readl(udc, USBF_REG_USB_STATUS) & USBF_USB_SPEED_MODE)
drivers/usb/gadget/udc/renesas_usbf.c
2939
udc->gadget.speed = USB_SPEED_HIGH;
drivers/usb/gadget/udc/renesas_usbf.c
2941
udc->gadget.speed = USB_SPEED_FULL;
drivers/usb/gadget/udc/renesas_usbf.c
2942
dev_dbg(udc->dev, "handle speed change (%s)\n",
drivers/usb/gadget/udc/renesas_usbf.c
2943
udc->gadget.speed == USB_SPEED_HIGH ? "High" : "Full");
drivers/usb/gadget/udc/renesas_usbf.c
2947
usbf_driver_resume(udc);
drivers/usb/gadget/udc/renesas_usbf.c
2948
usbf_ep0_interrupt(&udc->ep[0]);
drivers/usb/gadget/udc/renesas_usbf.c
2951
for (i = 1; i < ARRAY_SIZE(udc->ep); i++) {
drivers/usb/gadget/udc/renesas_usbf.c
2952
ep = &udc->ep[i];
drivers/usb/gadget/udc/renesas_usbf.c
2955
usbf_driver_resume(udc);
drivers/usb/gadget/udc/renesas_usbf.c
2961
dev_dbg(udc->dev, "handle suspend\n");
drivers/usb/gadget/udc/renesas_usbf.c
2962
usbf_driver_suspend(udc);
drivers/usb/gadget/udc/renesas_usbf.c
2965
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/renesas_usbf.c
2972
struct usbf_udc *udc = (struct usbf_udc *)_udc;
drivers/usb/gadget/udc/renesas_usbf.c
2979
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/renesas_usbf.c
2982
sysbint = usbf_reg_readl(udc, USBF_REG_AHBBINT);
drivers/usb/gadget/udc/renesas_usbf.c
2983
usbf_reg_writel(udc, USBF_REG_AHBBINT, sysbint);
drivers/usb/gadget/udc/renesas_usbf.c
2986
if (usbf_reg_readl(udc, USBF_REG_EPCTR) & USBF_SYS_VBUS_LEVEL) {
drivers/usb/gadget/udc/renesas_usbf.c
2987
dev_dbg(udc->dev, "handle vbus (1)\n");
drivers/usb/gadget/udc/renesas_usbf.c
2988
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/renesas_usbf.c
2989
usb_udc_vbus_handler(&udc->gadget, true);
drivers/usb/gadget/udc/renesas_usbf.c
2990
usb_gadget_set_state(&udc->gadget, USB_STATE_POWERED);
drivers/usb/gadget/udc/renesas_usbf.c
2991
spin_lock(&udc->lock);
drivers/usb/gadget/udc/renesas_usbf.c
2993
dev_dbg(udc->dev, "handle vbus (0)\n");
drivers/usb/gadget/udc/renesas_usbf.c
2994
udc->is_usb_suspended = false;
drivers/usb/gadget/udc/renesas_usbf.c
2995
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/renesas_usbf.c
2996
usb_udc_vbus_handler(&udc->gadget, false);
drivers/usb/gadget/udc/renesas_usbf.c
2997
usb_gadget_set_state(&udc->gadget,
drivers/usb/gadget/udc/renesas_usbf.c
2999
spin_lock(&udc->lock);
drivers/usb/gadget/udc/renesas_usbf.c
3003
for (i = 1; i < ARRAY_SIZE(udc->ep); i++) {
drivers/usb/gadget/udc/renesas_usbf.c
3005
epn = &udc->ep[i];
drivers/usb/gadget/udc/renesas_usbf.c
3006
dev_dbg(epn->udc->dev,
drivers/usb/gadget/udc/renesas_usbf.c
3017
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/renesas_usbf.c
3025
struct usbf_udc *udc = container_of(gadget, struct usbf_udc, gadget);
drivers/usb/gadget/udc/renesas_usbf.c
3028
dev_info(udc->dev, "start (driver '%s')\n", driver->driver.name);
drivers/usb/gadget/udc/renesas_usbf.c
3030
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/renesas_usbf.c
3033
udc->driver = driver;
drivers/usb/gadget/udc/renesas_usbf.c
3036
usbf_reg_writel(udc, USBF_REG_AHBBINTEN, USBF_SYS_VBUS_INTEN);
drivers/usb/gadget/udc/renesas_usbf.c
3038
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/renesas_usbf.c
3045
struct usbf_udc *udc = container_of(gadget, struct usbf_udc, gadget);
drivers/usb/gadget/udc/renesas_usbf.c
3048
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/renesas_usbf.c
3051
usbf_reg_writel(udc, USBF_REG_AHBBINTEN, 0);
drivers/usb/gadget/udc/renesas_usbf.c
3053
udc->driver = NULL;
drivers/usb/gadget/udc/renesas_usbf.c
3055
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/renesas_usbf.c
3057
dev_info(udc->dev, "stopped\n");
drivers/usb/gadget/udc/renesas_usbf.c
3064
struct usbf_udc *udc = container_of(gadget, struct usbf_udc, gadget);
drivers/usb/gadget/udc/renesas_usbf.c
3066
return USBF_USB_GET_FRAME(usbf_reg_readl(udc, USBF_REG_USB_ADDRESS));
drivers/usb/gadget/udc/renesas_usbf.c
3069
static void usbf_attach(struct usbf_udc *udc)
drivers/usb/gadget/udc/renesas_usbf.c
3077
usbf_reg_clrset(udc, USBF_REG_USB_CONTROL,
drivers/usb/gadget/udc/renesas_usbf.c
3082
usbf_reg_bitset(udc, USBF_REG_USB_INT_ENA,
drivers/usb/gadget/udc/renesas_usbf.c
3086
static void usbf_detach(struct usbf_udc *udc)
drivers/usb/gadget/udc/renesas_usbf.c
3091
usbf_reg_writel(udc, USBF_REG_USB_INT_ENA, 0);
drivers/usb/gadget/udc/renesas_usbf.c
3093
for (i = 0; i < ARRAY_SIZE(udc->ep); i++) {
drivers/usb/gadget/udc/renesas_usbf.c
3094
if (udc->ep[i].disabled)
drivers/usb/gadget/udc/renesas_usbf.c
3097
usbf_ep_reset(&udc->ep[i]);
drivers/usb/gadget/udc/renesas_usbf.c
3105
usbf_reg_clrset(udc, USBF_REG_USB_CONTROL,
drivers/usb/gadget/udc/renesas_usbf.c
3112
struct usbf_udc *udc = container_of(gadget, struct usbf_udc, gadget);
drivers/usb/gadget/udc/renesas_usbf.c
3115
dev_dbg(udc->dev, "pullup %d\n", is_on);
drivers/usb/gadget/udc/renesas_usbf.c
3117
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/renesas_usbf.c
3119
usbf_attach(udc);
drivers/usb/gadget/udc/renesas_usbf.c
3121
usbf_detach(udc);
drivers/usb/gadget/udc/renesas_usbf.c
3122
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/renesas_usbf.c
3130
struct usbf_udc *udc = container_of(gadget, struct usbf_udc, gadget);
drivers/usb/gadget/udc/renesas_usbf.c
3133
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/renesas_usbf.c
3135
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/renesas_usbf.c
3142
struct usbf_udc *udc = container_of(gadget, struct usbf_udc, gadget);
drivers/usb/gadget/udc/renesas_usbf.c
3146
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/renesas_usbf.c
3148
if (!udc->is_remote_wakeup) {
drivers/usb/gadget/udc/renesas_usbf.c
3149
dev_dbg(udc->dev, "remote wakeup not allowed\n");
drivers/usb/gadget/udc/renesas_usbf.c
3154
dev_dbg(udc->dev, "do wakeup\n");
drivers/usb/gadget/udc/renesas_usbf.c
3157
usbf_reg_bitset(udc, USBF_REG_USB_CONTROL, USBF_USB_RSUM_IN);
drivers/usb/gadget/udc/renesas_usbf.c
3158
usbf_reg_bitclr(udc, USBF_REG_USB_CONTROL, USBF_USB_RSUM_IN);
drivers/usb/gadget/udc/renesas_usbf.c
3162
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/renesas_usbf.c
3189
dev_err(epn->udc->dev,
drivers/usb/gadget/udc/renesas_usbf.c
3198
dev_err(epn->udc->dev,
drivers/usb/gadget/udc/renesas_usbf.c
3207
dev_err(epn->udc->dev,
drivers/usb/gadget/udc/renesas_usbf.c
3214
dev_err(epn->udc->dev, "ep%u unknown type\n", epn->id);
drivers/usb/gadget/udc/renesas_usbf.c
3222
dev_err(epn->udc->dev,
drivers/usb/gadget/udc/renesas_usbf.c
3230
dev_err(epn->udc->dev,
drivers/usb/gadget/udc/renesas_usbf.c
3237
dev_dbg(epn->udc->dev, "ep%u (%s) %s, %s buffer %u, checked %s\n",
drivers/usb/gadget/udc/renesas_usbf.c
3247
struct usbf_udc *udc;
drivers/usb/gadget/udc/renesas_usbf.c
3253
udc = devm_kzalloc(dev, sizeof(*udc), GFP_KERNEL);
drivers/usb/gadget/udc/renesas_usbf.c
3254
if (!udc)
drivers/usb/gadget/udc/renesas_usbf.c
3256
platform_set_drvdata(pdev, udc);
drivers/usb/gadget/udc/renesas_usbf.c
3258
udc->dev = dev;
drivers/usb/gadget/udc/renesas_usbf.c
3259
spin_lock_init(&udc->lock);
drivers/usb/gadget/udc/renesas_usbf.c
3261
udc->regs = devm_platform_ioremap_resource(pdev, 0);
drivers/usb/gadget/udc/renesas_usbf.c
3262
if (IS_ERR(udc->regs))
drivers/usb/gadget/udc/renesas_usbf.c
3263
return PTR_ERR(udc->regs);
drivers/usb/gadget/udc/renesas_usbf.c
3273
usbf_reg_readl(udc, USBF_REG_USBSSVER));
drivers/usb/gadget/udc/renesas_usbf.c
3278
usbf_reg_bitclr(udc, USBF_REG_EPCTR, USBF_SYS_EPC_RST);
drivers/usb/gadget/udc/renesas_usbf.c
3281
udc->gadget.speed = USB_SPEED_FULL;
drivers/usb/gadget/udc/renesas_usbf.c
3282
udc->gadget.max_speed = USB_SPEED_HIGH;
drivers/usb/gadget/udc/renesas_usbf.c
3283
udc->gadget.ops = &usbf_gadget_ops;
drivers/usb/gadget/udc/renesas_usbf.c
3285
udc->gadget.name = dev->driver->name;
drivers/usb/gadget/udc/renesas_usbf.c
3286
udc->gadget.dev.parent = dev;
drivers/usb/gadget/udc/renesas_usbf.c
3287
udc->gadget.ep0 = &udc->ep[0].ep;
drivers/usb/gadget/udc/renesas_usbf.c
3292
udc->gadget.quirk_avoids_skb_reserve = 1;
drivers/usb/gadget/udc/renesas_usbf.c
3294
INIT_LIST_HEAD(&udc->gadget.ep_list);
drivers/usb/gadget/udc/renesas_usbf.c
3298
INIT_LIST_HEAD(&udc->setup_reply.queue);
drivers/usb/gadget/udc/renesas_usbf.c
3300
for (i = 0; i < ARRAY_SIZE(udc->ep); i++) {
drivers/usb/gadget/udc/renesas_usbf.c
3301
ep = &udc->ep[i];
drivers/usb/gadget/udc/renesas_usbf.c
3303
if (!(usbf_reg_readl(udc, USBF_REG_USBSSCONF) &
drivers/usb/gadget/udc/renesas_usbf.c
3312
ep->udc = udc;
drivers/usb/gadget/udc/renesas_usbf.c
3320
ep->regs = ep->udc->regs + USBF_BASE_EP0;
drivers/usb/gadget/udc/renesas_usbf.c
3322
ep->regs = ep->udc->regs + USBF_BASE_EPN(ep->id - 1);
drivers/usb/gadget/udc/renesas_usbf.c
3326
if (usbf_reg_readl(udc, USBF_REG_USBSSCONF) &
drivers/usb/gadget/udc/renesas_usbf.c
3328
ep->dma_regs = ep->udc->regs +
drivers/usb/gadget/udc/renesas_usbf.c
3331
list_add_tail(&ep->ep.ep_list, &udc->gadget.ep_list);
drivers/usb/gadget/udc/renesas_usbf.c
3338
ret = devm_request_irq(dev, irq, usbf_epc_irq, 0, "usbf-epc", udc);
drivers/usb/gadget/udc/renesas_usbf.c
3347
ret = devm_request_irq(dev, irq, usbf_ahb_epc_irq, 0, "usbf-ahb-epc", udc);
drivers/usb/gadget/udc/renesas_usbf.c
3353
usbf_reg_bitset(udc, USBF_REG_AHBMCTR, USBF_SYS_WBURST_TYPE);
drivers/usb/gadget/udc/renesas_usbf.c
3355
usbf_reg_bitset(udc, USBF_REG_USB_CONTROL,
drivers/usb/gadget/udc/renesas_usbf.c
3358
ret = usb_add_gadget_udc(dev, &udc->gadget);
drivers/usb/gadget/udc/renesas_usbf.c
3367
struct usbf_udc *udc = platform_get_drvdata(pdev);
drivers/usb/gadget/udc/renesas_usbf.c
3369
usb_del_gadget_udc(&udc->gadget);
drivers/usb/gadget/udc/renesas_usbf.c
426
static inline u32 usbf_reg_readl(struct usbf_udc *udc, uint offset)
drivers/usb/gadget/udc/renesas_usbf.c
428
return readl(udc->regs + offset);
drivers/usb/gadget/udc/renesas_usbf.c
431
static inline void usbf_reg_writel(struct usbf_udc *udc, uint offset, u32 val)
drivers/usb/gadget/udc/renesas_usbf.c
433
writel(val, udc->regs + offset);
drivers/usb/gadget/udc/renesas_usbf.c
436
static inline void usbf_reg_bitset(struct usbf_udc *udc, uint offset, u32 set)
drivers/usb/gadget/udc/renesas_usbf.c
440
tmp = usbf_reg_readl(udc, offset);
drivers/usb/gadget/udc/renesas_usbf.c
442
usbf_reg_writel(udc, offset, tmp);
drivers/usb/gadget/udc/renesas_usbf.c
445
static inline void usbf_reg_bitclr(struct usbf_udc *udc, uint offset, u32 clr)
drivers/usb/gadget/udc/renesas_usbf.c
449
tmp = usbf_reg_readl(udc, offset);
drivers/usb/gadget/udc/renesas_usbf.c
451
usbf_reg_writel(udc, offset, tmp);
drivers/usb/gadget/udc/renesas_usbf.c
454
static inline void usbf_reg_clrset(struct usbf_udc *udc, uint offset,
drivers/usb/gadget/udc/renesas_usbf.c
459
tmp = usbf_reg_readl(udc, offset);
drivers/usb/gadget/udc/renesas_usbf.c
462
usbf_reg_writel(udc, offset, tmp);
drivers/usb/gadget/udc/renesas_usbf.c
571
dev_dbg(ep0->udc->dev, "ep0 send null\n");
drivers/usb/gadget/udc/renesas_usbf.c
578
dev_dbg(ep0->udc->dev, "ep0 send null\n");
drivers/usb/gadget/udc/renesas_usbf.c
611
dev_dbg(ep0->udc->dev, "ep0 send %u/%u\n",
drivers/usb/gadget/udc/renesas_usbf.c
636
dev_dbg(ep0->udc->dev, "ep0 recv %u, left %u\n", count, left);
drivers/usb/gadget/udc/renesas_usbf.c
661
dev_dbg(ep0->udc->dev, "ep0 recv %u/%u\n",
drivers/usb/gadget/udc/renesas_usbf.c
665
dev_dbg(ep0->udc->dev, "ep0 req.status=%d\n", req_status);
drivers/usb/gadget/udc/renesas_usbf.c
671
dev_dbg(ep0->udc->dev, "ep0 short packet\n");
drivers/usb/gadget/udc/renesas_usbf.c
691
dev_dbg(ep0->udc->dev, "ep0 null packet\n");
drivers/usb/gadget/udc/renesas_usbf.c
715
dev_err(ep0->udc->dev, "ep0 flush fifo timed out\n");
drivers/usb/gadget/udc/renesas_usbf.c
748
dev_dbg(epn->udc->dev, "ep%u send_null\n", epn->id);
drivers/usb/gadget/udc/renesas_usbf.c
755
dev_dbg(epn->udc->dev, "ep%u send_null\n",
drivers/usb/gadget/udc/renesas_usbf.c
789
dev_dbg(epn->udc->dev, "ep%u send %u/%u\n", epn->id, req->req.actual,
drivers/usb/gadget/udc/renesas_usbf.c
808
dev_dbg(epn->udc->dev, "ep%u buf unaligned -> fallback pio\n",
drivers/usb/gadget/udc/renesas_usbf.c
819
dev_dbg(epn->udc->dev, "ep%u send null\n", epn->id);
drivers/usb/gadget/udc/renesas_usbf.c
825
dev_dbg(epn->udc->dev, "ep%u send residue %u\n", epn->id,
drivers/usb/gadget/udc/renesas_usbf.c
834
ret = usb_gadget_map_request(&epn->udc->gadget, &req->req, 1);
drivers/usb/gadget/udc/renesas_usbf.c
836
dev_err(epn->udc->dev, "usb_gadget_map_request failed (%d)\n",
drivers/usb/gadget/udc/renesas_usbf.c
882
dev_dbg(epn->udc->dev, "ep%u dma xfer %zu\n", epn->id,
drivers/usb/gadget/udc/renesas_usbf.c
890
dev_dbg(epn->udc->dev, "ep%u dma not done\n", epn->id);
drivers/usb/gadget/udc/renesas_usbf.c
893
dev_dbg(epn->udc->dev, "ep%u dma done\n", epn->id);
drivers/usb/gadget/udc/renesas_usbf.c
895
usb_gadget_unmap_request(&epn->udc->gadget, &req->req, 1);
drivers/usb/gadget/udc/renesas_usbf.c
910
dev_dbg(epn->udc->dev, "ep%u send residue %u\n", epn->id,
drivers/usb/gadget/udc/renesas_usbf.c
923
dev_dbg(epn->udc->dev, "ep%u send short\n", epn->id);
drivers/usb/gadget/udc/renesas_usbf.c
946
dev_dbg(epn->udc->dev, "ep%u send null\n", epn->id);
drivers/usb/gadget/udc/renesas_usbf.c
953
dev_dbg(epn->udc->dev, "ep%u end not done\n", epn->id);
drivers/usb/gadget/udc/renesas_usbf.c
956
dev_dbg(epn->udc->dev, "ep%u send done %u/%u\n", epn->id,
drivers/usb/gadget/udc/renesas_usbf.c
993
dev_dbg(epn->udc->dev, "ep%u recv %u, left %u, mpkt %u\n", epn->id,
drivers/usb/gadget/udc/snps_udc_core.c
1030
static void udc_set_rde(struct udc *dev)
drivers/usb/gadget/udc/snps_udc_core.c
1055
struct udc *dev;
drivers/usb/gadget/udc/snps_udc_core.c
1078
retval = usb_gadget_map_request(&udc->gadget, usbreq, ep->in);
drivers/usb/gadget/udc/snps_udc_core.c
1276
tmp = readl(&udc->regs->ctl);
drivers/usb/gadget/udc/snps_udc_core.c
1278
&udc->regs->ctl);
drivers/usb/gadget/udc/snps_udc_core.c
1292
writel(tmp, &udc->regs->ctl);
drivers/usb/gadget/udc/snps_udc_core.c
1390
static int udc_remote_wakeup(struct udc *dev)
drivers/usb/gadget/udc/snps_udc_core.c
1412
struct udc *dev;
drivers/usb/gadget/udc/snps_udc_core.c
1416
dev = container_of(gadget, struct udc, gadget);
drivers/usb/gadget/udc/snps_udc_core.c
1434
static void make_ep_lists(struct udc *dev)
drivers/usb/gadget/udc/snps_udc_core.c
1455
void udc_basic_init(struct udc *dev)
drivers/usb/gadget/udc/snps_udc_core.c
1494
static int startup_registers(struct udc *dev)
drivers/usb/gadget/udc/snps_udc_core.c
1521
static void udc_setup_endpoints(struct udc *dev)
drivers/usb/gadget/udc/snps_udc_core.c
1613
static void usb_connect(struct udc *dev)
drivers/usb/gadget/udc/snps_udc_core.c
1634
static void usb_disconnect(struct udc *dev)
drivers/usb/gadget/udc/snps_udc_core.c
1679
static void udc_soft_reset(struct udc *dev)
drivers/usb/gadget/udc/snps_udc_core.c
1718
tmp = readl(&udc->regs->ctl);
drivers/usb/gadget/udc/snps_udc_core.c
1720
writel(tmp, &udc->regs->ctl);
drivers/usb/gadget/udc/snps_udc_core.c
1722
} else if (readl(&udc->regs->sts)
drivers/usb/gadget/udc/snps_udc_core.c
1795
ep = &udc->ep[UDC_EPIN_IX];
drivers/usb/gadget/udc/snps_udc_core.c
1800
ep = &udc->ep[UDC_EPOUT_IX];
drivers/usb/gadget/udc/snps_udc_core.c
1819
static void activate_control_endpoints(struct udc *dev)
drivers/usb/gadget/udc/snps_udc_core.c
184
static void print_regs(struct udc *dev)
drivers/usb/gadget/udc/snps_udc_core.c
1918
static int setup_ep0(struct udc *dev)
drivers/usb/gadget/udc/snps_udc_core.c
1933
struct udc *dev = to_amd5536_udc(g);
drivers/usb/gadget/udc/snps_udc_core.c
1959
shutdown(struct udc *dev, struct usb_gadget_driver *driver)
drivers/usb/gadget/udc/snps_udc_core.c
1977
struct udc *dev = to_amd5536_udc(g);
drivers/usb/gadget/udc/snps_udc_core.c
1997
static void udc_process_cnak_queue(struct udc *dev)
drivers/usb/gadget/udc/snps_udc_core.c
2029
static void udc_ep0_set_rde(struct udc *dev)
drivers/usb/gadget/udc/snps_udc_core.c
2056
static irqreturn_t udc_data_out_isr(struct udc *dev, int ep_ix)
drivers/usb/gadget/udc/snps_udc_core.c
217
int udc_mask_unused_interrupts(struct udc *dev)
drivers/usb/gadget/udc/snps_udc_core.c
2270
static irqreturn_t udc_data_in_isr(struct udc *dev, int ep_ix)
drivers/usb/gadget/udc/snps_udc_core.c
240
static int udc_enable_ep0_interrupts(struct udc *dev)
drivers/usb/gadget/udc/snps_udc_core.c
2423
static irqreturn_t udc_control_out_isr(struct udc *dev)
drivers/usb/gadget/udc/snps_udc_core.c
2533
ep_tmp = &udc->ep[UDC_EPIN_IX];
drivers/usb/gadget/udc/snps_udc_core.c
2535
ep_tmp = &udc->ep[UDC_EPOUT_IX];
drivers/usb/gadget/udc/snps_udc_core.c
257
int udc_enable_dev_setup_interrupts(struct udc *dev)
drivers/usb/gadget/udc/snps_udc_core.c
2639
static irqreturn_t udc_control_in_isr(struct udc *dev)
drivers/usb/gadget/udc/snps_udc_core.c
2739
static irqreturn_t udc_dev_isr(struct udc *dev, u32 dev_irq)
drivers/usb/gadget/udc/snps_udc_core.c
281
struct udc *dev;
drivers/usb/gadget/udc/snps_udc_core.c
2960
usb_disconnect(udc);
drivers/usb/gadget/udc/snps_udc_core.c
2971
struct udc *dev = pdev;
drivers/usb/gadget/udc/snps_udc_core.c
3032
void udc_remove(struct udc *dev)
drivers/usb/gadget/udc/snps_udc_core.c
3044
udc = NULL;
drivers/usb/gadget/udc/snps_udc_core.c
3049
void free_dma_pools(struct udc *dev)
drivers/usb/gadget/udc/snps_udc_core.c
3061
int init_dma_pools(struct udc *dev)
drivers/usb/gadget/udc/snps_udc_core.c
3127
int udc_probe(struct udc *dev)
drivers/usb/gadget/udc/snps_udc_core.c
3164
udc = dev;
drivers/usb/gadget/udc/snps_udc_core.c
3166
retval = usb_add_gadget_udc_release(udc->dev, &dev->gadget,
drivers/usb/gadget/udc/snps_udc_core.c
322
struct udc *dev;
drivers/usb/gadget/udc/snps_udc_core.c
39
static void udc_setup_endpoints(struct udc *dev);
drivers/usb/gadget/udc/snps_udc_core.c
40
static void udc_soft_reset(struct udc *dev);
drivers/usb/gadget/udc/snps_udc_core.c
55
static struct udc *udc;
drivers/usb/gadget/udc/snps_udc_core.c
560
static void udc_free_dma_chain(struct udc *dev, struct udc_request *req)
drivers/usb/gadget/udc/snps_udc_core.c
680
static int udc_rxfifo_read_dwords(struct udc *dev, u32 *buf, int dwords)
drivers/usb/gadget/udc/snps_udc_core.c
692
static int udc_rxfifo_read_bytes(struct udc *dev, u8 *buf, int bytes)
drivers/usb/gadget/udc/snps_udc_core.c
964
struct udc *dev;
drivers/usb/gadget/udc/snps_udc_plat.c
104
struct udc *udc;
drivers/usb/gadget/udc/snps_udc_plat.c
107
udc = devm_kzalloc(dev, sizeof(*udc), GFP_KERNEL);
drivers/usb/gadget/udc/snps_udc_plat.c
108
if (!udc)
drivers/usb/gadget/udc/snps_udc_plat.c
111
spin_lock_init(&udc->lock);
drivers/usb/gadget/udc/snps_udc_plat.c
112
udc->dev = dev;
drivers/usb/gadget/udc/snps_udc_plat.c
114
udc->virt_addr = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
drivers/usb/gadget/udc/snps_udc_plat.c
115
if (IS_ERR(udc->virt_addr))
drivers/usb/gadget/udc/snps_udc_plat.c
116
return PTR_ERR(udc->virt_addr);
drivers/usb/gadget/udc/snps_udc_plat.c
119
udc->csr = udc->virt_addr + UDC_CSR_ADDR;
drivers/usb/gadget/udc/snps_udc_plat.c
122
udc->regs = udc->virt_addr + UDC_DEVCFG_ADDR;
drivers/usb/gadget/udc/snps_udc_plat.c
125
udc->ep_regs = udc->virt_addr + UDC_EPREGS_ADDR;
drivers/usb/gadget/udc/snps_udc_plat.c
128
udc->rxfifo = (u32 __iomem *)(udc->virt_addr + UDC_RXFIFO_ADDR);
drivers/usb/gadget/udc/snps_udc_plat.c
129
udc->txfifo = (u32 __iomem *)(udc->virt_addr + UDC_TXFIFO_ADDR);
drivers/usb/gadget/udc/snps_udc_plat.c
131
udc->phys_addr = (unsigned long)res->start;
drivers/usb/gadget/udc/snps_udc_plat.c
133
udc->irq = irq_of_parse_and_map(dev->of_node, 0);
drivers/usb/gadget/udc/snps_udc_plat.c
134
if (udc->irq <= 0) {
drivers/usb/gadget/udc/snps_udc_plat.c
139
udc->udc_phy = devm_of_phy_get_by_index(dev, dev->of_node, 0);
drivers/usb/gadget/udc/snps_udc_plat.c
140
if (IS_ERR(udc->udc_phy)) {
drivers/usb/gadget/udc/snps_udc_plat.c
142
return PTR_ERR(udc->udc_phy);
drivers/usb/gadget/udc/snps_udc_plat.c
145
ret = phy_init(udc->udc_phy);
drivers/usb/gadget/udc/snps_udc_plat.c
151
ret = phy_power_on(udc->udc_phy);
drivers/usb/gadget/udc/snps_udc_plat.c
154
phy_exit(udc->udc_phy);
drivers/usb/gadget/udc/snps_udc_plat.c
160
udc->edev = extcon_get_edev_by_phandle(dev, 0);
drivers/usb/gadget/udc/snps_udc_plat.c
161
if (IS_ERR(udc->edev)) {
drivers/usb/gadget/udc/snps_udc_plat.c
162
if (PTR_ERR(udc->edev) == -EPROBE_DEFER)
drivers/usb/gadget/udc/snps_udc_plat.c
165
ret = PTR_ERR(udc->edev);
drivers/usb/gadget/udc/snps_udc_plat.c
169
udc->nb.notifier_call = usbd_connect_notify;
drivers/usb/gadget/udc/snps_udc_plat.c
170
ret = extcon_register_notifier(udc->edev, EXTCON_USB,
drivers/usb/gadget/udc/snps_udc_plat.c
171
&udc->nb);
drivers/usb/gadget/udc/snps_udc_plat.c
177
ret = extcon_get_state(udc->edev, EXTCON_USB);
drivers/usb/gadget/udc/snps_udc_plat.c
182
udc->conn_type = ret;
drivers/usb/gadget/udc/snps_udc_plat.c
184
INIT_DELAYED_WORK(&udc->drd_work, udc_drd_work);
drivers/usb/gadget/udc/snps_udc_plat.c
189
ret = init_dma_pools(udc);
drivers/usb/gadget/udc/snps_udc_plat.c
194
ret = devm_request_irq(dev, udc->irq, udc_irq, IRQF_SHARED,
drivers/usb/gadget/udc/snps_udc_plat.c
195
"snps-udc", udc);
drivers/usb/gadget/udc/snps_udc_plat.c
197
dev_err(dev, "Request irq %d failed for UDC\n", udc->irq);
drivers/usb/gadget/udc/snps_udc_plat.c
201
platform_set_drvdata(pdev, udc);
drivers/usb/gadget/udc/snps_udc_plat.c
202
udc->chiprev = UDC_BCM_REV;
drivers/usb/gadget/udc/snps_udc_plat.c
204
if (udc_probe(udc)) {
drivers/usb/gadget/udc/snps_udc_plat.c
214
free_dma_pools(udc);
drivers/usb/gadget/udc/snps_udc_plat.c
216
if (udc->edev)
drivers/usb/gadget/udc/snps_udc_plat.c
217
extcon_unregister_notifier(udc->edev, EXTCON_USB, &udc->nb);
drivers/usb/gadget/udc/snps_udc_plat.c
219
if (udc->udc_phy) {
drivers/usb/gadget/udc/snps_udc_plat.c
22
static void start_udc(struct udc *udc)
drivers/usb/gadget/udc/snps_udc_plat.c
220
phy_power_off(udc->udc_phy);
drivers/usb/gadget/udc/snps_udc_plat.c
221
phy_exit(udc->udc_phy);
drivers/usb/gadget/udc/snps_udc_plat.c
228
struct udc *dev;
drivers/usb/gadget/udc/snps_udc_plat.c
24
if (udc->driver) {
drivers/usb/gadget/udc/snps_udc_plat.c
25
dev_info(udc->dev, "Connecting...\n");
drivers/usb/gadget/udc/snps_udc_plat.c
254
struct udc *udc;
drivers/usb/gadget/udc/snps_udc_plat.c
256
udc = dev_get_drvdata(dev);
drivers/usb/gadget/udc/snps_udc_plat.c
257
stop_udc(udc);
drivers/usb/gadget/udc/snps_udc_plat.c
259
if (extcon_get_state(udc->edev, EXTCON_USB) > 0) {
drivers/usb/gadget/udc/snps_udc_plat.c
26
udc_enable_dev_setup_interrupts(udc);
drivers/usb/gadget/udc/snps_udc_plat.c
260
dev_dbg(udc->dev, "device -> idle\n");
drivers/usb/gadget/udc/snps_udc_plat.c
261
stop_udc(udc);
drivers/usb/gadget/udc/snps_udc_plat.c
263
phy_power_off(udc->udc_phy);
drivers/usb/gadget/udc/snps_udc_plat.c
264
phy_exit(udc->udc_phy);
drivers/usb/gadget/udc/snps_udc_plat.c
27
udc_basic_init(udc);
drivers/usb/gadget/udc/snps_udc_plat.c
271
struct udc *udc;
drivers/usb/gadget/udc/snps_udc_plat.c
274
udc = dev_get_drvdata(dev);
drivers/usb/gadget/udc/snps_udc_plat.c
276
ret = phy_init(udc->udc_phy);
drivers/usb/gadget/udc/snps_udc_plat.c
278
dev_err(udc->dev, "UDC phy init failure");
drivers/usb/gadget/udc/snps_udc_plat.c
28
udc->connected = 1;
drivers/usb/gadget/udc/snps_udc_plat.c
282
ret = phy_power_on(udc->udc_phy);
drivers/usb/gadget/udc/snps_udc_plat.c
284
dev_err(udc->dev, "UDC phy power on failure");
drivers/usb/gadget/udc/snps_udc_plat.c
285
phy_exit(udc->udc_phy);
drivers/usb/gadget/udc/snps_udc_plat.c
289
if (extcon_get_state(udc->edev, EXTCON_USB) > 0) {
drivers/usb/gadget/udc/snps_udc_plat.c
290
dev_dbg(udc->dev, "idle -> device\n");
drivers/usb/gadget/udc/snps_udc_plat.c
291
start_udc(udc);
drivers/usb/gadget/udc/snps_udc_plat.c
32
static void stop_udc(struct udc *udc)
drivers/usb/gadget/udc/snps_udc_plat.c
37
spin_lock(&udc->lock);
drivers/usb/gadget/udc/snps_udc_plat.c
40
reg = readl(&udc->regs->ctl);
drivers/usb/gadget/udc/snps_udc_plat.c
42
writel(reg, &udc->regs->ctl);
drivers/usb/gadget/udc/snps_udc_plat.c
44
reg = readl(&udc->regs->ctl);
drivers/usb/gadget/udc/snps_udc_plat.c
46
writel(reg, &udc->regs->ctl);
drivers/usb/gadget/udc/snps_udc_plat.c
47
dev_dbg(udc->dev, "ep rx queue flushed\n");
drivers/usb/gadget/udc/snps_udc_plat.c
52
udc_mask_unused_interrupts(udc);
drivers/usb/gadget/udc/snps_udc_plat.c
55
if (udc->driver) {
drivers/usb/gadget/udc/snps_udc_plat.c
56
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/snps_udc_plat.c
57
udc->driver->disconnect(&udc->gadget);
drivers/usb/gadget/udc/snps_udc_plat.c
58
spin_lock(&udc->lock);
drivers/usb/gadget/udc/snps_udc_plat.c
62
empty_req_queue(&udc->ep[tmp]);
drivers/usb/gadget/udc/snps_udc_plat.c
64
udc->connected = 0;
drivers/usb/gadget/udc/snps_udc_plat.c
66
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/snps_udc_plat.c
67
dev_info(udc->dev, "Device disconnected\n");
drivers/usb/gadget/udc/snps_udc_plat.c
72
struct udc *udc;
drivers/usb/gadget/udc/snps_udc_plat.c
74
udc = container_of(to_delayed_work(work),
drivers/usb/gadget/udc/snps_udc_plat.c
75
struct udc, drd_work);
drivers/usb/gadget/udc/snps_udc_plat.c
77
if (udc->conn_type) {
drivers/usb/gadget/udc/snps_udc_plat.c
78
dev_dbg(udc->dev, "idle -> device\n");
drivers/usb/gadget/udc/snps_udc_plat.c
79
start_udc(udc);
drivers/usb/gadget/udc/snps_udc_plat.c
81
dev_dbg(udc->dev, "device -> idle\n");
drivers/usb/gadget/udc/snps_udc_plat.c
82
stop_udc(udc);
drivers/usb/gadget/udc/snps_udc_plat.c
89
struct udc *udc = container_of(self, struct udc, nb);
drivers/usb/gadget/udc/snps_udc_plat.c
91
dev_dbg(udc->dev, "%s: event: %lu\n", __func__, event);
drivers/usb/gadget/udc/snps_udc_plat.c
93
udc->conn_type = event;
drivers/usb/gadget/udc/snps_udc_plat.c
95
schedule_delayed_work(&udc->drd_work, 0);
drivers/usb/gadget/udc/udc-xilinx.c
1003
struct xusb_udc *udc = ep0->udc;
drivers/usb/gadget/udc/udc-xilinx.c
1007
if (!udc->driver || udc->gadget.speed == USB_SPEED_UNKNOWN) {
drivers/usb/gadget/udc/udc-xilinx.c
1008
dev_dbg(udc->dev, "%s, bogus device state\n", __func__);
drivers/usb/gadget/udc/udc-xilinx.c
1012
dev_dbg(udc->dev, "%s:ep0 busy\n", __func__);
drivers/usb/gadget/udc/udc-xilinx.c
1021
if (udc->setup.bRequestType & USB_DIR_IN) {
drivers/usb/gadget/udc/udc-xilinx.c
1025
udc->addr);
drivers/usb/gadget/udc/udc-xilinx.c
1029
udc->write_fn(udc->addr, XUSB_EP_BUF0COUNT_OFFSET, length);
drivers/usb/gadget/udc/udc-xilinx.c
1030
udc->write_fn(udc->addr, XUSB_BUFFREADY_OFFSET, 1);
drivers/usb/gadget/udc/udc-xilinx.c
1032
if (udc->setup.wLength) {
drivers/usb/gadget/udc/udc-xilinx.c
1034
udc->write_fn(udc->addr, XUSB_EP_BUF0COUNT_OFFSET, 0);
drivers/usb/gadget/udc/udc-xilinx.c
1035
udc->write_fn(udc->addr, XUSB_BUFFREADY_OFFSET, 1);
drivers/usb/gadget/udc/udc-xilinx.c
1037
xudc_wrstatus(udc);
drivers/usb/gadget/udc/udc-xilinx.c
1057
struct xusb_udc *udc = ep0->udc;
drivers/usb/gadget/udc/udc-xilinx.c
1061
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/udc-xilinx.c
1063
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/udc-xilinx.c
1081
struct xusb_udc *udc = ep->udc;
drivers/usb/gadget/udc/udc-xilinx.c
1086
dev_dbg(udc->dev, "%s: queuing request to disabled %s\n",
drivers/usb/gadget/udc/udc-xilinx.c
1091
if (!udc->driver || udc->gadget.speed == USB_SPEED_UNKNOWN) {
drivers/usb/gadget/udc/udc-xilinx.c
1092
dev_dbg(udc->dev, "%s, bogus device state\n", __func__);
drivers/usb/gadget/udc/udc-xilinx.c
1096
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/udc-xilinx.c
1101
if (udc->dma_enabled) {
drivers/usb/gadget/udc/udc-xilinx.c
1102
ret = usb_gadget_map_request(&udc->gadget, &req->usb_req,
drivers/usb/gadget/udc/udc-xilinx.c
1105
dev_dbg(udc->dev, "gadget_map failed ep%d\n",
drivers/usb/gadget/udc/udc-xilinx.c
1107
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/udc-xilinx.c
1114
dev_dbg(udc->dev, "xudc_write_fifo from ep_queue\n");
drivers/usb/gadget/udc/udc-xilinx.c
1118
dev_dbg(udc->dev, "xudc_read_fifo from ep_queue\n");
drivers/usb/gadget/udc/udc-xilinx.c
1127
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/udc-xilinx.c
1143
struct xusb_udc *udc = ep->udc;
drivers/usb/gadget/udc/udc-xilinx.c
1146
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/udc-xilinx.c
1155
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/udc-xilinx.c
1159
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/udc-xilinx.c
1220
struct xusb_udc *udc;
drivers/usb/gadget/udc/udc-xilinx.c
1226
udc = to_udc(gadget);
drivers/usb/gadget/udc/udc-xilinx.c
1227
frame = udc->read_fn(udc->addr + XUSB_FRAMENUM_OFFSET);
drivers/usb/gadget/udc/udc-xilinx.c
1239
struct xusb_udc *udc = to_udc(gadget);
drivers/usb/gadget/udc/udc-xilinx.c
1244
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/udc-xilinx.c
1247
if (!udc->remote_wkp)
drivers/usb/gadget/udc/udc-xilinx.c
1250
crtlreg = udc->read_fn(udc->addr + XUSB_CONTROL_OFFSET);
drivers/usb/gadget/udc/udc-xilinx.c
1253
udc->write_fn(udc->addr, XUSB_CONTROL_OFFSET, crtlreg);
drivers/usb/gadget/udc/udc-xilinx.c
1261
udc->write_fn(udc->addr, XUSB_CONTROL_OFFSET, crtlreg);
drivers/usb/gadget/udc/udc-xilinx.c
1264
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/udc-xilinx.c
1279
struct xusb_udc *udc = to_udc(gadget);
drivers/usb/gadget/udc/udc-xilinx.c
1283
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/udc-xilinx.c
1285
crtlreg = udc->read_fn(udc->addr + XUSB_CONTROL_OFFSET);
drivers/usb/gadget/udc/udc-xilinx.c
1291
udc->write_fn(udc->addr, XUSB_CONTROL_OFFSET, crtlreg);
drivers/usb/gadget/udc/udc-xilinx.c
1293
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/udc-xilinx.c
1302
static void xudc_eps_init(struct xusb_udc *udc)
drivers/usb/gadget/udc/udc-xilinx.c
1306
INIT_LIST_HEAD(&udc->gadget.ep_list);
drivers/usb/gadget/udc/udc-xilinx.c
1309
struct xusb_ep *ep = &udc->ep[ep_number];
drivers/usb/gadget/udc/udc-xilinx.c
1313
&udc->gadget.ep_list);
drivers/usb/gadget/udc/udc-xilinx.c
1334
ep->udc = udc;
drivers/usb/gadget/udc/udc-xilinx.c
1345
xudc_epconfig(ep, udc);
drivers/usb/gadget/udc/udc-xilinx.c
1356
static void xudc_stop_activity(struct xusb_udc *udc)
drivers/usb/gadget/udc/udc-xilinx.c
1362
ep = &udc->ep[i];
drivers/usb/gadget/udc/udc-xilinx.c
1377
struct xusb_udc *udc = to_udc(gadget);
drivers/usb/gadget/udc/udc-xilinx.c
1378
struct xusb_ep *ep0 = &udc->ep[XUSB_EP_NUMBER_ZERO];
drivers/usb/gadget/udc/udc-xilinx.c
1383
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/udc-xilinx.c
1385
if (udc->driver) {
drivers/usb/gadget/udc/udc-xilinx.c
1386
dev_err(udc->dev, "%s is already bound to %s\n",
drivers/usb/gadget/udc/udc-xilinx.c
1387
udc->gadget.name, udc->driver->driver.name);
drivers/usb/gadget/udc/udc-xilinx.c
1393
udc->driver = driver;
drivers/usb/gadget/udc/udc-xilinx.c
1394
udc->gadget.speed = driver->max_speed;
drivers/usb/gadget/udc/udc-xilinx.c
1400
udc->write_fn(udc->addr, XUSB_ADDRESS_OFFSET, 0);
drivers/usb/gadget/udc/udc-xilinx.c
1401
udc->remote_wkp = 0;
drivers/usb/gadget/udc/udc-xilinx.c
1403
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/udc-xilinx.c
1415
struct xusb_udc *udc = to_udc(gadget);
drivers/usb/gadget/udc/udc-xilinx.c
1418
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/udc-xilinx.c
142
struct xusb_udc *udc;
drivers/usb/gadget/udc/udc-xilinx.c
1420
udc->gadget.speed = USB_SPEED_UNKNOWN;
drivers/usb/gadget/udc/udc-xilinx.c
1421
udc->driver = NULL;
drivers/usb/gadget/udc/udc-xilinx.c
1424
udc->write_fn(udc->addr, XUSB_ADDRESS_OFFSET, 0);
drivers/usb/gadget/udc/udc-xilinx.c
1425
udc->remote_wkp = 0;
drivers/usb/gadget/udc/udc-xilinx.c
1427
xudc_stop_activity(udc);
drivers/usb/gadget/udc/udc-xilinx.c
1429
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/udc-xilinx.c
1446
static void xudc_clear_stall_all_ep(struct xusb_udc *udc)
drivers/usb/gadget/udc/udc-xilinx.c
1453
ep = &udc->ep[i];
drivers/usb/gadget/udc/udc-xilinx.c
1454
epcfgreg = udc->read_fn(udc->addr + ep->offset);
drivers/usb/gadget/udc/udc-xilinx.c
1456
udc->write_fn(udc->addr, ep->offset, epcfgreg);
drivers/usb/gadget/udc/udc-xilinx.c
1459
epcfgreg = udc->read_fn(udc->addr + ep->offset);
drivers/usb/gadget/udc/udc-xilinx.c
1461
udc->write_fn(udc->addr, ep->offset, epcfgreg);
drivers/usb/gadget/udc/udc-xilinx.c
1473
static void xudc_startup_handler(struct xusb_udc *udc, u32 intrstatus)
drivers/usb/gadget/udc/udc-xilinx.c
1479
dev_dbg(udc->dev, "Reset\n");
drivers/usb/gadget/udc/udc-xilinx.c
1482
udc->gadget.speed = USB_SPEED_HIGH;
drivers/usb/gadget/udc/udc-xilinx.c
1484
udc->gadget.speed = USB_SPEED_FULL;
drivers/usb/gadget/udc/udc-xilinx.c
1486
xudc_stop_activity(udc);
drivers/usb/gadget/udc/udc-xilinx.c
1487
xudc_clear_stall_all_ep(udc);
drivers/usb/gadget/udc/udc-xilinx.c
1488
udc->write_fn(udc->addr, XUSB_TESTMODE_OFFSET, 0);
drivers/usb/gadget/udc/udc-xilinx.c
1491
udc->write_fn(udc->addr, XUSB_ADDRESS_OFFSET, 0);
drivers/usb/gadget/udc/udc-xilinx.c
1492
udc->remote_wkp = 0;
drivers/usb/gadget/udc/udc-xilinx.c
1495
intrreg = udc->read_fn(udc->addr + XUSB_IER_OFFSET);
drivers/usb/gadget/udc/udc-xilinx.c
1498
udc->write_fn(udc->addr, XUSB_IER_OFFSET, intrreg);
drivers/usb/gadget/udc/udc-xilinx.c
1502
dev_dbg(udc->dev, "Suspend\n");
drivers/usb/gadget/udc/udc-xilinx.c
1505
intrreg = udc->read_fn(udc->addr + XUSB_IER_OFFSET);
drivers/usb/gadget/udc/udc-xilinx.c
1508
udc->write_fn(udc->addr, XUSB_IER_OFFSET, intrreg);
drivers/usb/gadget/udc/udc-xilinx.c
1510
udc->usb_state = USB_STATE_SUSPENDED;
drivers/usb/gadget/udc/udc-xilinx.c
1512
if (udc->driver->suspend) {
drivers/usb/gadget/udc/udc-xilinx.c
1513
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/udc-xilinx.c
1514
udc->driver->suspend(&udc->gadget);
drivers/usb/gadget/udc/udc-xilinx.c
1515
spin_lock(&udc->lock);
drivers/usb/gadget/udc/udc-xilinx.c
1519
bool condition = (udc->usb_state != USB_STATE_SUSPENDED);
drivers/usb/gadget/udc/udc-xilinx.c
1521
dev_WARN_ONCE(udc->dev, condition,
drivers/usb/gadget/udc/udc-xilinx.c
1524
dev_dbg(udc->dev, "Resume\n");
drivers/usb/gadget/udc/udc-xilinx.c
1527
intrreg = udc->read_fn(udc->addr + XUSB_IER_OFFSET);
drivers/usb/gadget/udc/udc-xilinx.c
1530
udc->write_fn(udc->addr, XUSB_IER_OFFSET, intrreg);
drivers/usb/gadget/udc/udc-xilinx.c
1532
udc->usb_state = 0;
drivers/usb/gadget/udc/udc-xilinx.c
1534
if (udc->driver->resume) {
drivers/usb/gadget/udc/udc-xilinx.c
1535
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/udc-xilinx.c
1536
udc->driver->resume(&udc->gadget);
drivers/usb/gadget/udc/udc-xilinx.c
1537
spin_lock(&udc->lock);
drivers/usb/gadget/udc/udc-xilinx.c
1542
dev_dbg(udc->dev, "Disconnect\n");
drivers/usb/gadget/udc/udc-xilinx.c
1545
intrreg = udc->read_fn(udc->addr + XUSB_IER_OFFSET);
drivers/usb/gadget/udc/udc-xilinx.c
1548
udc->write_fn(udc->addr, XUSB_IER_OFFSET, intrreg);
drivers/usb/gadget/udc/udc-xilinx.c
1550
if (udc->driver && udc->driver->disconnect) {
drivers/usb/gadget/udc/udc-xilinx.c
1551
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/udc-xilinx.c
1552
udc->driver->disconnect(&udc->gadget);
drivers/usb/gadget/udc/udc-xilinx.c
1553
spin_lock(&udc->lock);
drivers/usb/gadget/udc/udc-xilinx.c
1564
static void xudc_ep0_stall(struct xusb_udc *udc)
drivers/usb/gadget/udc/udc-xilinx.c
1567
struct xusb_ep *ep0 = &udc->ep[XUSB_EP_NUMBER_ZERO];
drivers/usb/gadget/udc/udc-xilinx.c
1569
epcfgreg = udc->read_fn(udc->addr + ep0->offset);
drivers/usb/gadget/udc/udc-xilinx.c
1571
udc->write_fn(udc->addr, ep0->offset, epcfgreg);
drivers/usb/gadget/udc/udc-xilinx.c
1580
static void xudc_setaddress(struct xusb_udc *udc)
drivers/usb/gadget/udc/udc-xilinx.c
1582
struct xusb_ep *ep0 = &udc->ep[0];
drivers/usb/gadget/udc/udc-xilinx.c
1583
struct xusb_req *req = udc->req;
drivers/usb/gadget/udc/udc-xilinx.c
1591
dev_err(udc->dev, "Can't respond to SET ADDRESS request\n");
drivers/usb/gadget/udc/udc-xilinx.c
1592
xudc_ep0_stall(udc);
drivers/usb/gadget/udc/udc-xilinx.c
1601
static void xudc_getstatus(struct xusb_udc *udc)
drivers/usb/gadget/udc/udc-xilinx.c
1603
struct xusb_ep *ep0 = &udc->ep[0];
drivers/usb/gadget/udc/udc-xilinx.c
1604
struct xusb_req *req = udc->req;
drivers/usb/gadget/udc/udc-xilinx.c
1612
switch (udc->setup.bRequestType & USB_RECIP_MASK) {
drivers/usb/gadget/udc/udc-xilinx.c
1616
if (udc->remote_wkp)
drivers/usb/gadget/udc/udc-xilinx.c
1622
epnum = le16_to_cpu(udc->setup.wIndex) & USB_ENDPOINT_NUMBER_MASK;
drivers/usb/gadget/udc/udc-xilinx.c
1625
target_ep = &udc->ep[epnum];
drivers/usb/gadget/udc/udc-xilinx.c
1626
epcfgreg = udc->read_fn(udc->addr + target_ep->offset);
drivers/usb/gadget/udc/udc-xilinx.c
1628
if (le16_to_cpu(udc->setup.wIndex) & USB_DIR_IN) {
drivers/usb/gadget/udc/udc-xilinx.c
1648
dev_err(udc->dev, "Can't respond to getstatus request\n");
drivers/usb/gadget/udc/udc-xilinx.c
1649
xudc_ep0_stall(udc);
drivers/usb/gadget/udc/udc-xilinx.c
1658
static void xudc_set_clear_feature(struct xusb_udc *udc)
drivers/usb/gadget/udc/udc-xilinx.c
1660
struct xusb_ep *ep0 = &udc->ep[0];
drivers/usb/gadget/udc/udc-xilinx.c
1661
struct xusb_req *req = udc->req;
drivers/usb/gadget/udc/udc-xilinx.c
1666
int flag = (udc->setup.bRequest == USB_REQ_SET_FEATURE ? 1 : 0);
drivers/usb/gadget/udc/udc-xilinx.c
1669
switch (udc->setup.bRequestType) {
drivers/usb/gadget/udc/udc-xilinx.c
1671
switch (le16_to_cpu(udc->setup.wValue)) {
drivers/usb/gadget/udc/udc-xilinx.c
1680
udc->remote_wkp = 1;
drivers/usb/gadget/udc/udc-xilinx.c
1682
udc->remote_wkp = 0;
drivers/usb/gadget/udc/udc-xilinx.c
1685
xudc_ep0_stall(udc);
drivers/usb/gadget/udc/udc-xilinx.c
1690
if (!udc->setup.wValue) {
drivers/usb/gadget/udc/udc-xilinx.c
1691
endpoint = le16_to_cpu(udc->setup.wIndex) &
drivers/usb/gadget/udc/udc-xilinx.c
1694
xudc_ep0_stall(udc);
drivers/usb/gadget/udc/udc-xilinx.c
1697
target_ep = &udc->ep[endpoint];
drivers/usb/gadget/udc/udc-xilinx.c
1698
outinbit = le16_to_cpu(udc->setup.wIndex) &
drivers/usb/gadget/udc/udc-xilinx.c
1704
xudc_ep0_stall(udc);
drivers/usb/gadget/udc/udc-xilinx.c
1707
epcfgreg = udc->read_fn(udc->addr + target_ep->offset);
drivers/usb/gadget/udc/udc-xilinx.c
1711
udc->write_fn(udc->addr,
drivers/usb/gadget/udc/udc-xilinx.c
1716
udc->write_fn(udc->addr,
drivers/usb/gadget/udc/udc-xilinx.c
1723
udc->write_fn(udc->addr,
drivers/usb/gadget/udc/udc-xilinx.c
1731
xudc_ep0_stall(udc);
drivers/usb/gadget/udc/udc-xilinx.c
1740
dev_err(udc->dev, "Can't respond to SET/CLEAR FEATURE\n");
drivers/usb/gadget/udc/udc-xilinx.c
1741
xudc_ep0_stall(udc);
drivers/usb/gadget/udc/udc-xilinx.c
1750
static void xudc_handle_setup(struct xusb_udc *udc)
drivers/usb/gadget/udc/udc-xilinx.c
1751
__must_hold(&udc->lock)
drivers/usb/gadget/udc/udc-xilinx.c
1753
struct xusb_ep *ep0 = &udc->ep[0];
drivers/usb/gadget/udc/udc-xilinx.c
1758
ep0rambase = (u32 __force *) (udc->addr + XUSB_SETUP_PKT_ADDR_OFFSET);
drivers/usb/gadget/udc/udc-xilinx.c
1761
udc->setup = setup;
drivers/usb/gadget/udc/udc-xilinx.c
1762
udc->setup.wValue = cpu_to_le16((u16 __force)setup.wValue);
drivers/usb/gadget/udc/udc-xilinx.c
1763
udc->setup.wIndex = cpu_to_le16((u16 __force)setup.wIndex);
drivers/usb/gadget/udc/udc-xilinx.c
1764
udc->setup.wLength = cpu_to_le16((u16 __force)setup.wLength);
drivers/usb/gadget/udc/udc-xilinx.c
1769
if (udc->setup.bRequestType & USB_DIR_IN) {
drivers/usb/gadget/udc/udc-xilinx.c
1771
udc->setupseqrx = STATUS_PHASE;
drivers/usb/gadget/udc/udc-xilinx.c
1772
udc->setupseqtx = DATA_PHASE;
drivers/usb/gadget/udc/udc-xilinx.c
1775
udc->setupseqrx = DATA_PHASE;
drivers/usb/gadget/udc/udc-xilinx.c
1776
udc->setupseqtx = STATUS_PHASE;
drivers/usb/gadget/udc/udc-xilinx.c
1779
switch (udc->setup.bRequest) {
drivers/usb/gadget/udc/udc-xilinx.c
1782
if ((udc->setup.bRequestType &
drivers/usb/gadget/udc/udc-xilinx.c
1786
xudc_getstatus(udc);
drivers/usb/gadget/udc/udc-xilinx.c
1790
if (udc->setup.bRequestType != (USB_DIR_OUT |
drivers/usb/gadget/udc/udc-xilinx.c
1793
xudc_setaddress(udc);
drivers/usb/gadget/udc/udc-xilinx.c
1798
if ((udc->setup.bRequestType & USB_TYPE_MASK)
drivers/usb/gadget/udc/udc-xilinx.c
1801
xudc_set_clear_feature(udc);
drivers/usb/gadget/udc/udc-xilinx.c
1807
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/udc-xilinx.c
1808
if (udc->driver->setup(&udc->gadget, &setup) < 0)
drivers/usb/gadget/udc/udc-xilinx.c
1809
xudc_ep0_stall(udc);
drivers/usb/gadget/udc/udc-xilinx.c
1810
spin_lock(&udc->lock);
drivers/usb/gadget/udc/udc-xilinx.c
1817
static void xudc_ep0_out(struct xusb_udc *udc)
drivers/usb/gadget/udc/udc-xilinx.c
1819
struct xusb_ep *ep0 = &udc->ep[0];
drivers/usb/gadget/udc/udc-xilinx.c
1827
switch (udc->setupseqrx) {
drivers/usb/gadget/udc/udc-xilinx.c
1833
udc->setupseqrx = SETUP_PHASE;
drivers/usb/gadget/udc/udc-xilinx.c
1834
udc->setupseqtx = SETUP_PHASE;
drivers/usb/gadget/udc/udc-xilinx.c
1839
bytes_to_rx = udc->read_fn(udc->addr +
drivers/usb/gadget/udc/udc-xilinx.c
1842
ep0rambase = (u8 __force *) (udc->addr +
drivers/usb/gadget/udc/udc-xilinx.c
1850
xudc_wrstatus(udc);
drivers/usb/gadget/udc/udc-xilinx.c
1853
udc->write_fn(udc->addr, XUSB_EP_BUF0COUNT_OFFSET, 0);
drivers/usb/gadget/udc/udc-xilinx.c
1854
udc->write_fn(udc->addr, XUSB_BUFFREADY_OFFSET, 1);
drivers/usb/gadget/udc/udc-xilinx.c
1866
static void xudc_ep0_in(struct xusb_udc *udc)
drivers/usb/gadget/udc/udc-xilinx.c
1868
struct xusb_ep *ep0 = &udc->ep[0];
drivers/usb/gadget/udc/udc-xilinx.c
1876
u8 test_mode = le16_to_cpu(udc->setup.wIndex) >> 8;
drivers/usb/gadget/udc/udc-xilinx.c
1881
switch (udc->setupseqtx) {
drivers/usb/gadget/udc/udc-xilinx.c
1883
switch (udc->setup.bRequest) {
drivers/usb/gadget/udc/udc-xilinx.c
1886
udc->write_fn(udc->addr, XUSB_ADDRESS_OFFSET,
drivers/usb/gadget/udc/udc-xilinx.c
1887
le16_to_cpu(udc->setup.wValue));
drivers/usb/gadget/udc/udc-xilinx.c
1890
if (udc->setup.bRequestType ==
drivers/usb/gadget/udc/udc-xilinx.c
1892
if (le16_to_cpu(udc->setup.wValue) ==
drivers/usb/gadget/udc/udc-xilinx.c
1894
udc->write_fn(udc->addr,
drivers/usb/gadget/udc/udc-xilinx.c
1910
epcfgreg = udc->read_fn(udc->addr + ep0->offset);
drivers/usb/gadget/udc/udc-xilinx.c
1912
udc->write_fn(udc->addr, ep0->offset, epcfgreg);
drivers/usb/gadget/udc/udc-xilinx.c
1913
udc->setupseqtx = STATUS_PHASE;
drivers/usb/gadget/udc/udc-xilinx.c
1918
ep0rambase = (u8 __force *) (udc->addr +
drivers/usb/gadget/udc/udc-xilinx.c
1924
udc->write_fn(udc->addr, XUSB_EP_BUF0COUNT_OFFSET, count);
drivers/usb/gadget/udc/udc-xilinx.c
1925
udc->write_fn(udc->addr, XUSB_BUFFREADY_OFFSET, 1);
drivers/usb/gadget/udc/udc-xilinx.c
1939
static void xudc_ctrl_ep_handler(struct xusb_udc *udc, u32 intrstatus)
drivers/usb/gadget/udc/udc-xilinx.c
1943
xudc_handle_setup(udc);
drivers/usb/gadget/udc/udc-xilinx.c
1946
xudc_ep0_out(udc);
drivers/usb/gadget/udc/udc-xilinx.c
1948
xudc_ep0_in(udc);
drivers/usb/gadget/udc/udc-xilinx.c
1961
static void xudc_nonctrl_ep_handler(struct xusb_udc *udc, u8 epnum,
drivers/usb/gadget/udc/udc-xilinx.c
1968
ep = &udc->ep[epnum];
drivers/usb/gadget/udc/udc-xilinx.c
1995
struct xusb_udc *udc = _udc;
drivers/usb/gadget/udc/udc-xilinx.c
2002
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/udc-xilinx.c
2008
ier = udc->read_fn(udc->addr + XUSB_IER_OFFSET);
drivers/usb/gadget/udc/udc-xilinx.c
2010
udc->write_fn(udc->addr, XUSB_IER_OFFSET, ier);
drivers/usb/gadget/udc/udc-xilinx.c
2013
intrstatus = udc->read_fn(udc->addr + XUSB_STATUS_OFFSET);
drivers/usb/gadget/udc/udc-xilinx.c
2024
xudc_startup_handler(udc, intrstatus);
drivers/usb/gadget/udc/udc-xilinx.c
2030
ier = udc->read_fn(udc->addr + XUSB_IER_OFFSET);
drivers/usb/gadget/udc/udc-xilinx.c
2032
udc->write_fn(udc->addr, XUSB_IER_OFFSET, ier);
drivers/usb/gadget/udc/udc-xilinx.c
2035
xudc_ctrl_ep_handler(udc, intrstatus);
drivers/usb/gadget/udc/udc-xilinx.c
2044
xudc_nonctrl_ep_handler(udc, index,
drivers/usb/gadget/udc/udc-xilinx.c
2050
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/udc-xilinx.c
2064
struct xusb_udc *udc;
drivers/usb/gadget/udc/udc-xilinx.c
2070
udc = devm_kzalloc(&pdev->dev, sizeof(*udc), GFP_KERNEL);
drivers/usb/gadget/udc/udc-xilinx.c
2071
if (!udc)
drivers/usb/gadget/udc/udc-xilinx.c
2075
udc->req = devm_kzalloc(&pdev->dev, sizeof(struct xusb_req),
drivers/usb/gadget/udc/udc-xilinx.c
2077
if (!udc->req)
drivers/usb/gadget/udc/udc-xilinx.c
2084
udc->req->usb_req.buf = buff;
drivers/usb/gadget/udc/udc-xilinx.c
2087
udc->addr = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
drivers/usb/gadget/udc/udc-xilinx.c
2088
if (IS_ERR(udc->addr))
drivers/usb/gadget/udc/udc-xilinx.c
2089
return PTR_ERR(udc->addr);
drivers/usb/gadget/udc/udc-xilinx.c
2095
dev_name(&pdev->dev), udc);
drivers/usb/gadget/udc/udc-xilinx.c
2101
udc->dma_enabled = of_property_read_bool(np, "xlnx,has-builtin-dma");
drivers/usb/gadget/udc/udc-xilinx.c
2104
udc->gadget.ops = &xusb_udc_ops;
drivers/usb/gadget/udc/udc-xilinx.c
2105
udc->gadget.max_speed = USB_SPEED_HIGH;
drivers/usb/gadget/udc/udc-xilinx.c
2106
udc->gadget.speed = USB_SPEED_UNKNOWN;
drivers/usb/gadget/udc/udc-xilinx.c
2107
udc->gadget.ep0 = &udc->ep[XUSB_EP_NUMBER_ZERO].ep_usb;
drivers/usb/gadget/udc/udc-xilinx.c
2108
udc->gadget.name = driver_name;
drivers/usb/gadget/udc/udc-xilinx.c
2110
udc->clk = devm_clk_get(&pdev->dev, "s_axi_aclk");
drivers/usb/gadget/udc/udc-xilinx.c
2111
if (IS_ERR(udc->clk)) {
drivers/usb/gadget/udc/udc-xilinx.c
2112
if (PTR_ERR(udc->clk) != -ENOENT) {
drivers/usb/gadget/udc/udc-xilinx.c
2113
ret = PTR_ERR(udc->clk);
drivers/usb/gadget/udc/udc-xilinx.c
2122
udc->clk = NULL;
drivers/usb/gadget/udc/udc-xilinx.c
2125
ret = clk_prepare_enable(udc->clk);
drivers/usb/gadget/udc/udc-xilinx.c
2131
spin_lock_init(&udc->lock);
drivers/usb/gadget/udc/udc-xilinx.c
2134
udc->write_fn = xudc_write32_be;
drivers/usb/gadget/udc/udc-xilinx.c
2135
udc->read_fn = xudc_read32_be;
drivers/usb/gadget/udc/udc-xilinx.c
2136
udc->write_fn(udc->addr, XUSB_TESTMODE_OFFSET, USB_TEST_J);
drivers/usb/gadget/udc/udc-xilinx.c
2137
if ((udc->read_fn(udc->addr + XUSB_TESTMODE_OFFSET))
drivers/usb/gadget/udc/udc-xilinx.c
2139
udc->write_fn = xudc_write32;
drivers/usb/gadget/udc/udc-xilinx.c
2140
udc->read_fn = xudc_read32;
drivers/usb/gadget/udc/udc-xilinx.c
2142
udc->write_fn(udc->addr, XUSB_TESTMODE_OFFSET, 0);
drivers/usb/gadget/udc/udc-xilinx.c
2144
xudc_eps_init(udc);
drivers/usb/gadget/udc/udc-xilinx.c
2147
udc->write_fn(udc->addr, XUSB_ADDRESS_OFFSET, 0);
drivers/usb/gadget/udc/udc-xilinx.c
2149
ret = usb_add_gadget_udc(&pdev->dev, &udc->gadget);
drivers/usb/gadget/udc/udc-xilinx.c
2153
udc->dev = &udc->gadget.dev;
drivers/usb/gadget/udc/udc-xilinx.c
2161
udc->write_fn(udc->addr, XUSB_IER_OFFSET, ier);
drivers/usb/gadget/udc/udc-xilinx.c
2163
platform_set_drvdata(pdev, udc);
drivers/usb/gadget/udc/udc-xilinx.c
2166
driver_name, (u32)res->start, udc->addr,
drivers/usb/gadget/udc/udc-xilinx.c
2167
udc->dma_enabled ? "with DMA" : "without DMA");
drivers/usb/gadget/udc/udc-xilinx.c
2172
clk_disable_unprepare(udc->clk);
drivers/usb/gadget/udc/udc-xilinx.c
2184
struct xusb_udc *udc = platform_get_drvdata(pdev);
drivers/usb/gadget/udc/udc-xilinx.c
2186
usb_del_gadget_udc(&udc->gadget);
drivers/usb/gadget/udc/udc-xilinx.c
2187
clk_disable_unprepare(udc->clk);
drivers/usb/gadget/udc/udc-xilinx.c
2193
struct xusb_udc *udc;
drivers/usb/gadget/udc/udc-xilinx.c
2197
udc = dev_get_drvdata(dev);
drivers/usb/gadget/udc/udc-xilinx.c
2199
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/udc-xilinx.c
2201
crtlreg = udc->read_fn(udc->addr + XUSB_CONTROL_OFFSET);
drivers/usb/gadget/udc/udc-xilinx.c
2204
udc->write_fn(udc->addr, XUSB_CONTROL_OFFSET, crtlreg);
drivers/usb/gadget/udc/udc-xilinx.c
2206
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/udc-xilinx.c
2207
if (udc->driver && udc->driver->suspend)
drivers/usb/gadget/udc/udc-xilinx.c
2208
udc->driver->suspend(&udc->gadget);
drivers/usb/gadget/udc/udc-xilinx.c
2210
clk_disable(udc->clk);
drivers/usb/gadget/udc/udc-xilinx.c
2217
struct xusb_udc *udc;
drivers/usb/gadget/udc/udc-xilinx.c
2222
udc = dev_get_drvdata(dev);
drivers/usb/gadget/udc/udc-xilinx.c
2224
ret = clk_enable(udc->clk);
drivers/usb/gadget/udc/udc-xilinx.c
2228
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/udc-xilinx.c
2230
crtlreg = udc->read_fn(udc->addr + XUSB_CONTROL_OFFSET);
drivers/usb/gadget/udc/udc-xilinx.c
2233
udc->write_fn(udc->addr, XUSB_CONTROL_OFFSET, crtlreg);
drivers/usb/gadget/udc/udc-xilinx.c
2235
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/udc-xilinx.c
259
static void xudc_wrstatus(struct xusb_udc *udc)
drivers/usb/gadget/udc/udc-xilinx.c
261
struct xusb_ep *ep0 = &udc->ep[XUSB_EP_NUMBER_ZERO];
drivers/usb/gadget/udc/udc-xilinx.c
264
epcfgreg = udc->read_fn(udc->addr + ep0->offset)|
drivers/usb/gadget/udc/udc-xilinx.c
266
udc->write_fn(udc->addr, ep0->offset, epcfgreg);
drivers/usb/gadget/udc/udc-xilinx.c
267
udc->write_fn(udc->addr, ep0->offset + XUSB_EP_BUF0COUNT_OFFSET, 0);
drivers/usb/gadget/udc/udc-xilinx.c
268
udc->write_fn(udc->addr, XUSB_BUFFREADY_OFFSET, 1);
drivers/usb/gadget/udc/udc-xilinx.c
279
static void xudc_epconfig(struct xusb_ep *ep, struct xusb_udc *udc)
drivers/usb/gadget/udc/udc-xilinx.c
289
udc->write_fn(udc->addr, ep->offset, epcfgreg);
drivers/usb/gadget/udc/udc-xilinx.c
292
udc->write_fn(udc->addr, ep->offset + XUSB_EP_BUF0COUNT_OFFSET,
drivers/usb/gadget/udc/udc-xilinx.c
294
udc->write_fn(udc->addr, ep->offset + XUSB_EP_BUF1COUNT_OFFSET,
drivers/usb/gadget/udc/udc-xilinx.c
297
udc->write_fn(udc->addr, XUSB_BUFFREADY_OFFSET,
drivers/usb/gadget/udc/udc-xilinx.c
300
udc->write_fn(udc->addr, XUSB_BUFFREADY_OFFSET,
drivers/usb/gadget/udc/udc-xilinx.c
319
struct xusb_udc *udc = ep->udc;
drivers/usb/gadget/udc/udc-xilinx.c
329
udc->write_fn(udc->addr, XUSB_DMA_DSAR_ADDR_OFFSET, src);
drivers/usb/gadget/udc/udc-xilinx.c
330
udc->write_fn(udc->addr, XUSB_DMA_DDAR_ADDR_OFFSET, dst);
drivers/usb/gadget/udc/udc-xilinx.c
331
udc->write_fn(udc->addr, XUSB_DMA_LENGTH_OFFSET, length);
drivers/usb/gadget/udc/udc-xilinx.c
339
reg = udc->read_fn(udc->addr + XUSB_DMA_STATUS_OFFSET);
drivers/usb/gadget/udc/udc-xilinx.c
349
dev_err(udc->dev, "DMA timeout\n");
drivers/usb/gadget/udc/udc-xilinx.c
355
if ((udc->read_fn(udc->addr + XUSB_DMA_STATUS_OFFSET) &
drivers/usb/gadget/udc/udc-xilinx.c
357
dev_err(udc->dev, "DMA Error\n");
drivers/usb/gadget/udc/udc-xilinx.c
382
struct xusb_udc *udc = ep->udc;
drivers/usb/gadget/udc/udc-xilinx.c
386
dma_sync_single_for_device(udc->dev, src,
drivers/usb/gadget/udc/udc-xilinx.c
390
eprambase = (u32 __force *)(udc->addr + ep->rambase);
drivers/usb/gadget/udc/udc-xilinx.c
392
udc->write_fn(udc->addr, ep->offset +
drivers/usb/gadget/udc/udc-xilinx.c
394
udc->write_fn(udc->addr, XUSB_DMA_CONTROL_OFFSET,
drivers/usb/gadget/udc/udc-xilinx.c
400
eprambase = (u32 __force *)(udc->addr + ep->rambase +
drivers/usb/gadget/udc/udc-xilinx.c
403
udc->write_fn(udc->addr, ep->offset +
drivers/usb/gadget/udc/udc-xilinx.c
405
udc->write_fn(udc->addr, XUSB_DMA_CONTROL_OFFSET,
drivers/usb/gadget/udc/udc-xilinx.c
436
struct xusb_udc *udc = ep->udc;
drivers/usb/gadget/udc/udc-xilinx.c
441
eprambase = (u32 __force *)(udc->addr + ep->rambase);
drivers/usb/gadget/udc/udc-xilinx.c
443
udc->write_fn(udc->addr, XUSB_DMA_CONTROL_OFFSET,
drivers/usb/gadget/udc/udc-xilinx.c
450
eprambase = (u32 __force *)(udc->addr +
drivers/usb/gadget/udc/udc-xilinx.c
453
udc->write_fn(udc->addr, XUSB_DMA_CONTROL_OFFSET,
drivers/usb/gadget/udc/udc-xilinx.c
485
struct xusb_udc *udc = ep->udc;
drivers/usb/gadget/udc/udc-xilinx.c
488
if (udc->dma_enabled) {
drivers/usb/gadget/udc/udc-xilinx.c
498
eprambase = (u32 __force *)(udc->addr + ep->rambase);
drivers/usb/gadget/udc/udc-xilinx.c
502
udc->write_fn(udc->addr, ep->offset +
drivers/usb/gadget/udc/udc-xilinx.c
511
udc->write_fn(udc->addr, XUSB_BUFFREADY_OFFSET,
drivers/usb/gadget/udc/udc-xilinx.c
517
eprambase = (u32 __force *)(udc->addr + ep->rambase +
drivers/usb/gadget/udc/udc-xilinx.c
522
udc->write_fn(udc->addr, ep->offset +
drivers/usb/gadget/udc/udc-xilinx.c
531
udc->write_fn(udc->addr, XUSB_BUFFREADY_OFFSET,
drivers/usb/gadget/udc/udc-xilinx.c
553
struct xusb_udc *udc = ep->udc;
drivers/usb/gadget/udc/udc-xilinx.c
563
dev_dbg(udc->dev, "%s done %p, status %d\n",
drivers/usb/gadget/udc/udc-xilinx.c
566
if (udc->dma_enabled && ep->epnumber && req->usb_req.length)
drivers/usb/gadget/udc/udc-xilinx.c
567
usb_gadget_unmap_request(&udc->gadget, &req->usb_req,
drivers/usb/gadget/udc/udc-xilinx.c
571
spin_unlock(&udc->lock);
drivers/usb/gadget/udc/udc-xilinx.c
573
spin_lock(&udc->lock);
drivers/usb/gadget/udc/udc-xilinx.c
594
struct xusb_udc *udc = ep->udc;
drivers/usb/gadget/udc/udc-xilinx.c
597
dev_dbg(udc->dev, "Packet NOT ready!\n");
drivers/usb/gadget/udc/udc-xilinx.c
606
count = udc->read_fn(udc->addr + ep->offset + bufoffset);
drivers/usb/gadget/udc/udc-xilinx.c
623
dev_dbg(udc->dev, "%s overflow %d\n",
drivers/usb/gadget/udc/udc-xilinx.c
634
dev_dbg(udc->dev, "read %s, %d bytes%s req %p %d/%d\n",
drivers/usb/gadget/udc/udc-xilinx.c
640
if (udc->dma_enabled && req->usb_req.length)
drivers/usb/gadget/udc/udc-xilinx.c
641
dma_sync_single_for_cpu(udc->dev,
drivers/usb/gadget/udc/udc-xilinx.c
654
dev_dbg(udc->dev, "receive busy\n");
drivers/usb/gadget/udc/udc-xilinx.c
682
struct xusb_udc *udc = ep->udc;
drivers/usb/gadget/udc/udc-xilinx.c
705
dev_dbg(udc->dev, "%s: wrote %s %d bytes%s%s %d left %p\n",
drivers/usb/gadget/udc/udc-xilinx.c
716
dev_dbg(udc->dev, "Send busy\n");
drivers/usb/gadget/udc/udc-xilinx.c
754
struct xusb_udc *udc;
drivers/usb/gadget/udc/udc-xilinx.c
762
udc = ep->udc;
drivers/usb/gadget/udc/udc-xilinx.c
765
dev_dbg(udc->dev, "requests pending can't halt\n");
drivers/usb/gadget/udc/udc-xilinx.c
770
dev_dbg(udc->dev, "HW buffers busy can't halt\n");
drivers/usb/gadget/udc/udc-xilinx.c
774
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/udc-xilinx.c
778
epcfgreg = udc->read_fn(udc->addr + ep->offset);
drivers/usb/gadget/udc/udc-xilinx.c
780
udc->write_fn(udc->addr, ep->offset, epcfgreg);
drivers/usb/gadget/udc/udc-xilinx.c
783
epcfgreg = udc->read_fn(udc->addr + ep->offset);
drivers/usb/gadget/udc/udc-xilinx.c
785
udc->write_fn(udc->addr, ep->offset, epcfgreg);
drivers/usb/gadget/udc/udc-xilinx.c
788
epcfgreg = udc->read_fn(ep->udc->addr + ep->offset);
drivers/usb/gadget/udc/udc-xilinx.c
790
udc->write_fn(udc->addr, ep->offset, epcfgreg);
drivers/usb/gadget/udc/udc-xilinx.c
794
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/udc-xilinx.c
808
struct xusb_udc *udc = ep->udc;
drivers/usb/gadget/udc/udc-xilinx.c
824
dev_dbg(udc->dev, "only one control endpoint\n");
drivers/usb/gadget/udc/udc-xilinx.c
832
dev_dbg(udc->dev, "bogus maxpacket %d\n", maxpacket);
drivers/usb/gadget/udc/udc-xilinx.c
841
dev_dbg(udc->dev, "bogus maxpacket %d\n", maxpacket);
drivers/usb/gadget/udc/udc-xilinx.c
855
xudc_epconfig(ep, udc);
drivers/usb/gadget/udc/udc-xilinx.c
857
dev_dbg(udc->dev, "Enable Endpoint %d max pkt is %d\n",
drivers/usb/gadget/udc/udc-xilinx.c
861
epcfg = udc->read_fn(udc->addr + ep->offset);
drivers/usb/gadget/udc/udc-xilinx.c
863
udc->write_fn(udc->addr, ep->offset, epcfg);
drivers/usb/gadget/udc/udc-xilinx.c
868
ier = udc->read_fn(udc->addr + XUSB_IER_OFFSET);
drivers/usb/gadget/udc/udc-xilinx.c
870
udc->write_fn(udc->addr, XUSB_IER_OFFSET, ier);
drivers/usb/gadget/udc/udc-xilinx.c
874
udc->write_fn(udc->addr, XUSB_BUFFREADY_OFFSET,
drivers/usb/gadget/udc/udc-xilinx.c
877
udc->write_fn(udc->addr, XUSB_BUFFREADY_OFFSET,
drivers/usb/gadget/udc/udc-xilinx.c
897
struct xusb_udc *udc;
drivers/usb/gadget/udc/udc-xilinx.c
907
udc = ep->udc;
drivers/usb/gadget/udc/udc-xilinx.c
909
if (!udc->driver || udc->gadget.speed == USB_SPEED_UNKNOWN) {
drivers/usb/gadget/udc/udc-xilinx.c
910
dev_dbg(udc->dev, "bogus device state\n");
drivers/usb/gadget/udc/udc-xilinx.c
914
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/udc-xilinx.c
916
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/gadget/udc/udc-xilinx.c
932
struct xusb_udc *udc;
drivers/usb/gadget/udc/udc-xilinx.c
940
udc = ep->udc;
drivers/usb/gadget/udc/udc-xilinx.c
942
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/gadget/udc/udc-xilinx.c
950
dev_dbg(udc->dev, "USB Ep %d disable\n", ep->epnumber);
drivers/usb/gadget/udc/udc-xilinx.c
952
epcfg = udc->read_fn(udc->addr + ep->offset);
drivers/usb/gadget/udc/udc-xilinx.c
954
udc->write_fn(udc->addr, ep->offset, epcfg);
drivers/usb/gadget/udc/udc-xilinx.c
956
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/isp1760/isp1760-core.c
112
struct isp1760_udc *udc = &isp->udc;
drivers/usb/isp1760/isp1760-core.c
115
isp1760_field_set(udc->fields, HW_DP_PULLUP);
drivers/usb/isp1760/isp1760-core.c
117
isp1760_field_set(udc->fields, HW_DP_PULLUP_CLEAR);
drivers/usb/isp1760/isp1760-core.c
32
struct isp1760_udc *udc = &isp->udc;
drivers/usb/isp1760/isp1760-core.c
490
struct isp1760_udc *udc;
drivers/usb/isp1760/isp1760-core.c
514
udc = &isp->udc;
drivers/usb/isp1760/isp1760-core.c
517
udc->is_isp1763 = !!(devflags & ISP1760_FLAG_ISP1763);
drivers/usb/isp1760/isp1760-core.c
556
udc->regs = devm_regmap_init_mmio(dev, hcd->base, dc_regmap);
drivers/usb/isp1760/isp1760-core.c
557
if (IS_ERR(udc->regs))
drivers/usb/isp1760/isp1760-core.c
558
return PTR_ERR(udc->regs);
drivers/usb/isp1760/isp1760-core.c
561
f = devm_regmap_field_alloc(dev, udc->regs, dc_reg_fields[i]);
drivers/usb/isp1760/isp1760-core.c
565
udc->fields[i] = f;
drivers/usb/isp1760/isp1760-core.c
77
isp1760_reg_write(udc->regs, ISP176x_DC_MODE, 0);
drivers/usb/isp1760/isp1760-core.h
50
struct isp1760_udc udc;
drivers/usb/isp1760/isp1760-udc.c
1005
struct isp1760_udc *udc = uep->udc;
drivers/usb/isp1760/isp1760-udc.c
1015
if (WARN_ON(udc->ep0_state == ISP1760_CTRL_SETUP || !stall ||
drivers/usb/isp1760/isp1760-udc.c
102
static bool isp1760_udc_is_set(struct isp1760_udc *udc, u32 field)
drivers/usb/isp1760/isp1760-udc.c
1022
dev_dbg(udc->isp->dev, "%s: ep%02x is disabled\n", __func__,
drivers/usb/isp1760/isp1760-udc.c
1030
dev_dbg(udc->isp->dev,
drivers/usb/isp1760/isp1760-udc.c
104
return !!isp1760_udc_read(udc, field);
drivers/usb/isp1760/isp1760-udc.c
1046
udc->ep0_state = ISP1760_CTRL_SETUP;
drivers/usb/isp1760/isp1760-udc.c
1064
dev_dbg(uep->udc->isp->dev, "%s: %s halt on ep%02x\n", __func__,
drivers/usb/isp1760/isp1760-udc.c
1067
spin_lock_irqsave(&uep->udc->lock, flags);
drivers/usb/isp1760/isp1760-udc.c
1069
spin_unlock_irqrestore(&uep->udc->lock, flags);
drivers/usb/isp1760/isp1760-udc.c
1080
dev_dbg(uep->udc->isp->dev, "%s: set wedge on ep%02x)\n", __func__,
drivers/usb/isp1760/isp1760-udc.c
1083
spin_lock_irqsave(&uep->udc->lock, flags);
drivers/usb/isp1760/isp1760-udc.c
1085
spin_unlock_irqrestore(&uep->udc->lock, flags);
drivers/usb/isp1760/isp1760-udc.c
1093
struct isp1760_udc *udc = uep->udc;
drivers/usb/isp1760/isp1760-udc.c
1096
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/isp1760/isp1760-udc.c
1098
isp1760_udc_select_ep(udc, uep);
drivers/usb/isp1760/isp1760-udc.c
110
static struct isp1760_ep *isp1760_udc_find_ep(struct isp1760_udc *udc,
drivers/usb/isp1760/isp1760-udc.c
1104
isp1760_udc_set(udc, DC_CLBUF);
drivers/usb/isp1760/isp1760-udc.c
1105
isp1760_udc_set(udc, DC_CLBUF);
drivers/usb/isp1760/isp1760-udc.c
1107
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/isp1760/isp1760-udc.c
1127
static void isp1760_udc_connect(struct isp1760_udc *udc)
drivers/usb/isp1760/isp1760-udc.c
1129
usb_gadget_set_state(&udc->gadget, USB_STATE_POWERED);
drivers/usb/isp1760/isp1760-udc.c
1130
mod_timer(&udc->vbus_timer, jiffies + ISP1760_VBUS_POLL_INTERVAL);
drivers/usb/isp1760/isp1760-udc.c
1134
static void isp1760_udc_disconnect(struct isp1760_udc *udc)
drivers/usb/isp1760/isp1760-udc.c
1136
if (udc->gadget.state < USB_STATE_POWERED)
drivers/usb/isp1760/isp1760-udc.c
1139
dev_dbg(udc->isp->dev, "Device disconnected in state %u\n",
drivers/usb/isp1760/isp1760-udc.c
1140
udc->gadget.state);
drivers/usb/isp1760/isp1760-udc.c
1142
udc->gadget.speed = USB_SPEED_UNKNOWN;
drivers/usb/isp1760/isp1760-udc.c
1143
usb_gadget_set_state(&udc->gadget, USB_STATE_ATTACHED);
drivers/usb/isp1760/isp1760-udc.c
1145
if (udc->driver->disconnect)
drivers/usb/isp1760/isp1760-udc.c
1146
udc->driver->disconnect(&udc->gadget);
drivers/usb/isp1760/isp1760-udc.c
1148
timer_delete(&udc->vbus_timer);
drivers/usb/isp1760/isp1760-udc.c
1153
static void isp1760_udc_init_hw(struct isp1760_udc *udc)
drivers/usb/isp1760/isp1760-udc.c
1155
u32 intconf = udc->is_isp1763 ? ISP1763_DC_INTCONF : ISP176x_DC_INTCONF;
drivers/usb/isp1760/isp1760-udc.c
1156
u32 intena = udc->is_isp1763 ? ISP1763_DC_INTENABLE :
drivers/usb/isp1760/isp1760-udc.c
116
return &udc->ep[0];
drivers/usb/isp1760/isp1760-udc.c
1168
isp1760_reg_write(udc->regs, intconf,
drivers/usb/isp1760/isp1760-udc.c
1172
isp1760_reg_write(udc->regs, intena, DC_IEPRXTX(7) |
drivers/usb/isp1760/isp1760-udc.c
118
for (i = 1; i < ARRAY_SIZE(udc->ep); ++i) {
drivers/usb/isp1760/isp1760-udc.c
1180
if (udc->connected)
drivers/usb/isp1760/isp1760-udc.c
1181
isp1760_set_pullup(udc->isp, true);
drivers/usb/isp1760/isp1760-udc.c
1183
isp1760_udc_set(udc, DC_DEVEN);
drivers/usb/isp1760/isp1760-udc.c
1186
static void isp1760_udc_reset(struct isp1760_udc *udc)
drivers/usb/isp1760/isp1760-udc.c
119
if (udc->ep[i].addr == index)
drivers/usb/isp1760/isp1760-udc.c
1190
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/isp1760/isp1760-udc.c
1196
isp1760_udc_init_hw(udc);
drivers/usb/isp1760/isp1760-udc.c
1198
udc->ep0_state = ISP1760_CTRL_SETUP;
drivers/usb/isp1760/isp1760-udc.c
1199
udc->gadget.speed = USB_SPEED_FULL;
drivers/usb/isp1760/isp1760-udc.c
120
return udc->ep[i].desc ? &udc->ep[i] : NULL;
drivers/usb/isp1760/isp1760-udc.c
1201
usb_gadget_udc_reset(&udc->gadget, udc->driver);
drivers/usb/isp1760/isp1760-udc.c
1203
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/isp1760/isp1760-udc.c
1206
static void isp1760_udc_suspend(struct isp1760_udc *udc)
drivers/usb/isp1760/isp1760-udc.c
1208
if (udc->gadget.state < USB_STATE_DEFAULT)
drivers/usb/isp1760/isp1760-udc.c
1211
if (udc->driver->suspend)
drivers/usb/isp1760/isp1760-udc.c
1212
udc->driver->suspend(&udc->gadget);
drivers/usb/isp1760/isp1760-udc.c
1215
static void isp1760_udc_resume(struct isp1760_udc *udc)
drivers/usb/isp1760/isp1760-udc.c
1217
if (udc->gadget.state < USB_STATE_DEFAULT)
drivers/usb/isp1760/isp1760-udc.c
1220
if (udc->driver->resume)
drivers/usb/isp1760/isp1760-udc.c
1221
udc->driver->resume(&udc->gadget);
drivers/usb/isp1760/isp1760-udc.c
1230
struct isp1760_udc *udc = gadget_to_udc(gadget);
drivers/usb/isp1760/isp1760-udc.c
1232
return isp1760_udc_read(udc, DC_FRAMENUM);
drivers/usb/isp1760/isp1760-udc.c
1237
struct isp1760_udc *udc = gadget_to_udc(gadget);
drivers/usb/isp1760/isp1760-udc.c
1239
dev_dbg(udc->isp->dev, "%s\n", __func__);
drivers/usb/isp1760/isp1760-udc.c
1246
struct isp1760_udc *udc = gadget_to_udc(gadget);
drivers/usb/isp1760/isp1760-udc.c
1249
udc->devstatus |= 1 << USB_DEVICE_SELF_POWERED;
drivers/usb/isp1760/isp1760-udc.c
1251
udc->devstatus &= ~(1 << USB_DEVICE_SELF_POWERED);
drivers/usb/isp1760/isp1760-udc.c
1258
struct isp1760_udc *udc = gadget_to_udc(gadget);
drivers/usb/isp1760/isp1760-udc.c
126
static void __isp1760_udc_select_ep(struct isp1760_udc *udc,
drivers/usb/isp1760/isp1760-udc.c
1260
isp1760_set_pullup(udc->isp, is_on);
drivers/usb/isp1760/isp1760-udc.c
1261
udc->connected = is_on;
drivers/usb/isp1760/isp1760-udc.c
1269
struct isp1760_udc *udc = gadget_to_udc(gadget);
drivers/usb/isp1760/isp1760-udc.c
1274
dev_err(udc->isp->dev, "Invalid gadget driver\n");
drivers/usb/isp1760/isp1760-udc.c
1278
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/isp1760/isp1760-udc.c
1280
if (udc->driver) {
drivers/usb/isp1760/isp1760-udc.c
1281
dev_err(udc->isp->dev, "UDC already has a gadget driver\n");
drivers/usb/isp1760/isp1760-udc.c
1282
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/isp1760/isp1760-udc.c
1286
udc->driver = driver;
drivers/usb/isp1760/isp1760-udc.c
1288
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/isp1760/isp1760-udc.c
129
isp1760_udc_write(udc, DC_ENDPIDX, ep->addr & USB_ENDPOINT_NUMBER_MASK);
drivers/usb/isp1760/isp1760-udc.c
1290
dev_dbg(udc->isp->dev, "starting UDC with driver %s\n",
drivers/usb/isp1760/isp1760-udc.c
1293
udc->devstatus = 0;
drivers/usb/isp1760/isp1760-udc.c
1294
udc->connected = true;
drivers/usb/isp1760/isp1760-udc.c
1296
usb_gadget_set_state(&udc->gadget, USB_STATE_ATTACHED);
drivers/usb/isp1760/isp1760-udc.c
1299
isp1760_udc_set(udc, DC_GLINTENA);
drivers/usb/isp1760/isp1760-udc.c
1301
isp1760_udc_init_hw(udc);
drivers/usb/isp1760/isp1760-udc.c
1303
dev_dbg(udc->isp->dev, "UDC started with driver %s\n",
drivers/usb/isp1760/isp1760-udc.c
1311
struct isp1760_udc *udc = gadget_to_udc(gadget);
drivers/usb/isp1760/isp1760-udc.c
1312
u32 mode_reg = udc->is_isp1763 ? ISP1763_DC_MODE : ISP176x_DC_MODE;
drivers/usb/isp1760/isp1760-udc.c
1315
dev_dbg(udc->isp->dev, "%s\n", __func__);
drivers/usb/isp1760/isp1760-udc.c
1317
timer_delete_sync(&udc->vbus_timer);
drivers/usb/isp1760/isp1760-udc.c
1319
isp1760_reg_write(udc->regs, mode_reg, 0);
drivers/usb/isp1760/isp1760-udc.c
132
isp1760_udc_set(udc, DC_EPDIR);
drivers/usb/isp1760/isp1760-udc.c
1321
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/isp1760/isp1760-udc.c
1322
udc->driver = NULL;
drivers/usb/isp1760/isp1760-udc.c
1323
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/isp1760/isp1760-udc.c
134
isp1760_udc_clear(udc, DC_EPDIR);
drivers/usb/isp1760/isp1760-udc.c
1341
static u32 isp1760_udc_irq_get_status(struct isp1760_udc *udc)
drivers/usb/isp1760/isp1760-udc.c
1345
if (udc->is_isp1763) {
drivers/usb/isp1760/isp1760-udc.c
1346
status = isp1760_reg_read(udc->regs, ISP1763_DC_INTERRUPT)
drivers/usb/isp1760/isp1760-udc.c
1347
& isp1760_reg_read(udc->regs, ISP1763_DC_INTENABLE);
drivers/usb/isp1760/isp1760-udc.c
1348
isp1760_reg_write(udc->regs, ISP1763_DC_INTERRUPT, status);
drivers/usb/isp1760/isp1760-udc.c
1350
status = isp1760_reg_read(udc->regs, ISP176x_DC_INTERRUPT)
drivers/usb/isp1760/isp1760-udc.c
1351
& isp1760_reg_read(udc->regs, ISP176x_DC_INTENABLE);
drivers/usb/isp1760/isp1760-udc.c
1352
isp1760_reg_write(udc->regs, ISP176x_DC_INTERRUPT, status);
drivers/usb/isp1760/isp1760-udc.c
1360
struct isp1760_udc *udc = dev;
drivers/usb/isp1760/isp1760-udc.c
1364
status = isp1760_udc_irq_get_status(udc);
drivers/usb/isp1760/isp1760-udc.c
1367
dev_dbg(udc->isp->dev, "%s(VBUS)\n", __func__);
drivers/usb/isp1760/isp1760-udc.c
1369
spin_lock(&udc->lock);
drivers/usb/isp1760/isp1760-udc.c
1370
isp1760_udc_connect(udc);
drivers/usb/isp1760/isp1760-udc.c
1371
spin_unlock(&udc->lock);
drivers/usb/isp1760/isp1760-udc.c
1375
dev_dbg(udc->isp->dev, "%s(BRST)\n", __func__);
drivers/usb/isp1760/isp1760-udc.c
1377
isp1760_udc_reset(udc);
drivers/usb/isp1760/isp1760-udc.c
1381
struct isp1760_ep *ep = &udc->ep[i*2];
drivers/usb/isp1760/isp1760-udc.c
1384
dev_dbg(udc->isp->dev, "%s(EPTX%u)\n", __func__, i);
drivers/usb/isp1760/isp1760-udc.c
1389
dev_dbg(udc->isp->dev, "%s(EPRX%u)\n", __func__, i);
drivers/usb/isp1760/isp1760-udc.c
1395
dev_dbg(udc->isp->dev, "%s(EP0SETUP)\n", __func__);
drivers/usb/isp1760/isp1760-udc.c
1397
isp1760_ep0_setup(udc);
drivers/usb/isp1760/isp1760-udc.c
1401
dev_dbg(udc->isp->dev, "%s(RESM)\n", __func__);
drivers/usb/isp1760/isp1760-udc.c
1402
isp1760_udc_resume(udc);
drivers/usb/isp1760/isp1760-udc.c
1406
dev_dbg(udc->isp->dev, "%s(SUSP)\n", __func__);
drivers/usb/isp1760/isp1760-udc.c
1408
spin_lock(&udc->lock);
drivers/usb/isp1760/isp1760-udc.c
1409
if (!isp1760_udc_is_set(udc, DC_VBUSSTAT))
drivers/usb/isp1760/isp1760-udc.c
1410
isp1760_udc_disconnect(udc);
drivers/usb/isp1760/isp1760-udc.c
1412
isp1760_udc_suspend(udc);
drivers/usb/isp1760/isp1760-udc.c
1413
spin_unlock(&udc->lock);
drivers/usb/isp1760/isp1760-udc.c
1417
dev_dbg(udc->isp->dev, "%s(HS_STA)\n", __func__);
drivers/usb/isp1760/isp1760-udc.c
1418
udc->gadget.speed = USB_SPEED_HIGH;
drivers/usb/isp1760/isp1760-udc.c
1426
struct isp1760_udc *udc = timer_container_of(udc, t, vbus_timer);
drivers/usb/isp1760/isp1760-udc.c
1429
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/isp1760/isp1760-udc.c
1431
if (!(isp1760_udc_is_set(udc, DC_VBUSSTAT)))
drivers/usb/isp1760/isp1760-udc.c
1432
isp1760_udc_disconnect(udc);
drivers/usb/isp1760/isp1760-udc.c
1433
else if (udc->gadget.state >= USB_STATE_POWERED)
drivers/usb/isp1760/isp1760-udc.c
1434
mod_timer(&udc->vbus_timer,
drivers/usb/isp1760/isp1760-udc.c
1437
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/isp1760/isp1760-udc.c
1444
static void isp1760_udc_init_eps(struct isp1760_udc *udc)
drivers/usb/isp1760/isp1760-udc.c
1448
INIT_LIST_HEAD(&udc->gadget.ep_list);
drivers/usb/isp1760/isp1760-udc.c
1450
for (i = 0; i < ARRAY_SIZE(udc->ep); ++i) {
drivers/usb/isp1760/isp1760-udc.c
1451
struct isp1760_ep *ep = &udc->ep[i];
drivers/usb/isp1760/isp1760-udc.c
1455
ep->udc = udc;
drivers/usb/isp1760/isp1760-udc.c
1480
udc->gadget.ep0 = &ep->ep;
drivers/usb/isp1760/isp1760-udc.c
1487
list_add_tail(&ep->ep.ep_list, &udc->gadget.ep_list);
drivers/usb/isp1760/isp1760-udc.c
149
static void isp1760_udc_select_ep(struct isp1760_udc *udc,
drivers/usb/isp1760/isp1760-udc.c
1497
static int isp1760_udc_init(struct isp1760_udc *udc)
drivers/usb/isp1760/isp1760-udc.c
1499
u32 mode_reg = udc->is_isp1763 ? ISP1763_DC_MODE : ISP176x_DC_MODE;
drivers/usb/isp1760/isp1760-udc.c
1509
isp1760_udc_write(udc, DC_SCRATCH, 0xbabe);
drivers/usb/isp1760/isp1760-udc.c
1510
chipid = isp1760_udc_read(udc, DC_CHIP_ID_HIGH) << 16;
drivers/usb/isp1760/isp1760-udc.c
1511
chipid |= isp1760_udc_read(udc, DC_CHIP_ID_LOW);
drivers/usb/isp1760/isp1760-udc.c
1512
scratch = isp1760_udc_read(udc, DC_SCRATCH);
drivers/usb/isp1760/isp1760-udc.c
1515
dev_err(udc->isp->dev,
drivers/usb/isp1760/isp1760-udc.c
152
__isp1760_udc_select_ep(udc, ep, ep->addr & USB_ENDPOINT_DIR_MASK);
drivers/usb/isp1760/isp1760-udc.c
1523
dev_err(udc->isp->dev, "udc: invalid chip ID 0x%08x\n", chipid);
drivers/usb/isp1760/isp1760-udc.c
1528
isp1760_udc_set(udc, DC_SFRESET);
drivers/usb/isp1760/isp1760-udc.c
1530
isp1760_reg_write(udc->regs, mode_reg, 0);
drivers/usb/isp1760/isp1760-udc.c
1539
struct isp1760_udc *udc = &isp->udc;
drivers/usb/isp1760/isp1760-udc.c
1542
udc->irq = -1;
drivers/usb/isp1760/isp1760-udc.c
1543
udc->isp = isp;
drivers/usb/isp1760/isp1760-udc.c
1545
spin_lock_init(&udc->lock);
drivers/usb/isp1760/isp1760-udc.c
1546
timer_setup(&udc->vbus_timer, isp1760_udc_vbus_poll, 0);
drivers/usb/isp1760/isp1760-udc.c
1548
ret = isp1760_udc_init(udc);
drivers/usb/isp1760/isp1760-udc.c
1552
udc->irqname = kasprintf(GFP_KERNEL, "%s (udc)", dev_name(isp->dev));
drivers/usb/isp1760/isp1760-udc.c
1553
if (!udc->irqname)
drivers/usb/isp1760/isp1760-udc.c
1557
udc->irqname, udc);
drivers/usb/isp1760/isp1760-udc.c
1561
udc->irq = irq;
drivers/usb/isp1760/isp1760-udc.c
1568
udc->gadget.ops = &isp1760_udc_ops;
drivers/usb/isp1760/isp1760-udc.c
1569
udc->gadget.speed = USB_SPEED_UNKNOWN;
drivers/usb/isp1760/isp1760-udc.c
1570
udc->gadget.max_speed = USB_SPEED_HIGH;
drivers/usb/isp1760/isp1760-udc.c
1571
udc->gadget.name = "isp1761_udc";
drivers/usb/isp1760/isp1760-udc.c
1573
isp1760_udc_init_eps(udc);
drivers/usb/isp1760/isp1760-udc.c
1575
ret = usb_add_gadget_udc(isp->dev, &udc->gadget);
drivers/usb/isp1760/isp1760-udc.c
158
struct isp1760_udc *udc = ep->udc;
drivers/usb/isp1760/isp1760-udc.c
1582
if (udc->irq >= 0)
drivers/usb/isp1760/isp1760-udc.c
1583
free_irq(udc->irq, udc);
drivers/usb/isp1760/isp1760-udc.c
1584
kfree(udc->irqname);
drivers/usb/isp1760/isp1760-udc.c
1591
struct isp1760_udc *udc = &isp->udc;
drivers/usb/isp1760/isp1760-udc.c
1593
if (!udc->isp)
drivers/usb/isp1760/isp1760-udc.c
1596
usb_del_gadget_udc(&udc->gadget);
drivers/usb/isp1760/isp1760-udc.c
1598
free_irq(udc->irq, udc);
drivers/usb/isp1760/isp1760-udc.c
1599
kfree(udc->irqname);
drivers/usb/isp1760/isp1760-udc.c
166
isp1760_udc_clear(udc, DC_EPDIR);
drivers/usb/isp1760/isp1760-udc.c
168
isp1760_udc_set(udc, DC_EPDIR);
drivers/usb/isp1760/isp1760-udc.c
170
isp1760_udc_write(udc, DC_ENDPIDX, 1);
drivers/usb/isp1760/isp1760-udc.c
171
isp1760_udc_set(udc, DC_STATUS);
drivers/usb/isp1760/isp1760-udc.c
177
udc->ep0_state = ISP1760_CTRL_SETUP;
drivers/usb/isp1760/isp1760-udc.c
185
struct isp1760_udc *udc = ep->udc;
drivers/usb/isp1760/isp1760-udc.c
188
dev_dbg(ep->udc->isp->dev, "completing request %p with status %d\n",
drivers/usb/isp1760/isp1760-udc.c
195
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/isp1760/isp1760-udc.c
202
if (status == 0 && ep->addr == 0 && udc->ep0_dir == USB_DIR_OUT)
drivers/usb/isp1760/isp1760-udc.c
205
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/isp1760/isp1760-udc.c
210
struct isp1760_udc *udc = ep->udc;
drivers/usb/isp1760/isp1760-udc.c
213
dev_dbg(ep->udc->isp->dev, "%s(ep%02x)\n", __func__, ep->addr);
drivers/usb/isp1760/isp1760-udc.c
215
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/isp1760/isp1760-udc.c
218
__isp1760_udc_select_ep(udc, ep, USB_DIR_OUT);
drivers/usb/isp1760/isp1760-udc.c
219
isp1760_udc_set(udc, DC_STALL);
drivers/usb/isp1760/isp1760-udc.c
220
__isp1760_udc_select_ep(udc, ep, USB_DIR_IN);
drivers/usb/isp1760/isp1760-udc.c
221
isp1760_udc_set(udc, DC_STALL);
drivers/usb/isp1760/isp1760-udc.c
224
udc->ep0_state = ISP1760_CTRL_SETUP;
drivers/usb/isp1760/isp1760-udc.c
226
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/isp1760/isp1760-udc.c
237
struct isp1760_udc *udc = ep->udc;
drivers/usb/isp1760/isp1760-udc.c
242
isp1760_udc_select_ep(udc, ep);
drivers/usb/isp1760/isp1760-udc.c
243
len = isp1760_udc_read(udc, DC_BUFLEN);
drivers/usb/isp1760/isp1760-udc.c
245
dev_dbg(udc->isp->dev, "%s: received %u bytes (%u/%u done)\n",
drivers/usb/isp1760/isp1760-udc.c
259
isp1760_udc_set(udc, DC_CLBUF);
drivers/usb/isp1760/isp1760-udc.c
270
*buf = isp1760_udc_read_raw(udc, ISP176x_DC_DATAPORT);
drivers/usb/isp1760/isp1760-udc.c
272
*(u16 *)buf = isp1760_udc_read_raw16(udc, ISP176x_DC_DATAPORT);
drivers/usb/isp1760/isp1760-udc.c
281
dev_dbg(udc->isp->dev,
drivers/usb/isp1760/isp1760-udc.c
303
struct isp1760_udc *udc = ep->udc;
drivers/usb/isp1760/isp1760-udc.c
310
dev_dbg(udc->isp->dev, "%s: transferring %u bytes (%u/%u done)\n",
drivers/usb/isp1760/isp1760-udc.c
314
__isp1760_udc_select_ep(udc, ep, USB_DIR_IN);
drivers/usb/isp1760/isp1760-udc.c
317
isp1760_udc_write(udc, DC_BUFLEN, req->packet_size);
drivers/usb/isp1760/isp1760-udc.c
326
isp1760_udc_write_raw(udc, ISP176x_DC_DATAPORT, *buf);
drivers/usb/isp1760/isp1760-udc.c
328
isp1760_udc_write_raw16(udc, ISP176x_DC_DATAPORT, *(u16 *)buf);
drivers/usb/isp1760/isp1760-udc.c
331
isp1760_udc_set(udc, DC_DSEN);
drivers/usb/isp1760/isp1760-udc.c
333
isp1760_udc_set(udc, DC_VENDP);
drivers/usb/isp1760/isp1760-udc.c
338
struct isp1760_udc *udc = ep->udc;
drivers/usb/isp1760/isp1760-udc.c
342
spin_lock(&udc->lock);
drivers/usb/isp1760/isp1760-udc.c
344
if (ep->addr == 0 && udc->ep0_state != ISP1760_CTRL_DATA_OUT) {
drivers/usb/isp1760/isp1760-udc.c
345
spin_unlock(&udc->lock);
drivers/usb/isp1760/isp1760-udc.c
346
dev_dbg(udc->isp->dev, "%s: invalid ep0 state %u\n", __func__,
drivers/usb/isp1760/isp1760-udc.c
347
udc->ep0_state);
drivers/usb/isp1760/isp1760-udc.c
352
spin_unlock(&udc->lock);
drivers/usb/isp1760/isp1760-udc.c
353
dev_dbg(udc->isp->dev, "%s: ep%02x is disabled\n", __func__,
drivers/usb/isp1760/isp1760-udc.c
360
spin_unlock(&udc->lock);
drivers/usb/isp1760/isp1760-udc.c
361
dev_dbg(udc->isp->dev, "%s: ep%02x (%p) has no request queued\n",
drivers/usb/isp1760/isp1760-udc.c
370
spin_unlock(&udc->lock);
drivers/usb/isp1760/isp1760-udc.c
378
struct isp1760_udc *udc = ep->udc;
drivers/usb/isp1760/isp1760-udc.c
383
spin_lock(&udc->lock);
drivers/usb/isp1760/isp1760-udc.c
385
if (ep->addr == 0 && udc->ep0_state != ISP1760_CTRL_DATA_IN) {
drivers/usb/isp1760/isp1760-udc.c
386
spin_unlock(&udc->lock);
drivers/usb/isp1760/isp1760-udc.c
387
dev_dbg(udc->isp->dev, "TX IRQ: invalid endpoint state %u\n",
drivers/usb/isp1760/isp1760-udc.c
388
udc->ep0_state);
drivers/usb/isp1760/isp1760-udc.c
400
spin_unlock(&udc->lock);
drivers/usb/isp1760/isp1760-udc.c
404
spin_unlock(&udc->lock);
drivers/usb/isp1760/isp1760-udc.c
405
dev_dbg(udc->isp->dev, "%s: ep%02x has no request queued\n",
drivers/usb/isp1760/isp1760-udc.c
418
dev_dbg(udc->isp->dev,
drivers/usb/isp1760/isp1760-udc.c
450
spin_unlock(&udc->lock);
drivers/usb/isp1760/isp1760-udc.c
458
struct isp1760_udc *udc = ep->udc;
drivers/usb/isp1760/isp1760-udc.c
460
dev_dbg(udc->isp->dev, "%s: %s halt on ep%02x\n", __func__,
drivers/usb/isp1760/isp1760-udc.c
464
dev_dbg(udc->isp->dev, "%s: ep%02x is isochronous\n", __func__,
drivers/usb/isp1760/isp1760-udc.c
469
isp1760_udc_select_ep(udc, ep);
drivers/usb/isp1760/isp1760-udc.c
472
isp1760_udc_set(udc, DC_STALL);
drivers/usb/isp1760/isp1760-udc.c
474
isp1760_udc_clear(udc, DC_STALL);
drivers/usb/isp1760/isp1760-udc.c
478
__isp1760_udc_select_ep(udc, ep, USB_DIR_IN);
drivers/usb/isp1760/isp1760-udc.c
480
isp1760_udc_set(udc, DC_STALL);
drivers/usb/isp1760/isp1760-udc.c
482
isp1760_udc_clear(udc, DC_STALL);
drivers/usb/isp1760/isp1760-udc.c
485
isp1760_udc_clear(udc, DC_EPENABLE);
drivers/usb/isp1760/isp1760-udc.c
486
isp1760_udc_set(udc, DC_EPENABLE);
drivers/usb/isp1760/isp1760-udc.c
50
static u32 isp1760_udc_read(struct isp1760_udc *udc, u16 field)
drivers/usb/isp1760/isp1760-udc.c
513
static int isp1760_udc_get_status(struct isp1760_udc *udc,
drivers/usb/isp1760/isp1760-udc.c
52
return isp1760_field_read(udc->fields, field);
drivers/usb/isp1760/isp1760-udc.c
524
status = udc->devstatus;
drivers/usb/isp1760/isp1760-udc.c
532
ep = isp1760_udc_find_ep(udc, le16_to_cpu(req->wIndex));
drivers/usb/isp1760/isp1760-udc.c
545
isp1760_udc_set(udc, DC_EPDIR);
drivers/usb/isp1760/isp1760-udc.c
546
isp1760_udc_write(udc, DC_ENDPIDX, 1);
drivers/usb/isp1760/isp1760-udc.c
548
isp1760_udc_write(udc, DC_BUFLEN, 2);
drivers/usb/isp1760/isp1760-udc.c
55
static void isp1760_udc_write(struct isp1760_udc *udc, u16 field, u32 val)
drivers/usb/isp1760/isp1760-udc.c
550
isp1760_udc_write_raw16(udc, ISP176x_DC_DATAPORT, status);
drivers/usb/isp1760/isp1760-udc.c
552
isp1760_udc_set(udc, DC_DSEN);
drivers/usb/isp1760/isp1760-udc.c
554
dev_dbg(udc->isp->dev, "%s: status 0x%04x\n", __func__, status);
drivers/usb/isp1760/isp1760-udc.c
559
static int isp1760_udc_set_address(struct isp1760_udc *udc, u16 addr)
drivers/usb/isp1760/isp1760-udc.c
562
dev_dbg(udc->isp->dev, "invalid device address %u\n", addr);
drivers/usb/isp1760/isp1760-udc.c
566
if (udc->gadget.state != USB_STATE_DEFAULT &&
drivers/usb/isp1760/isp1760-udc.c
567
udc->gadget.state != USB_STATE_ADDRESS) {
drivers/usb/isp1760/isp1760-udc.c
568
dev_dbg(udc->isp->dev, "can't set address in state %u\n",
drivers/usb/isp1760/isp1760-udc.c
569
udc->gadget.state);
drivers/usb/isp1760/isp1760-udc.c
57
isp1760_field_write(udc->fields, field, val);
drivers/usb/isp1760/isp1760-udc.c
573
usb_gadget_set_state(&udc->gadget, addr ? USB_STATE_ADDRESS :
drivers/usb/isp1760/isp1760-udc.c
576
isp1760_udc_write(udc, DC_DEVADDR, addr);
drivers/usb/isp1760/isp1760-udc.c
577
isp1760_udc_set(udc, DC_DEVEN);
drivers/usb/isp1760/isp1760-udc.c
579
spin_lock(&udc->lock);
drivers/usb/isp1760/isp1760-udc.c
580
isp1760_udc_ctrl_send_status(&udc->ep[0], USB_DIR_OUT);
drivers/usb/isp1760/isp1760-udc.c
581
spin_unlock(&udc->lock);
drivers/usb/isp1760/isp1760-udc.c
586
static bool isp1760_ep0_setup_standard(struct isp1760_udc *udc,
drivers/usb/isp1760/isp1760-udc.c
593
return isp1760_udc_get_status(udc, req);
drivers/usb/isp1760/isp1760-udc.c
60
static u32 isp1760_udc_read_raw(struct isp1760_udc *udc, u16 reg)
drivers/usb/isp1760/isp1760-udc.c
610
ep = isp1760_udc_find_ep(udc, index);
drivers/usb/isp1760/isp1760-udc.c
614
spin_lock(&udc->lock);
drivers/usb/isp1760/isp1760-udc.c
627
isp1760_udc_ctrl_send_status(&udc->ep[0],
drivers/usb/isp1760/isp1760-udc.c
630
spin_unlock(&udc->lock);
drivers/usb/isp1760/isp1760-udc.c
64
regmap_raw_read(udc->regs, reg, &val, 4);
drivers/usb/isp1760/isp1760-udc.c
654
ep = isp1760_udc_find_ep(udc, index);
drivers/usb/isp1760/isp1760-udc.c
658
spin_lock(&udc->lock);
drivers/usb/isp1760/isp1760-udc.c
662
isp1760_udc_ctrl_send_status(&udc->ep[0],
drivers/usb/isp1760/isp1760-udc.c
665
spin_unlock(&udc->lock);
drivers/usb/isp1760/isp1760-udc.c
678
return isp1760_udc_set_address(udc, le16_to_cpu(req->wValue));
drivers/usb/isp1760/isp1760-udc.c
684
if (udc->gadget.state != USB_STATE_ADDRESS &&
drivers/usb/isp1760/isp1760-udc.c
685
udc->gadget.state != USB_STATE_CONFIGURED)
drivers/usb/isp1760/isp1760-udc.c
688
stall = udc->driver->setup(&udc->gadget, req) < 0;
drivers/usb/isp1760/isp1760-udc.c
69
static u16 isp1760_udc_read_raw16(struct isp1760_udc *udc, u16 reg)
drivers/usb/isp1760/isp1760-udc.c
692
usb_gadget_set_state(&udc->gadget, req->wValue ?
drivers/usb/isp1760/isp1760-udc.c
704
return udc->driver->setup(&udc->gadget, req) < 0;
drivers/usb/isp1760/isp1760-udc.c
708
static void isp1760_ep0_setup(struct isp1760_udc *udc)
drivers/usb/isp1760/isp1760-udc.c
717
spin_lock(&udc->lock);
drivers/usb/isp1760/isp1760-udc.c
719
isp1760_udc_set(udc, DC_EP0SETUP);
drivers/usb/isp1760/isp1760-udc.c
721
count = isp1760_udc_read(udc, DC_BUFLEN);
drivers/usb/isp1760/isp1760-udc.c
723
spin_unlock(&udc->lock);
drivers/usb/isp1760/isp1760-udc.c
725
dev_err(udc->isp->dev, "invalid length %u for setup packet\n",
drivers/usb/isp1760/isp1760-udc.c
728
isp1760_udc_ctrl_send_stall(&udc->ep[0]);
drivers/usb/isp1760/isp1760-udc.c
73
regmap_raw_read(udc->regs, reg, &val, 2);
drivers/usb/isp1760/isp1760-udc.c
732
req.data[0] = isp1760_udc_read_raw(udc, ISP176x_DC_DATAPORT);
drivers/usb/isp1760/isp1760-udc.c
733
req.data[1] = isp1760_udc_read_raw(udc, ISP176x_DC_DATAPORT);
drivers/usb/isp1760/isp1760-udc.c
735
if (udc->ep0_state != ISP1760_CTRL_SETUP) {
drivers/usb/isp1760/isp1760-udc.c
736
spin_unlock(&udc->lock);
drivers/usb/isp1760/isp1760-udc.c
737
dev_dbg(udc->isp->dev, "unexpected SETUP packet\n");
drivers/usb/isp1760/isp1760-udc.c
743
udc->ep0_state = ISP1760_CTRL_STATUS;
drivers/usb/isp1760/isp1760-udc.c
745
udc->ep0_state = ISP1760_CTRL_DATA_IN;
drivers/usb/isp1760/isp1760-udc.c
747
udc->ep0_state = ISP1760_CTRL_DATA_OUT;
drivers/usb/isp1760/isp1760-udc.c
749
udc->ep0_dir = req.r.bRequestType & USB_DIR_IN;
drivers/usb/isp1760/isp1760-udc.c
750
udc->ep0_length = le16_to_cpu(req.r.wLength);
drivers/usb/isp1760/isp1760-udc.c
752
spin_unlock(&udc->lock);
drivers/usb/isp1760/isp1760-udc.c
754
dev_dbg(udc->isp->dev,
drivers/usb/isp1760/isp1760-udc.c
761
stall = isp1760_ep0_setup_standard(udc, &req.r);
drivers/usb/isp1760/isp1760-udc.c
763
stall = udc->driver->setup(&udc->gadget, &req.r) < 0;
drivers/usb/isp1760/isp1760-udc.c
766
isp1760_udc_ctrl_send_stall(&udc->ep[0]);
drivers/usb/isp1760/isp1760-udc.c
777
struct isp1760_udc *udc = uep->udc;
drivers/usb/isp1760/isp1760-udc.c
78
static void isp1760_udc_write_raw(struct isp1760_udc *udc, u16 reg, u32 val)
drivers/usb/isp1760/isp1760-udc.c
781
dev_dbg(uep->udc->isp->dev, "%s\n", __func__);
drivers/usb/isp1760/isp1760-udc.c
791
dev_dbg(udc->isp->dev,
drivers/usb/isp1760/isp1760-udc.c
811
dev_dbg(udc->isp->dev, "%s: control endpoints unsupported\n",
drivers/usb/isp1760/isp1760-udc.c
816
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/isp1760/isp1760-udc.c
82
regmap_raw_write(udc->regs, reg, &val_le, 4);
drivers/usb/isp1760/isp1760-udc.c
824
isp1760_udc_select_ep(udc, uep);
drivers/usb/isp1760/isp1760-udc.c
826
isp1760_udc_write(udc, DC_FFOSZ, uep->maxpacket);
drivers/usb/isp1760/isp1760-udc.c
827
isp1760_udc_write(udc, DC_BUFLEN, uep->maxpacket);
drivers/usb/isp1760/isp1760-udc.c
829
isp1760_udc_write(udc, DC_ENDPTYP, type);
drivers/usb/isp1760/isp1760-udc.c
830
isp1760_udc_set(udc, DC_EPENABLE);
drivers/usb/isp1760/isp1760-udc.c
832
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/isp1760/isp1760-udc.c
840
struct isp1760_udc *udc = uep->udc;
drivers/usb/isp1760/isp1760-udc.c
845
dev_dbg(udc->isp->dev, "%s\n", __func__);
drivers/usb/isp1760/isp1760-udc.c
847
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/isp1760/isp1760-udc.c
85
static void isp1760_udc_write_raw16(struct isp1760_udc *udc, u16 reg, u16 val)
drivers/usb/isp1760/isp1760-udc.c
850
dev_dbg(udc->isp->dev, "%s: endpoint not enabled\n", __func__);
drivers/usb/isp1760/isp1760-udc.c
851
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/isp1760/isp1760-udc.c
858
isp1760_udc_select_ep(udc, uep);
drivers/usb/isp1760/isp1760-udc.c
859
isp1760_udc_clear(udc, DC_EPENABLE);
drivers/usb/isp1760/isp1760-udc.c
860
isp1760_udc_clear(udc, DC_ENDPTYP);
drivers/usb/isp1760/isp1760-udc.c
866
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/isp1760/isp1760-udc.c
89
regmap_raw_write(udc->regs, reg, &val_le, 2);
drivers/usb/isp1760/isp1760-udc.c
900
struct isp1760_udc *udc = uep->udc;
drivers/usb/isp1760/isp1760-udc.c
908
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/isp1760/isp1760-udc.c
910
dev_dbg(udc->isp->dev,
drivers/usb/isp1760/isp1760-udc.c
917
if (_req->length != udc->ep0_length &&
drivers/usb/isp1760/isp1760-udc.c
918
udc->ep0_state != ISP1760_CTRL_DATA_IN) {
drivers/usb/isp1760/isp1760-udc.c
919
dev_dbg(udc->isp->dev,
drivers/usb/isp1760/isp1760-udc.c
92
static void isp1760_udc_set(struct isp1760_udc *udc, u32 field)
drivers/usb/isp1760/isp1760-udc.c
926
switch (udc->ep0_state) {
drivers/usb/isp1760/isp1760-udc.c
928
dev_dbg(udc->isp->dev, "%s: transmitting req %p\n",
drivers/usb/isp1760/isp1760-udc.c
937
__isp1760_udc_select_ep(udc, uep, USB_DIR_OUT);
drivers/usb/isp1760/isp1760-udc.c
938
isp1760_udc_set(udc, DC_DSEN);
drivers/usb/isp1760/isp1760-udc.c
94
isp1760_udc_write(udc, field, 0xFFFFFFFF);
drivers/usb/isp1760/isp1760-udc.c
946
dev_dbg(udc->isp->dev, "%s: invalid ep0 state\n",
drivers/usb/isp1760/isp1760-udc.c
960
dev_dbg(udc->isp->dev,
drivers/usb/isp1760/isp1760-udc.c
97
static void isp1760_udc_clear(struct isp1760_udc *udc, u32 field)
drivers/usb/isp1760/isp1760-udc.c
970
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/isp1760/isp1760-udc.c
982
struct isp1760_udc *udc = uep->udc;
drivers/usb/isp1760/isp1760-udc.c
985
dev_dbg(uep->udc->isp->dev, "%s(ep%02x)\n", __func__, uep->addr);
drivers/usb/isp1760/isp1760-udc.c
987
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/isp1760/isp1760-udc.c
99
isp1760_udc_write(udc, field, 0);
drivers/usb/isp1760/isp1760-udc.c
994
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/isp1760/isp1760-udc.h
35
struct isp1760_udc *udc;
drivers/usb/roles/class.c
34
struct device *udc;
drivers/usb/roles/class.c
382
sw->udc = desc->udc;
drivers/usb/usbip/vudc.h
146
int get_gadget_descs(struct vudc *udc);
drivers/usb/usbip/vudc.h
151
void v_enqueue_ret_unlink(struct vudc *udc, __u32 seqnum, __u32 status);
drivers/usb/usbip/vudc.h
152
void v_enqueue_ret_submit(struct vudc *udc, struct urbp *urb_p);
drivers/usb/usbip/vudc.h
160
void v_init_timer(struct vudc *udc);
drivers/usb/usbip/vudc.h
161
void v_start_timer(struct vudc *udc);
drivers/usb/usbip/vudc.h
162
void v_kick_timer(struct vudc *udc, unsigned long time);
drivers/usb/usbip/vudc.h
163
void v_stop_timer(struct vudc *udc);
drivers/usb/usbip/vudc.h
170
struct vep *vudc_find_endpoint(struct vudc *udc, u8 address);
drivers/usb/usbip/vudc.h
41
struct vudc *udc;
drivers/usb/usbip/vudc_dev.c
100
list_for_each_entry_safe(urb_p, tmp, &udc->urb_queue, urb_entry) {
drivers/usb/usbip/vudc_dev.c
106
struct vep *vudc_find_endpoint(struct vudc *udc, u8 address)
drivers/usb/usbip/vudc_dev.c
111
return &udc->ep[0];
drivers/usb/usbip/vudc_dev.c
114
struct vep *ep = &udc->ep[i];
drivers/usb/usbip/vudc_dev.c
129
struct vudc *udc = usb_gadget_to_vudc(_gadget);
drivers/usb/usbip/vudc_dev.c
132
return ((now.tv_sec - udc->start_time.tv_sec) * 1000 +
drivers/usb/usbip/vudc_dev.c
133
(now.tv_nsec - udc->start_time.tv_nsec) / NSEC_PER_MSEC)
drivers/usb/usbip/vudc_dev.c
139
struct vudc *udc = usb_gadget_to_vudc(_gadget);
drivers/usb/usbip/vudc_dev.c
142
udc->devstatus |= (1 << USB_DEVICE_SELF_POWERED);
drivers/usb/usbip/vudc_dev.c
144
udc->devstatus &= ~(1 << USB_DEVICE_SELF_POWERED);
drivers/usb/usbip/vudc_dev.c
150
struct vudc *udc = usb_gadget_to_vudc(_gadget);
drivers/usb/usbip/vudc_dev.c
155
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/usbip/vudc_dev.c
157
if (value == udc->pullup)
drivers/usb/usbip/vudc_dev.c
160
udc->pullup = value;
drivers/usb/usbip/vudc_dev.c
162
udc->gadget.speed = min_t(u8, USB_SPEED_HIGH,
drivers/usb/usbip/vudc_dev.c
163
udc->driver->max_speed);
drivers/usb/usbip/vudc_dev.c
164
udc->ep[0].ep.maxpacket = 64;
drivers/usb/usbip/vudc_dev.c
169
ret = get_gadget_descs(udc);
drivers/usb/usbip/vudc_dev.c
171
dev_err(&udc->gadget.dev, "Unable go get desc: %d", ret);
drivers/usb/usbip/vudc_dev.c
175
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/usbip/vudc_dev.c
176
usbip_start_eh(&udc->ud);
drivers/usb/usbip/vudc_dev.c
179
udc->desc_cached = 0;
drivers/usb/usbip/vudc_dev.c
181
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/usbip/vudc_dev.c
182
usbip_event_add(&udc->ud, VUDC_EVENT_REMOVED);
drivers/usb/usbip/vudc_dev.c
183
usbip_stop_eh(&udc->ud); /* Wait for eh completion */
drivers/usb/usbip/vudc_dev.c
189
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/usbip/vudc_dev.c
196
struct vudc *udc = usb_gadget_to_vudc(g);
drivers/usb/usbip/vudc_dev.c
199
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/usbip/vudc_dev.c
200
udc->driver = driver;
drivers/usb/usbip/vudc_dev.c
201
udc->pullup = udc->connected = udc->desc_cached = 0;
drivers/usb/usbip/vudc_dev.c
202
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/usbip/vudc_dev.c
209
struct vudc *udc = usb_gadget_to_vudc(g);
drivers/usb/usbip/vudc_dev.c
212
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/usbip/vudc_dev.c
213
udc->driver = NULL;
drivers/usb/usbip/vudc_dev.c
214
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/usbip/vudc_dev.c
233
struct vudc *udc;
drivers/usb/usbip/vudc_dev.c
238
udc = ep_to_vudc(ep);
drivers/usb/usbip/vudc_dev.c
244
if (!udc->driver)
drivers/usb/usbip/vudc_dev.c
247
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/usbip/vudc_dev.c
255
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/usbip/vudc_dev.c
263
struct vudc *udc;
drivers/usb/usbip/vudc_dev.c
267
udc = ep_to_vudc(ep);
drivers/usb/usbip/vudc_dev.c
271
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/usbip/vudc_dev.c
273
nuke(udc, ep);
drivers/usb/usbip/vudc_dev.c
274
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/usbip/vudc_dev.c
313
struct vudc *udc;
drivers/usb/usbip/vudc_dev.c
321
udc = ep_to_vudc(ep);
drivers/usb/usbip/vudc_dev.c
323
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/usbip/vudc_dev.c
328
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/usbip/vudc_dev.c
337
struct vudc *udc;
drivers/usb/usbip/vudc_dev.c
347
udc = req->udc;
drivers/usb/usbip/vudc_dev.c
349
if (!udc->driver)
drivers/usb/usbip/vudc_dev.c
352
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/usbip/vudc_dev.c
361
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/usbip/vudc_dev.c
373
struct vudc *udc;
drivers/usb/usbip/vudc_dev.c
381
udc = ep_to_vudc(ep);
drivers/usb/usbip/vudc_dev.c
382
if (!udc->driver)
drivers/usb/usbip/vudc_dev.c
385
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/usbip/vudc_dev.c
397
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/usbip/vudc_dev.c
431
struct vudc *udc = container_of(ud, struct vudc, ud);
drivers/usb/usbip/vudc_dev.c
435
dev_dbg(&udc->pdev->dev, "device shutdown");
drivers/usb/usbip/vudc_dev.c
453
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/usbip/vudc_dev.c
454
stop_activity(udc);
drivers/usb/usbip/vudc_dev.c
455
if (udc->connected && udc->driver->disconnect)
drivers/usb/usbip/vudc_dev.c
457
udc->connected = 0;
drivers/usb/usbip/vudc_dev.c
458
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/usbip/vudc_dev.c
460
udc->driver->disconnect(&udc->gadget);
drivers/usb/usbip/vudc_dev.c
465
struct vudc *udc = container_of(ud, struct vudc, ud);
drivers/usb/usbip/vudc_dev.c
468
dev_dbg(&udc->pdev->dev, "device reset");
drivers/usb/usbip/vudc_dev.c
469
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/usbip/vudc_dev.c
470
stop_activity(udc);
drivers/usb/usbip/vudc_dev.c
471
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/usbip/vudc_dev.c
472
if (udc->driver)
drivers/usb/usbip/vudc_dev.c
473
usb_gadget_udc_reset(&udc->gadget, udc->driver);
drivers/usb/usbip/vudc_dev.c
515
static int init_vudc_hw(struct vudc *udc)
drivers/usb/usbip/vudc_dev.c
518
struct usbip_device *ud = &udc->ud;
drivers/usb/usbip/vudc_dev.c
521
udc->ep = kzalloc_objs(*udc->ep, VIRTUAL_ENDPOINTS);
drivers/usb/usbip/vudc_dev.c
522
if (!udc->ep)
drivers/usb/usbip/vudc_dev.c
525
INIT_LIST_HEAD(&udc->gadget.ep_list);
drivers/usb/usbip/vudc_dev.c
532
ep = &udc->ep[i];
drivers/usb/usbip/vudc_dev.c
542
ep->gadget = &udc->gadget;
drivers/usb/usbip/vudc_dev.c
551
udc->gadget.ep0 = &ep->ep;
drivers/usb/usbip/vudc_dev.c
563
list_add_tail(&ep->ep.ep_list, &udc->gadget.ep_list);
drivers/usb/usbip/vudc_dev.c
567
spin_lock_init(&udc->lock);
drivers/usb/usbip/vudc_dev.c
568
spin_lock_init(&udc->lock_tx);
drivers/usb/usbip/vudc_dev.c
569
INIT_LIST_HEAD(&udc->urb_queue);
drivers/usb/usbip/vudc_dev.c
570
INIT_LIST_HEAD(&udc->tx_queue);
drivers/usb/usbip/vudc_dev.c
571
init_waitqueue_head(&udc->tx_waitq);
drivers/usb/usbip/vudc_dev.c
582
v_init_timer(udc);
drivers/usb/usbip/vudc_dev.c
589
static void cleanup_vudc_hw(struct vudc *udc)
drivers/usb/usbip/vudc_dev.c
591
kfree(udc->ep);
drivers/usb/usbip/vudc_dev.c
598
struct vudc *udc;
drivers/usb/usbip/vudc_dev.c
601
udc = kzalloc_obj(*udc);
drivers/usb/usbip/vudc_dev.c
602
if (!udc)
drivers/usb/usbip/vudc_dev.c
605
udc->gadget.name = GADGET_NAME;
drivers/usb/usbip/vudc_dev.c
606
udc->gadget.ops = &vgadget_ops;
drivers/usb/usbip/vudc_dev.c
607
udc->gadget.max_speed = USB_SPEED_HIGH;
drivers/usb/usbip/vudc_dev.c
608
udc->gadget.dev.parent = &pdev->dev;
drivers/usb/usbip/vudc_dev.c
609
udc->pdev = pdev;
drivers/usb/usbip/vudc_dev.c
611
ret = init_vudc_hw(udc);
drivers/usb/usbip/vudc_dev.c
615
ret = usb_add_gadget_udc(&pdev->dev, &udc->gadget);
drivers/usb/usbip/vudc_dev.c
619
platform_set_drvdata(pdev, udc);
drivers/usb/usbip/vudc_dev.c
624
cleanup_vudc_hw(udc);
drivers/usb/usbip/vudc_dev.c
626
kfree(udc);
drivers/usb/usbip/vudc_dev.c
633
struct vudc *udc = platform_get_drvdata(pdev);
drivers/usb/usbip/vudc_dev.c
635
usb_del_gadget_udc(&udc->gadget);
drivers/usb/usbip/vudc_dev.c
636
cleanup_vudc_hw(udc);
drivers/usb/usbip/vudc_dev.c
637
kfree(udc);
drivers/usb/usbip/vudc_dev.c
73
static void nuke(struct vudc *udc, struct vep *ep)
drivers/usb/usbip/vudc_dev.c
83
spin_unlock(&udc->lock);
drivers/usb/usbip/vudc_dev.c
85
spin_lock(&udc->lock);
drivers/usb/usbip/vudc_dev.c
90
static void stop_activity(struct vudc *udc)
drivers/usb/usbip/vudc_dev.c
95
udc->address = 0;
drivers/usb/usbip/vudc_dev.c
98
nuke(udc, &udc->ep[i]);
drivers/usb/usbip/vudc_rx.c
107
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/usbip/vudc_rx.c
108
urb_p->ep = vudc_find_endpoint(udc, address);
drivers/usb/usbip/vudc_rx.c
111
dev_err(&udc->pdev->dev, "request to nonexistent endpoint");
drivers/usb/usbip/vudc_rx.c
112
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/usbip/vudc_rx.c
113
usbip_event_add(&udc->ud, VUDC_EVENT_ERROR_TCP);
drivers/usb/usbip/vudc_rx.c
118
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/usbip/vudc_rx.c
134
dev_err(&udc->gadget.dev,
drivers/usb/usbip/vudc_rx.c
144
usbip_event_add(&udc->ud, VUDC_EVENT_ERROR_MALLOC);
drivers/usb/usbip/vudc_rx.c
169
ret = usbip_recv_xbuff(&udc->ud, urb_p->urb);
drivers/usb/usbip/vudc_rx.c
173
ret = usbip_recv_iso(&udc->ud, urb_p->urb);
drivers/usb/usbip/vudc_rx.c
177
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/usbip/vudc_rx.c
178
v_kick_timer(udc, jiffies);
drivers/usb/usbip/vudc_rx.c
179
list_add_tail(&urb_p->urb_entry, &udc->urb_queue);
drivers/usb/usbip/vudc_rx.c
180
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/usbip/vudc_rx.c
193
struct vudc *udc = container_of(ud, struct vudc, ud);
drivers/usb/usbip/vudc_rx.c
215
ret = v_recv_cmd_unlink(udc, &pdu);
drivers/usb/usbip/vudc_rx.c
218
ret = v_recv_cmd_submit(udc, &pdu);
drivers/usb/usbip/vudc_rx.c
62
static int v_recv_cmd_unlink(struct vudc *udc,
drivers/usb/usbip/vudc_rx.c
68
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/usbip/vudc_rx.c
69
list_for_each_entry(urb_p, &udc->urb_queue, urb_entry) {
drivers/usb/usbip/vudc_rx.c
74
v_kick_timer(udc, jiffies);
drivers/usb/usbip/vudc_rx.c
75
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/usbip/vudc_rx.c
79
spin_lock(&udc->lock_tx);
drivers/usb/usbip/vudc_rx.c
80
v_enqueue_ret_unlink(udc, pdu->base.seqnum, 0);
drivers/usb/usbip/vudc_rx.c
81
wake_up(&udc->tx_waitq);
drivers/usb/usbip/vudc_rx.c
82
spin_unlock(&udc->lock_tx);
drivers/usb/usbip/vudc_rx.c
83
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/usbip/vudc_rx.c
88
static int v_recv_cmd_submit(struct vudc *udc,
drivers/usb/usbip/vudc_rx.c
98
usbip_event_add(&udc->ud, VUDC_EVENT_ERROR_MALLOC);
drivers/usb/usbip/vudc_sysfs.c
111
if (!udc) {
drivers/usb/usbip/vudc_sysfs.c
115
mutex_lock(&udc->ud.sysfs_lock);
drivers/usb/usbip/vudc_sysfs.c
116
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/usbip/vudc_sysfs.c
118
if (!udc->driver || !udc->pullup) {
drivers/usb/usbip/vudc_sysfs.c
125
if (udc->connected) {
drivers/usb/usbip/vudc_sysfs.c
131
spin_lock(&udc->ud.lock);
drivers/usb/usbip/vudc_sysfs.c
133
if (udc->ud.status != SDEV_ST_AVAILABLE) {
drivers/usb/usbip/vudc_sysfs.c
153
spin_unlock(&udc->ud.lock);
drivers/usb/usbip/vudc_sysfs.c
154
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/usbip/vudc_sysfs.c
156
tcp_rx = kthread_create(&v_rx_loop, &udc->ud, "vudc_rx");
drivers/usb/usbip/vudc_sysfs.c
159
mutex_unlock(&udc->ud.sysfs_lock);
drivers/usb/usbip/vudc_sysfs.c
162
tcp_tx = kthread_create(&v_tx_loop, &udc->ud, "vudc_tx");
drivers/usb/usbip/vudc_sysfs.c
166
mutex_unlock(&udc->ud.sysfs_lock);
drivers/usb/usbip/vudc_sysfs.c
175
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/usbip/vudc_sysfs.c
176
spin_lock(&udc->ud.lock);
drivers/usb/usbip/vudc_sysfs.c
178
udc->ud.tcp_socket = socket;
drivers/usb/usbip/vudc_sysfs.c
179
udc->ud.tcp_rx = tcp_rx;
drivers/usb/usbip/vudc_sysfs.c
180
udc->ud.tcp_tx = tcp_tx;
drivers/usb/usbip/vudc_sysfs.c
181
udc->ud.status = SDEV_ST_USED;
drivers/usb/usbip/vudc_sysfs.c
183
spin_unlock(&udc->ud.lock);
drivers/usb/usbip/vudc_sysfs.c
185
ktime_get_ts64(&udc->start_time);
drivers/usb/usbip/vudc_sysfs.c
186
v_start_timer(udc);
drivers/usb/usbip/vudc_sysfs.c
187
udc->connected = 1;
drivers/usb/usbip/vudc_sysfs.c
189
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/usbip/vudc_sysfs.c
191
wake_up_process(udc->ud.tcp_rx);
drivers/usb/usbip/vudc_sysfs.c
192
wake_up_process(udc->ud.tcp_tx);
drivers/usb/usbip/vudc_sysfs.c
194
mutex_unlock(&udc->ud.sysfs_lock);
drivers/usb/usbip/vudc_sysfs.c
198
if (!udc->connected) {
drivers/usb/usbip/vudc_sysfs.c
204
spin_lock(&udc->ud.lock);
drivers/usb/usbip/vudc_sysfs.c
205
if (udc->ud.status != SDEV_ST_USED) {
drivers/usb/usbip/vudc_sysfs.c
209
spin_unlock(&udc->ud.lock);
drivers/usb/usbip/vudc_sysfs.c
211
usbip_event_add(&udc->ud, VUDC_EVENT_DOWN);
drivers/usb/usbip/vudc_sysfs.c
214
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/usbip/vudc_sysfs.c
215
mutex_unlock(&udc->ud.sysfs_lock);
drivers/usb/usbip/vudc_sysfs.c
222
spin_unlock(&udc->ud.lock);
drivers/usb/usbip/vudc_sysfs.c
224
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/usbip/vudc_sysfs.c
225
mutex_unlock(&udc->ud.sysfs_lock);
drivers/usb/usbip/vudc_sysfs.c
23
int get_gadget_descs(struct vudc *udc)
drivers/usb/usbip/vudc_sysfs.c
234
struct vudc *udc = (struct vudc *) dev_get_drvdata(dev);
drivers/usb/usbip/vudc_sysfs.c
237
if (!udc) {
drivers/usb/usbip/vudc_sysfs.c
241
spin_lock_irq(&udc->ud.lock);
drivers/usb/usbip/vudc_sysfs.c
242
status = udc->ud.status;
drivers/usb/usbip/vudc_sysfs.c
243
spin_unlock_irq(&udc->ud.lock);
drivers/usb/usbip/vudc_sysfs.c
26
struct vep *ep0 = to_vep(udc->gadget.ep0);
drivers/usb/usbip/vudc_sysfs.c
27
struct usb_device_descriptor *ddesc = &udc->dev_desc;
drivers/usb/usbip/vudc_sysfs.c
31
if (!udc->driver || !udc->pullup)
drivers/usb/usbip/vudc_sysfs.c
40
spin_unlock(&udc->lock);
drivers/usb/usbip/vudc_sysfs.c
41
ret = udc->driver->setup(&(udc->gadget), &req);
drivers/usb/usbip/vudc_sysfs.c
42
spin_lock(&udc->lock);
drivers/usb/usbip/vudc_sysfs.c
56
udc->desc_cached = 1;
drivers/usb/usbip/vudc_sysfs.c
74
struct vudc *udc = (struct vudc *)dev_get_drvdata(dev);
drivers/usb/usbip/vudc_sysfs.c
75
char *desc_ptr = (char *) &udc->dev_desc;
drivers/usb/usbip/vudc_sysfs.c
79
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/usbip/vudc_sysfs.c
80
if (!udc->desc_cached) {
drivers/usb/usbip/vudc_sysfs.c
88
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/usbip/vudc_sysfs.c
97
struct vudc *udc = (struct vudc *) dev_get_drvdata(dev);
drivers/usb/usbip/vudc_transfer.c
101
ep2 = vudc_find_endpoint(udc, w_index);
drivers/usb/usbip/vudc_transfer.c
102
if (!ep2 || ep2->ep.name == udc->ep[0].ep.name) {
drivers/usb/usbip/vudc_transfer.c
129
udc->devstatus &= ~(1 << w_value);
drivers/usb/usbip/vudc_transfer.c
134
ep2 = vudc_find_endpoint(udc, w_index);
drivers/usb/usbip/vudc_transfer.c
158
ep2 = vudc_find_endpoint(udc, w_index);
drivers/usb/usbip/vudc_transfer.c
166
buf[0] = (u8)udc->devstatus;
drivers/usb/usbip/vudc_transfer.c
183
static int transfer(struct vudc *udc,
drivers/usb/usbip/vudc_transfer.c
283
spin_unlock(&udc->lock);
drivers/usb/usbip/vudc_transfer.c
285
spin_lock(&udc->lock);
drivers/usb/usbip/vudc_transfer.c
304
struct vudc *udc = timer_container_of(udc, t, tr_timer.timer);
drivers/usb/usbip/vudc_transfer.c
305
struct transfer_timer *timer = &udc->tr_timer;
drivers/usb/usbip/vudc_transfer.c
313
spin_lock_irqsave(&udc->lock, flags);
drivers/usb/usbip/vudc_transfer.c
315
total = get_frame_limit(udc->gadget.speed);
drivers/usb/usbip/vudc_transfer.c
318
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/usbip/vudc_transfer.c
331
udc->ep[0].already_seen = 0;
drivers/usb/usbip/vudc_transfer.c
332
list_for_each_entry(_ep, &udc->gadget.ep_list, ep_list) {
drivers/usb/usbip/vudc_transfer.c
338
list_for_each_entry_safe(urb_p, tmp, &udc->urb_queue, urb_entry) {
drivers/usb/usbip/vudc_transfer.c
359
if (ep == &udc->ep[0] && urb_p->new) {
drivers/usb/usbip/vudc_transfer.c
368
if (ep == &udc->ep[0] && ep->setup_stage) {
drivers/usb/usbip/vudc_transfer.c
373
ret = handle_control_request(udc, urb,
drivers/usb/usbip/vudc_transfer.c
377
spin_unlock(&udc->lock);
drivers/usb/usbip/vudc_transfer.c
378
ret = udc->driver->setup(&udc->gadget,
drivers/usb/usbip/vudc_transfer.c
381
spin_lock(&udc->lock);
drivers/usb/usbip/vudc_transfer.c
410
total -= transfer(udc, urb, ep, limit);
drivers/usb/usbip/vudc_transfer.c
419
spin_lock(&udc->lock_tx);
drivers/usb/usbip/vudc_transfer.c
422
v_enqueue_ret_submit(udc, urb_p);
drivers/usb/usbip/vudc_transfer.c
424
v_enqueue_ret_unlink(udc, urb_p->seqnum,
drivers/usb/usbip/vudc_transfer.c
428
wake_up(&udc->tx_waitq);
drivers/usb/usbip/vudc_transfer.c
429
spin_unlock(&udc->lock_tx);
drivers/usb/usbip/vudc_transfer.c
435
if (list_empty(&udc->urb_queue))
drivers/usb/usbip/vudc_transfer.c
441
spin_unlock_irqrestore(&udc->lock, flags);
drivers/usb/usbip/vudc_transfer.c
446
void v_init_timer(struct vudc *udc)
drivers/usb/usbip/vudc_transfer.c
448
struct transfer_timer *t = &udc->tr_timer;
drivers/usb/usbip/vudc_transfer.c
454
void v_start_timer(struct vudc *udc)
drivers/usb/usbip/vudc_transfer.c
456
struct transfer_timer *t = &udc->tr_timer;
drivers/usb/usbip/vudc_transfer.c
458
dev_dbg(&udc->pdev->dev, "timer start");
drivers/usb/usbip/vudc_transfer.c
463
return v_kick_timer(udc, jiffies);
drivers/usb/usbip/vudc_transfer.c
467
t->frame_limit = get_frame_limit(udc->gadget.speed);
drivers/usb/usbip/vudc_transfer.c
468
return v_kick_timer(udc, jiffies);
drivers/usb/usbip/vudc_transfer.c
472
void v_kick_timer(struct vudc *udc, unsigned long time)
drivers/usb/usbip/vudc_transfer.c
474
struct transfer_timer *t = &udc->tr_timer;
drivers/usb/usbip/vudc_transfer.c
476
dev_dbg(&udc->pdev->dev, "timer kick");
drivers/usb/usbip/vudc_transfer.c
489
void v_stop_timer(struct vudc *udc)
drivers/usb/usbip/vudc_transfer.c
491
struct transfer_timer *t = &udc->tr_timer;
drivers/usb/usbip/vudc_transfer.c
494
dev_dbg(&udc->pdev->dev, "timer stop");
drivers/usb/usbip/vudc_transfer.c
58
static int handle_control_request(struct vudc *udc, struct urb *urb,
drivers/usb/usbip/vudc_transfer.c
73
udc->address = w_value;
drivers/usb/usbip/vudc_transfer.c
84
udc->gadget.b_hnp_enable = 1;
drivers/usb/usbip/vudc_transfer.c
87
udc->gadget.a_hnp_support = 1;
drivers/usb/usbip/vudc_transfer.c
90
udc->gadget.a_alt_hnp_support = 1;
drivers/usb/usbip/vudc_transfer.c
96
udc->devstatus |= (1 << w_value);
drivers/usb/usbip/vudc_tx.c
102
usbip_event_add(&udc->ud, VUDC_EVENT_ERROR_MALLOC);
drivers/usb/usbip/vudc_tx.c
141
usbip_event_add(&udc->ud, VUDC_EVENT_ERROR_TCP);
drivers/usb/usbip/vudc_tx.c
154
usbip_event_add(&udc->ud,
drivers/usb/usbip/vudc_tx.c
166
ret = kernel_sendmsg(udc->ud.tcp_socket, &msg,
drivers/usb/usbip/vudc_tx.c
169
usbip_event_add(&udc->ud, VUDC_EVENT_ERROR_TCP);
drivers/usb/usbip/vudc_tx.c
184
static int v_send_ret(struct vudc *udc)
drivers/usb/usbip/vudc_tx.c
191
spin_lock_irqsave(&udc->lock_tx, flags);
drivers/usb/usbip/vudc_tx.c
192
while (!list_empty(&udc->tx_queue)) {
drivers/usb/usbip/vudc_tx.c
193
txi = list_first_entry(&udc->tx_queue, struct tx_item,
drivers/usb/usbip/vudc_tx.c
196
spin_unlock_irqrestore(&udc->lock_tx, flags);
drivers/usb/usbip/vudc_tx.c
200
ret = v_send_ret_submit(udc, txi->s);
drivers/usb/usbip/vudc_tx.c
203
ret = v_send_ret_unlink(udc, txi->u);
drivers/usb/usbip/vudc_tx.c
213
spin_lock_irqsave(&udc->lock_tx, flags);
drivers/usb/usbip/vudc_tx.c
216
spin_unlock_irqrestore(&udc->lock_tx, flags);
drivers/usb/usbip/vudc_tx.c
224
struct vudc *udc = container_of(ud, struct vudc, ud);
drivers/usb/usbip/vudc_tx.c
228
if (usbip_event_happened(&udc->ud))
drivers/usb/usbip/vudc_tx.c
230
ret = v_send_ret(udc);
drivers/usb/usbip/vudc_tx.c
235
wait_event_interruptible(udc->tx_waitq,
drivers/usb/usbip/vudc_tx.c
236
(!list_empty(&udc->tx_queue) ||
drivers/usb/usbip/vudc_tx.c
244
void v_enqueue_ret_unlink(struct vudc *udc, __u32 seqnum, __u32 status)
drivers/usb/usbip/vudc_tx.c
251
usbip_event_add(&udc->ud, VDEV_EVENT_ERROR_MALLOC);
drivers/usb/usbip/vudc_tx.c
257
usbip_event_add(&udc->ud, VDEV_EVENT_ERROR_MALLOC);
drivers/usb/usbip/vudc_tx.c
266
list_add_tail(&txi->tx_entry, &udc->tx_queue);
drivers/usb/usbip/vudc_tx.c
270
void v_enqueue_ret_submit(struct vudc *udc, struct urbp *urb_p)
drivers/usb/usbip/vudc_tx.c
276
usbip_event_add(&udc->ud, VDEV_EVENT_ERROR_MALLOC);
drivers/usb/usbip/vudc_tx.c
283
list_add_tail(&txi->tx_entry, &udc->tx_queue);
drivers/usb/usbip/vudc_tx.c
38
static int v_send_ret_unlink(struct vudc *udc, struct v_unlink *unlink)
drivers/usb/usbip/vudc_tx.c
60
ret = kernel_sendmsg(udc->ud.tcp_socket, &msg, iov,
drivers/usb/usbip/vudc_tx.c
63
usbip_event_add(&udc->ud, VUDC_EVENT_ERROR_TCP);
drivers/usb/usbip/vudc_tx.c
73
static int v_send_ret_submit(struct vudc *udc, struct urbp *urb_p)
drivers/usb/usbip/vudc_tx.c
89
dev_err(&udc->gadget.dev,
include/linux/usb/gadget.h
444
struct usb_udc *udc;
net/bridge/netfilter/ebtables.c
595
unsigned int *n, struct ebt_cl_stack *udc)
net/bridge/netfilter/ebtables.c
610
udc[*n].cs.chaininfo = (struct ebt_entries *)e;
net/bridge/netfilter/ebtables.c
612
udc[*n].cs.n = 0;
net/bridge/netfilter/ebtables.c
613
udc[*n].hookmask = 0;