Symbol: bdc
drivers/usb/gadget/udc/bdc/bdc.h
264
#define gadget_to_bdc(g) container_of(g, struct bdc, gadget)
drivers/usb/gadget/udc/bdc/bdc.h
353
struct bdc *bdc;
drivers/usb/gadget/udc/bdc/bdc.h
444
void (*sr_handler[2])(struct bdc *, struct bdc_sr *);
drivers/usb/gadget/udc/bdc/bdc.h
446
void (*sr_xsf_ep0[3])(struct bdc *, struct bdc_sr *);
drivers/usb/gadget/udc/bdc/bdc.h
469
void bdc_notify_xfr(struct bdc *bdc, u32 epnum);
drivers/usb/gadget/udc/bdc/bdc.h
470
void bdc_softconn(struct bdc *bdc);
drivers/usb/gadget/udc/bdc/bdc.h
471
void bdc_softdisconn(struct bdc *bdc);
drivers/usb/gadget/udc/bdc/bdc.h
472
int bdc_run(struct bdc *bdc);
drivers/usb/gadget/udc/bdc/bdc.h
473
int bdc_stop(struct bdc *bdc);
drivers/usb/gadget/udc/bdc/bdc.h
474
int bdc_reset(struct bdc *bdc);
drivers/usb/gadget/udc/bdc/bdc.h
475
int bdc_udc_init(struct bdc *bdc);
drivers/usb/gadget/udc/bdc/bdc.h
476
void bdc_udc_exit(struct bdc *bdc);
drivers/usb/gadget/udc/bdc/bdc.h
477
int bdc_reinit(struct bdc *bdc);
drivers/usb/gadget/udc/bdc/bdc.h
481
void bdc_sr_uspc(struct bdc *bdc, struct bdc_sr *sreport);
drivers/usb/gadget/udc/bdc/bdc.h
483
void bdc_sr_xsf(struct bdc *bdc, struct bdc_sr *sreport);
drivers/usb/gadget/udc/bdc/bdc.h
485
void bdc_xsf_ep0_setup_recv(struct bdc *bdc, struct bdc_sr *sreport);
drivers/usb/gadget/udc/bdc/bdc.h
486
void bdc_xsf_ep0_data_start(struct bdc *bdc, struct bdc_sr *sreport);
drivers/usb/gadget/udc/bdc/bdc.h
487
void bdc_xsf_ep0_status_start(struct bdc *bdc, struct bdc_sr *sreport);
drivers/usb/gadget/udc/bdc/bdc_cmd.c
101
dev_dbg(bdc->dev, "Unknown command completion code:%x\n", ret);
drivers/usb/gadget/udc/bdc/bdc_cmd.c
108
int bdc_dconfig_ep(struct bdc *bdc, struct bdc_ep *ep)
drivers/usb/gadget/udc/bdc/bdc_cmd.c
113
dev_dbg(bdc->dev, "%s ep->ep_num =%d cmd_sc=%x\n", __func__,
drivers/usb/gadget/udc/bdc/bdc_cmd.c
116
return bdc_submit_cmd(bdc, cmd_sc, 0, 0, 0);
drivers/usb/gadget/udc/bdc/bdc_cmd.c
122
struct bdc *bdc = ep->bdc;
drivers/usb/gadget/udc/bdc/bdc_cmd.c
128
dev_dbg(bdc->dev, "%s ep:%p bd:%p\n", __func__, ep, bd);
drivers/usb/gadget/udc/bdc/bdc_cmd.c
134
int bdc_config_ep(struct bdc *bdc, struct bdc_ep *ep)
drivers/usb/gadget/udc/bdc/bdc_cmd.c
150
dev_dbg(bdc->dev, "%s: param0=%08x param1=%08x",
drivers/usb/gadget/udc/bdc/bdc_cmd.c
159
switch (bdc->gadget.speed) {
drivers/usb/gadget/udc/bdc/bdc_cmd.c
17
static int bdc_issue_cmd(struct bdc *bdc, u32 cmd_sc, u32 param0,
drivers/usb/gadget/udc/bdc/bdc_cmd.c
201
dev_err(bdc->dev, "UNKNOWN speed ERR\n");
drivers/usb/gadget/udc/bdc/bdc_cmd.c
207
dev_dbg(bdc->dev, "cmd_sc=%x param2=%08x\n", cmd_sc, param2);
drivers/usb/gadget/udc/bdc/bdc_cmd.c
208
ret = bdc_submit_cmd(bdc, cmd_sc, param0, param1, param2);
drivers/usb/gadget/udc/bdc/bdc_cmd.c
210
dev_err(bdc->dev, "command failed :%x\n", ret);
drivers/usb/gadget/udc/bdc/bdc_cmd.c
222
int bdc_ep_bla(struct bdc *bdc, struct bdc_ep *ep, dma_addr_t dma_addr)
drivers/usb/gadget/udc/bdc/bdc_cmd.c
227
dev_dbg(bdc->dev, "%s: add=%08llx\n", __func__,
drivers/usb/gadget/udc/bdc/bdc_cmd.c
235
dev_dbg(bdc->dev, "cmd_sc=%x\n", cmd_sc);
drivers/usb/gadget/udc/bdc/bdc_cmd.c
237
return bdc_submit_cmd(bdc, cmd_sc, param0, param1, 0);
drivers/usb/gadget/udc/bdc/bdc_cmd.c
24
bdc_writel(bdc->regs, BDC_CMDPAR0, param0);
drivers/usb/gadget/udc/bdc/bdc_cmd.c
241
int bdc_address_device(struct bdc *bdc, u32 add)
drivers/usb/gadget/udc/bdc/bdc_cmd.c
246
dev_dbg(bdc->dev, "%s: add=%d\n", __func__, add);
drivers/usb/gadget/udc/bdc/bdc_cmd.c
25
bdc_writel(bdc->regs, BDC_CMDPAR1, param1);
drivers/usb/gadget/udc/bdc/bdc_cmd.c
250
return bdc_submit_cmd(bdc, cmd_sc, 0, 0, param2);
drivers/usb/gadget/udc/bdc/bdc_cmd.c
254
int bdc_function_wake_fh(struct bdc *bdc, u8 intf)
drivers/usb/gadget/udc/bdc/bdc_cmd.c
26
bdc_writel(bdc->regs, BDC_CMDPAR2, param2);
drivers/usb/gadget/udc/bdc/bdc_cmd.c
260
dev_dbg(bdc->dev, "%s intf=%d\n", __func__, intf);
drivers/usb/gadget/udc/bdc/bdc_cmd.c
263
param0 |= (bdc->dev_addr << 25);
drivers/usb/gadget/udc/bdc/bdc_cmd.c
266
dev_dbg(bdc->dev, "param0=%08x param1=%08x\n", param0, param1);
drivers/usb/gadget/udc/bdc/bdc_cmd.c
268
return bdc_submit_cmd(bdc, cmd_sc, param0, param1, 0);
drivers/usb/gadget/udc/bdc/bdc_cmd.c
272
int bdc_function_wake(struct bdc *bdc, u8 intf)
drivers/usb/gadget/udc/bdc/bdc_cmd.c
277
dev_dbg(bdc->dev, "%s intf=%d", __func__, intf);
drivers/usb/gadget/udc/bdc/bdc_cmd.c
281
return bdc_submit_cmd(bdc, cmd_sc, 0, 0, param2);
drivers/usb/gadget/udc/bdc/bdc_cmd.c
285
int bdc_ep_set_stall(struct bdc *bdc, int epnum)
drivers/usb/gadget/udc/bdc/bdc_cmd.c
289
dev_dbg(bdc->dev, "%s epnum=%d\n", __func__, epnum);
drivers/usb/gadget/udc/bdc/bdc_cmd.c
293
return bdc_submit_cmd(bdc, cmd_sc, 0, 0, 0);
drivers/usb/gadget/udc/bdc/bdc_cmd.c
297
int bdc_ep_clear_stall(struct bdc *bdc, int epnum)
drivers/usb/gadget/udc/bdc/bdc_cmd.c
303
dev_dbg(bdc->dev, "%s: epnum=%d\n", __func__, epnum);
drivers/usb/gadget/udc/bdc/bdc_cmd.c
304
ep = bdc->bdc_ep_array[epnum];
drivers/usb/gadget/udc/bdc/bdc_cmd.c
31
bdc_writel(bdc->regs, BDC_CMDSC, cmd_sc | BDC_CMD_CWS | BDC_CMD_SRD);
drivers/usb/gadget/udc/bdc/bdc_cmd.c
312
ret = bdc_ep_set_stall(bdc, epnum);
drivers/usb/gadget/udc/bdc/bdc_cmd.c
324
ret = bdc_submit_cmd(bdc, cmd_sc, 0, 0, 0);
drivers/usb/gadget/udc/bdc/bdc_cmd.c
326
dev_err(bdc->dev, "command failed:%x\n", ret);
drivers/usb/gadget/udc/bdc/bdc_cmd.c
329
bdc_notify_xfr(bdc, epnum);
drivers/usb/gadget/udc/bdc/bdc_cmd.c
33
temp = bdc_readl(bdc->regs, BDC_CMDSC);
drivers/usb/gadget/udc/bdc/bdc_cmd.c
335
int bdc_stop_ep(struct bdc *bdc, int epnum)
drivers/usb/gadget/udc/bdc/bdc_cmd.c
34
dev_dbg_ratelimited(bdc->dev, "cmdsc=%x", temp);
drivers/usb/gadget/udc/bdc/bdc_cmd.c
341
ep = bdc->bdc_ep_array[epnum];
drivers/usb/gadget/udc/bdc/bdc_cmd.c
342
dev_dbg(bdc->dev, "%s: ep:%s ep->flags:%08x\n", __func__,
drivers/usb/gadget/udc/bdc/bdc_cmd.c
346
dev_err(bdc->dev, "stop endpoint called for disabled ep\n");
drivers/usb/gadget/udc/bdc/bdc_cmd.c
356
ret = bdc_submit_cmd(bdc, cmd_sc, 0, 0, 0);
drivers/usb/gadget/udc/bdc/bdc_cmd.c
358
dev_err(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_cmd.c
364
bdc_dump_epsts(bdc);
drivers/usb/gadget/udc/bdc/bdc_cmd.c
37
dev_dbg(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_cmd.c
44
dev_err(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_cmd.c
51
static int bdc_submit_cmd(struct bdc *bdc, u32 cmd_sc,
drivers/usb/gadget/udc/bdc/bdc_cmd.c
57
temp = bdc_readl(bdc->regs, BDC_CMDSC);
drivers/usb/gadget/udc/bdc/bdc_cmd.c
58
dev_dbg(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_cmd.c
64
dev_err(bdc->dev, "command processor busy: %x\n", cmd_status);
drivers/usb/gadget/udc/bdc/bdc_cmd.c
67
ret = bdc_issue_cmd(bdc, cmd_sc, param0, param1, param2);
drivers/usb/gadget/udc/bdc/bdc_cmd.c
70
dev_dbg(bdc->dev, "command completed successfully\n");
drivers/usb/gadget/udc/bdc/bdc_cmd.c
75
dev_err(bdc->dev, "command parameter error\n");
drivers/usb/gadget/udc/bdc/bdc_cmd.c
80
dev_err(bdc->dev, "Invalid device/ep state\n");
drivers/usb/gadget/udc/bdc/bdc_cmd.c
85
dev_err(bdc->dev, "Command failed?\n");
drivers/usb/gadget/udc/bdc/bdc_cmd.c
90
dev_err(bdc->dev, "BDC Internal error\n");
drivers/usb/gadget/udc/bdc/bdc_cmd.c
95
dev_err(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_cmd.h
13
int bdc_address_device(struct bdc *bdc, u32 add);
drivers/usb/gadget/udc/bdc/bdc_cmd.h
14
int bdc_config_ep(struct bdc *bdc, struct bdc_ep *ep);
drivers/usb/gadget/udc/bdc/bdc_cmd.h
15
int bdc_dconfig_ep(struct bdc *bdc, struct bdc_ep *ep);
drivers/usb/gadget/udc/bdc/bdc_cmd.h
16
int bdc_stop_ep(struct bdc *bdc, int epnum);
drivers/usb/gadget/udc/bdc/bdc_cmd.h
17
int bdc_ep_set_stall(struct bdc *bdc, int epnum);
drivers/usb/gadget/udc/bdc/bdc_cmd.h
18
int bdc_ep_clear_stall(struct bdc *bdc, int epnum);
drivers/usb/gadget/udc/bdc/bdc_cmd.h
19
int bdc_ep_bla(struct bdc *bdc, struct bdc_ep *ep, dma_addr_t dma_addr);
drivers/usb/gadget/udc/bdc/bdc_cmd.h
20
int bdc_function_wake(struct bdc *bdc, u8 intf);
drivers/usb/gadget/udc/bdc/bdc_cmd.h
21
int bdc_function_wake_fh(struct bdc *bdc, u8 intf);
drivers/usb/gadget/udc/bdc/bdc_core.c
101
dev_dbg(bdc->dev, "%s ()\n", __func__);
drivers/usb/gadget/udc/bdc/bdc_core.c
102
temp = bdc_readl(bdc->regs, BDC_BDCSC);
drivers/usb/gadget/udc/bdc/bdc_core.c
105
dev_warn(bdc->dev, "bdc is already in running state\n");
drivers/usb/gadget/udc/bdc/bdc_core.c
111
bdc_writel(bdc->regs, BDC_BDCSC, temp);
drivers/usb/gadget/udc/bdc/bdc_core.c
112
ret = poll_oip(bdc, BDC_COP_TIMEOUT);
drivers/usb/gadget/udc/bdc/bdc_core.c
114
dev_err(bdc->dev, "bdc run operation failed:%d", ret);
drivers/usb/gadget/udc/bdc/bdc_core.c
117
temp = bdc_readl(bdc->regs, BDC_BDCSC);
drivers/usb/gadget/udc/bdc/bdc_core.c
119
dev_err(bdc->dev, "bdc not in normal mode after RUN op :%d\n",
drivers/usb/gadget/udc/bdc/bdc_core.c
131
void bdc_softconn(struct bdc *bdc)
drivers/usb/gadget/udc/bdc/bdc_core.c
135
uspc = bdc_readl(bdc->regs, BDC_USPC);
drivers/usb/gadget/udc/bdc/bdc_core.c
139
dev_dbg(bdc->dev, "%s () uspc=%08x\n", __func__, uspc);
drivers/usb/gadget/udc/bdc/bdc_core.c
140
bdc_writel(bdc->regs, BDC_USPC, uspc);
drivers/usb/gadget/udc/bdc/bdc_core.c
144
void bdc_softdisconn(struct bdc *bdc)
drivers/usb/gadget/udc/bdc/bdc_core.c
148
uspc = bdc_readl(bdc->regs, BDC_USPC);
drivers/usb/gadget/udc/bdc/bdc_core.c
151
dev_dbg(bdc->dev, "%s () uspc=%x\n", __func__, uspc);
drivers/usb/gadget/udc/bdc/bdc_core.c
152
bdc_writel(bdc->regs, BDC_USPC, uspc);
drivers/usb/gadget/udc/bdc/bdc_core.c
156
static int scratchpad_setup(struct bdc *bdc)
drivers/usb/gadget/udc/bdc/bdc_core.c
162
sp_buff_size = BDC_SPB(bdc_readl(bdc->regs, BDC_BDCCFG0));
drivers/usb/gadget/udc/bdc/bdc_core.c
163
dev_dbg(bdc->dev, "%s() sp_buff_size=%d\n", __func__, sp_buff_size);
drivers/usb/gadget/udc/bdc/bdc_core.c
165
dev_dbg(bdc->dev, "Scratchpad buffer not needed\n");
drivers/usb/gadget/udc/bdc/bdc_core.c
170
dev_dbg(bdc->dev, "Allocating %d bytes for scratchpad\n", sp_buff_size);
drivers/usb/gadget/udc/bdc/bdc_core.c
171
bdc->scratchpad.buff = dma_alloc_coherent(bdc->dev, sp_buff_size,
drivers/usb/gadget/udc/bdc/bdc_core.c
172
&bdc->scratchpad.sp_dma,
drivers/usb/gadget/udc/bdc/bdc_core.c
175
if (!bdc->scratchpad.buff)
drivers/usb/gadget/udc/bdc/bdc_core.c
178
bdc->sp_buff_size = sp_buff_size;
drivers/usb/gadget/udc/bdc/bdc_core.c
179
bdc->scratchpad.size = sp_buff_size;
drivers/usb/gadget/udc/bdc/bdc_core.c
180
low32 = lower_32_bits(bdc->scratchpad.sp_dma);
drivers/usb/gadget/udc/bdc/bdc_core.c
181
upp32 = upper_32_bits(bdc->scratchpad.sp_dma);
drivers/usb/gadget/udc/bdc/bdc_core.c
184
bdc_writel(bdc->regs, BDC_SPBBAL, low32);
drivers/usb/gadget/udc/bdc/bdc_core.c
185
bdc_writel(bdc->regs, BDC_SPBBAH, upp32);
drivers/usb/gadget/udc/bdc/bdc_core.c
189
bdc->scratchpad.buff = NULL;
drivers/usb/gadget/udc/bdc/bdc_core.c
195
static int setup_srr(struct bdc *bdc, int interrupter)
drivers/usb/gadget/udc/bdc/bdc_core.c
197
dev_dbg(bdc->dev, "%s() NUM_SR_ENTRIES:%d\n", __func__, NUM_SR_ENTRIES);
drivers/usb/gadget/udc/bdc/bdc_core.c
199
bdc_writel(bdc->regs, BDC_SRRINT(0), BDC_SRR_RWS | BDC_SRR_RST);
drivers/usb/gadget/udc/bdc/bdc_core.c
200
bdc->srr.dqp_index = 0;
drivers/usb/gadget/udc/bdc/bdc_core.c
202
bdc->srr.sr_bds = dma_alloc_coherent(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_core.c
204
&bdc->srr.dma_addr, GFP_KERNEL);
drivers/usb/gadget/udc/bdc/bdc_core.c
205
if (!bdc->srr.sr_bds)
drivers/usb/gadget/udc/bdc/bdc_core.c
212
static void bdc_mem_init(struct bdc *bdc, bool reinit)
drivers/usb/gadget/udc/bdc/bdc_core.c
220
dev_dbg(bdc->dev, "%s ()\n", __func__);
drivers/usb/gadget/udc/bdc/bdc_core.c
221
bdc->ep0_state = WAIT_FOR_SETUP;
drivers/usb/gadget/udc/bdc/bdc_core.c
222
bdc->dev_addr = 0;
drivers/usb/gadget/udc/bdc/bdc_core.c
223
bdc->srr.eqp_index = 0;
drivers/usb/gadget/udc/bdc/bdc_core.c
224
bdc->srr.dqp_index = 0;
drivers/usb/gadget/udc/bdc/bdc_core.c
225
bdc->zlp_needed = false;
drivers/usb/gadget/udc/bdc/bdc_core.c
226
bdc->delayed_status = false;
drivers/usb/gadget/udc/bdc/bdc_core.c
228
bdc_writel(bdc->regs, BDC_SPBBAL, bdc->scratchpad.sp_dma);
drivers/usb/gadget/udc/bdc/bdc_core.c
232
bdc_writel(bdc->regs, BDC_SRRINT(0), temp);
drivers/usb/gadget/udc/bdc/bdc_core.c
233
dev_dbg(bdc->dev, "bdc->srr.sr_bds =%p\n", bdc->srr.sr_bds);
drivers/usb/gadget/udc/bdc/bdc_core.c
234
temp = lower_32_bits(bdc->srr.dma_addr);
drivers/usb/gadget/udc/bdc/bdc_core.c
237
dev_dbg(bdc->dev, "SRRBAL[0]=%08x NUM_SR_ENTRIES:%d size:%d\n",
drivers/usb/gadget/udc/bdc/bdc_core.c
241
upp32 = upper_32_bits(bdc->srr.dma_addr);
drivers/usb/gadget/udc/bdc/bdc_core.c
246
bdc_writel(bdc->regs, BDC_SRRBAL(0), low32);
drivers/usb/gadget/udc/bdc/bdc_core.c
247
bdc_writel(bdc->regs, BDC_SRRBAH(0), upp32);
drivers/usb/gadget/udc/bdc/bdc_core.c
249
temp = bdc_readl(bdc->regs, BDC_SRRINT(0));
drivers/usb/gadget/udc/bdc/bdc_core.c
252
bdc_writel(bdc->regs, BDC_SRRINT(0), temp);
drivers/usb/gadget/udc/bdc/bdc_core.c
255
temp = bdc_readl(bdc->regs, BDC_INTCTLS(0));
drivers/usb/gadget/udc/bdc/bdc_core.c
258
bdc_writel(bdc->regs, BDC_INTCTLS(0), temp);
drivers/usb/gadget/udc/bdc/bdc_core.c
260
usb2_pm = bdc_readl(bdc->regs, BDC_USPPM2);
drivers/usb/gadget/udc/bdc/bdc_core.c
261
dev_dbg(bdc->dev, "usb2_pm=%08x", usb2_pm);
drivers/usb/gadget/udc/bdc/bdc_core.c
264
bdc_writel(bdc->regs, BDC_USPPM2, usb2_pm);
drivers/usb/gadget/udc/bdc/bdc_core.c
267
usb2_pm = bdc_readl(bdc->regs, BDC_USPPM2);
drivers/usb/gadget/udc/bdc/bdc_core.c
268
dev_dbg(bdc->dev, "usb2_pm=%08x\n", usb2_pm);
drivers/usb/gadget/udc/bdc/bdc_core.c
271
temp = bdc_readl(bdc->regs, BDC_BDCSC);
drivers/usb/gadget/udc/bdc/bdc_core.c
274
bdc_writel(bdc->regs, BDC_BDCSC, temp);
drivers/usb/gadget/udc/bdc/bdc_core.c
283
temp = bdc_readl(bdc->regs, BDC_BDCSC);
drivers/usb/gadget/udc/bdc/bdc_core.c
285
bdc_writel(bdc->regs, BDC_BDCSC, temp);
drivers/usb/gadget/udc/bdc/bdc_core.c
287
memset(bdc->scratchpad.buff, 0, bdc->sp_buff_size);
drivers/usb/gadget/udc/bdc/bdc_core.c
289
memset(bdc->srr.sr_bds, 0,
drivers/usb/gadget/udc/bdc/bdc_core.c
295
if (!bdc->gadget.speed)
drivers/usb/gadget/udc/bdc/bdc_core.c
296
for (i = 1; i < bdc->num_eps; ++i)
drivers/usb/gadget/udc/bdc/bdc_core.c
297
bdc->bdc_ep_array[i]->flags = 0;
drivers/usb/gadget/udc/bdc/bdc_core.c
301
bdc->sr_handler[0] = bdc_sr_xsf;
drivers/usb/gadget/udc/bdc/bdc_core.c
302
bdc->sr_handler[1] = bdc_sr_uspc;
drivers/usb/gadget/udc/bdc/bdc_core.c
305
bdc->sr_xsf_ep0[0] = bdc_xsf_ep0_setup_recv;
drivers/usb/gadget/udc/bdc/bdc_core.c
306
bdc->sr_xsf_ep0[1] = bdc_xsf_ep0_data_start;
drivers/usb/gadget/udc/bdc/bdc_core.c
307
bdc->sr_xsf_ep0[2] = bdc_xsf_ep0_status_start;
drivers/usb/gadget/udc/bdc/bdc_core.c
312
static void bdc_mem_free(struct bdc *bdc)
drivers/usb/gadget/udc/bdc/bdc_core.c
314
dev_dbg(bdc->dev, "%s\n", __func__);
drivers/usb/gadget/udc/bdc/bdc_core.c
316
if (bdc->srr.sr_bds)
drivers/usb/gadget/udc/bdc/bdc_core.c
317
dma_free_coherent(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_core.c
319
bdc->srr.sr_bds, bdc->srr.dma_addr);
drivers/usb/gadget/udc/bdc/bdc_core.c
322
if (bdc->scratchpad.buff)
drivers/usb/gadget/udc/bdc/bdc_core.c
323
dma_free_coherent(bdc->dev, bdc->sp_buff_size,
drivers/usb/gadget/udc/bdc/bdc_core.c
324
bdc->scratchpad.buff, bdc->scratchpad.sp_dma);
drivers/usb/gadget/udc/bdc/bdc_core.c
327
dma_pool_destroy(bdc->bd_table_pool);
drivers/usb/gadget/udc/bdc/bdc_core.c
33
static int poll_oip(struct bdc *bdc, u32 usec)
drivers/usb/gadget/udc/bdc/bdc_core.c
330
kfree(bdc->bdc_ep_array);
drivers/usb/gadget/udc/bdc/bdc_core.c
332
bdc->srr.sr_bds = NULL;
drivers/usb/gadget/udc/bdc/bdc_core.c
333
bdc->scratchpad.buff = NULL;
drivers/usb/gadget/udc/bdc/bdc_core.c
334
bdc->bd_table_pool = NULL;
drivers/usb/gadget/udc/bdc/bdc_core.c
335
bdc->bdc_ep_array = NULL;
drivers/usb/gadget/udc/bdc/bdc_core.c
342
int bdc_reinit(struct bdc *bdc)
drivers/usb/gadget/udc/bdc/bdc_core.c
346
dev_dbg(bdc->dev, "%s\n", __func__);
drivers/usb/gadget/udc/bdc/bdc_core.c
347
ret = bdc_stop(bdc);
drivers/usb/gadget/udc/bdc/bdc_core.c
351
ret = bdc_reset(bdc);
drivers/usb/gadget/udc/bdc/bdc_core.c
356
bdc_mem_init(bdc, true);
drivers/usb/gadget/udc/bdc/bdc_core.c
357
ret = bdc_run(bdc);
drivers/usb/gadget/udc/bdc/bdc_core.c
359
bdc->reinit = false;
drivers/usb/gadget/udc/bdc/bdc_core.c
365
static int bdc_mem_alloc(struct bdc *bdc)
drivers/usb/gadget/udc/bdc/bdc_core.c
370
dev_dbg(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_core.c
373
page_size = BDC_PGS(bdc_readl(bdc->regs, BDC_BDCCFG0));
drivers/usb/gadget/udc/bdc/bdc_core.c
378
dev_dbg(bdc->dev, "page_size=%d\n", page_size);
drivers/usb/gadget/udc/bdc/bdc_core.c
38
ret = readl_poll_timeout_atomic(bdc->regs + BDC_BDCSC, status,
drivers/usb/gadget/udc/bdc/bdc_core.c
381
bdc->bd_table_pool =
drivers/usb/gadget/udc/bdc/bdc_core.c
382
dma_pool_create("BDC BD tables", bdc->dev, NUM_BDS_PER_TABLE * 16,
drivers/usb/gadget/udc/bdc/bdc_core.c
385
if (!bdc->bd_table_pool)
drivers/usb/gadget/udc/bdc/bdc_core.c
388
if (scratchpad_setup(bdc))
drivers/usb/gadget/udc/bdc/bdc_core.c
392
num_ieps = NUM_NCS(bdc_readl(bdc->regs, BDC_FSCNIC));
drivers/usb/gadget/udc/bdc/bdc_core.c
393
num_oeps = NUM_NCS(bdc_readl(bdc->regs, BDC_FSCNOC));
drivers/usb/gadget/udc/bdc/bdc_core.c
395
bdc->num_eps = num_ieps + num_oeps + 2;
drivers/usb/gadget/udc/bdc/bdc_core.c
396
dev_dbg(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_core.c
398
num_ieps, num_oeps, bdc->num_eps);
drivers/usb/gadget/udc/bdc/bdc_core.c
400
bdc->bdc_ep_array = kzalloc_objs(struct bdc_ep *, bdc->num_eps);
drivers/usb/gadget/udc/bdc/bdc_core.c
401
if (!bdc->bdc_ep_array)
drivers/usb/gadget/udc/bdc/bdc_core.c
404
dev_dbg(bdc->dev, "Allocating sr report0\n");
drivers/usb/gadget/udc/bdc/bdc_core.c
405
if (setup_srr(bdc, 0))
drivers/usb/gadget/udc/bdc/bdc_core.c
41
dev_err(bdc->dev, "operation timedout BDCSC: 0x%08x\n", status);
drivers/usb/gadget/udc/bdc/bdc_core.c
410
dev_warn(bdc->dev, "Couldn't initialize memory\n");
drivers/usb/gadget/udc/bdc/bdc_core.c
411
bdc_mem_free(bdc);
drivers/usb/gadget/udc/bdc/bdc_core.c
417
static void bdc_hw_exit(struct bdc *bdc)
drivers/usb/gadget/udc/bdc/bdc_core.c
419
dev_dbg(bdc->dev, "%s ()\n", __func__);
drivers/usb/gadget/udc/bdc/bdc_core.c
420
bdc_mem_free(bdc);
drivers/usb/gadget/udc/bdc/bdc_core.c
424
static int bdc_hw_init(struct bdc *bdc)
drivers/usb/gadget/udc/bdc/bdc_core.c
428
dev_dbg(bdc->dev, "%s ()\n", __func__);
drivers/usb/gadget/udc/bdc/bdc_core.c
429
ret = bdc_reset(bdc);
drivers/usb/gadget/udc/bdc/bdc_core.c
43
dev_dbg(bdc->dev, "%s complete status=%d", __func__, BDC_CSTS(status));
drivers/usb/gadget/udc/bdc/bdc_core.c
431
dev_err(bdc->dev, "err resetting bdc abort bdc init%d\n", ret);
drivers/usb/gadget/udc/bdc/bdc_core.c
434
ret = bdc_mem_alloc(bdc);
drivers/usb/gadget/udc/bdc/bdc_core.c
436
dev_err(bdc->dev, "Mem alloc failed, aborting\n");
drivers/usb/gadget/udc/bdc/bdc_core.c
439
bdc_mem_init(bdc, 0);
drivers/usb/gadget/udc/bdc/bdc_core.c
440
bdc_dbg_regs(bdc);
drivers/usb/gadget/udc/bdc/bdc_core.c
441
dev_dbg(bdc->dev, "HW Init done\n");
drivers/usb/gadget/udc/bdc/bdc_core.c
446
static int bdc_phy_init(struct bdc *bdc)
drivers/usb/gadget/udc/bdc/bdc_core.c
451
for (phy_num = 0; phy_num < bdc->num_phys; phy_num++) {
drivers/usb/gadget/udc/bdc/bdc_core.c
452
ret = phy_init(bdc->phys[phy_num]);
drivers/usb/gadget/udc/bdc/bdc_core.c
455
ret = phy_power_on(bdc->phys[phy_num]);
drivers/usb/gadget/udc/bdc/bdc_core.c
457
phy_exit(bdc->phys[phy_num]);
drivers/usb/gadget/udc/bdc/bdc_core.c
466
phy_power_off(bdc->phys[phy_num]);
drivers/usb/gadget/udc/bdc/bdc_core.c
467
phy_exit(bdc->phys[phy_num]);
drivers/usb/gadget/udc/bdc/bdc_core.c
473
static void bdc_phy_exit(struct bdc *bdc)
drivers/usb/gadget/udc/bdc/bdc_core.c
477
for (phy_num = 0; phy_num < bdc->num_phys; phy_num++) {
drivers/usb/gadget/udc/bdc/bdc_core.c
478
phy_power_off(bdc->phys[phy_num]);
drivers/usb/gadget/udc/bdc/bdc_core.c
479
phy_exit(bdc->phys[phy_num]);
drivers/usb/gadget/udc/bdc/bdc_core.c
485
struct bdc *bdc;
drivers/usb/gadget/udc/bdc/bdc_core.c
49
int bdc_stop(struct bdc *bdc)
drivers/usb/gadget/udc/bdc/bdc_core.c
494
bdc = devm_kzalloc(dev, sizeof(*bdc), GFP_KERNEL);
drivers/usb/gadget/udc/bdc/bdc_core.c
495
if (!bdc)
drivers/usb/gadget/udc/bdc/bdc_core.c
498
bdc->regs = devm_platform_ioremap_resource(pdev, 0);
drivers/usb/gadget/udc/bdc/bdc_core.c
499
if (IS_ERR(bdc->regs))
drivers/usb/gadget/udc/bdc/bdc_core.c
500
return PTR_ERR(bdc->regs);
drivers/usb/gadget/udc/bdc/bdc_core.c
505
spin_lock_init(&bdc->lock);
drivers/usb/gadget/udc/bdc/bdc_core.c
506
platform_set_drvdata(pdev, bdc);
drivers/usb/gadget/udc/bdc/bdc_core.c
507
bdc->irq = irq;
drivers/usb/gadget/udc/bdc/bdc_core.c
508
bdc->dev = dev;
drivers/usb/gadget/udc/bdc/bdc_core.c
509
dev_dbg(dev, "bdc->regs: %p irq=%d\n", bdc->regs, bdc->irq);
drivers/usb/gadget/udc/bdc/bdc_core.c
511
bdc->num_phys = of_count_phandle_with_args(dev->of_node,
drivers/usb/gadget/udc/bdc/bdc_core.c
513
if (bdc->num_phys > 0) {
drivers/usb/gadget/udc/bdc/bdc_core.c
514
bdc->phys = devm_kcalloc(dev, bdc->num_phys,
drivers/usb/gadget/udc/bdc/bdc_core.c
516
if (!bdc->phys)
drivers/usb/gadget/udc/bdc/bdc_core.c
519
bdc->num_phys = 0;
drivers/usb/gadget/udc/bdc/bdc_core.c
521
dev_info(dev, "Using %d phy(s)\n", bdc->num_phys);
drivers/usb/gadget/udc/bdc/bdc_core.c
523
for (phy_num = 0; phy_num < bdc->num_phys; phy_num++) {
drivers/usb/gadget/udc/bdc/bdc_core.c
524
bdc->phys[phy_num] = devm_of_phy_get_by_index(
drivers/usb/gadget/udc/bdc/bdc_core.c
526
if (IS_ERR(bdc->phys[phy_num])) {
drivers/usb/gadget/udc/bdc/bdc_core.c
527
ret = PTR_ERR(bdc->phys[phy_num]);
drivers/usb/gadget/udc/bdc/bdc_core.c
528
dev_err(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_core.c
534
bdc->clk = devm_clk_get_optional(dev, "sw_usbd");
drivers/usb/gadget/udc/bdc/bdc_core.c
535
if (IS_ERR(bdc->clk))
drivers/usb/gadget/udc/bdc/bdc_core.c
536
return PTR_ERR(bdc->clk);
drivers/usb/gadget/udc/bdc/bdc_core.c
538
ret = clk_prepare_enable(bdc->clk);
drivers/usb/gadget/udc/bdc/bdc_core.c
54
dev_dbg(bdc->dev, "%s ()\n\n", __func__);
drivers/usb/gadget/udc/bdc/bdc_core.c
544
ret = bdc_phy_init(bdc);
drivers/usb/gadget/udc/bdc/bdc_core.c
546
dev_err(bdc->dev, "BDC phy init failure:%d\n", ret);
drivers/usb/gadget/udc/bdc/bdc_core.c
55
temp = bdc_readl(bdc->regs, BDC_BDCSC);
drivers/usb/gadget/udc/bdc/bdc_core.c
550
temp = bdc_readl(bdc->regs, BDC_BDCCAP1);
drivers/usb/gadget/udc/bdc/bdc_core.c
564
ret = bdc_hw_init(bdc);
drivers/usb/gadget/udc/bdc/bdc_core.c
569
ret = bdc_udc_init(bdc);
drivers/usb/gadget/udc/bdc/bdc_core.c
577
bdc_hw_exit(bdc);
drivers/usb/gadget/udc/bdc/bdc_core.c
579
bdc_phy_exit(bdc);
drivers/usb/gadget/udc/bdc/bdc_core.c
58
dev_vdbg(bdc->dev, "BDC already halted\n");
drivers/usb/gadget/udc/bdc/bdc_core.c
581
clk_disable_unprepare(bdc->clk);
drivers/usb/gadget/udc/bdc/bdc_core.c
587
struct bdc *bdc;
drivers/usb/gadget/udc/bdc/bdc_core.c
591
bdc = platform_get_drvdata(pdev);
drivers/usb/gadget/udc/bdc/bdc_core.c
592
dev_dbg(bdc->dev, "%s ()\n", __func__);
drivers/usb/gadget/udc/bdc/bdc_core.c
598
spin_lock_irqsave(&bdc->lock, flags);
drivers/usb/gadget/udc/bdc/bdc_core.c
599
temp = bdc_readl(bdc->regs, BDC_BDCSC);
drivers/usb/gadget/udc/bdc/bdc_core.c
601
bdc_writel(bdc->regs, BDC_BDCSC, temp);
drivers/usb/gadget/udc/bdc/bdc_core.c
602
spin_unlock_irqrestore(&bdc->lock, flags);
drivers/usb/gadget/udc/bdc/bdc_core.c
603
free_irq(bdc->irq, bdc);
drivers/usb/gadget/udc/bdc/bdc_core.c
610
cancel_delayed_work_sync(&bdc->func_wake_notify);
drivers/usb/gadget/udc/bdc/bdc_core.c
611
bdc_udc_exit(bdc);
drivers/usb/gadget/udc/bdc/bdc_core.c
612
bdc_hw_exit(bdc);
drivers/usb/gadget/udc/bdc/bdc_core.c
613
bdc_phy_exit(bdc);
drivers/usb/gadget/udc/bdc/bdc_core.c
614
clk_disable_unprepare(bdc->clk);
drivers/usb/gadget/udc/bdc/bdc_core.c
620
struct bdc *bdc = dev_get_drvdata(dev);
drivers/usb/gadget/udc/bdc/bdc_core.c
624
ret = bdc_stop(bdc);
drivers/usb/gadget/udc/bdc/bdc_core.c
626
clk_disable_unprepare(bdc->clk);
drivers/usb/gadget/udc/bdc/bdc_core.c
63
bdc_writel(bdc->regs, BDC_BDCSC, temp);
drivers/usb/gadget/udc/bdc/bdc_core.c
633
struct bdc *bdc = dev_get_drvdata(dev);
drivers/usb/gadget/udc/bdc/bdc_core.c
636
ret = clk_prepare_enable(bdc->clk);
drivers/usb/gadget/udc/bdc/bdc_core.c
638
dev_err(bdc->dev, "err enabling the clock\n");
drivers/usb/gadget/udc/bdc/bdc_core.c
641
ret = bdc_reinit(bdc);
drivers/usb/gadget/udc/bdc/bdc_core.c
643
dev_err(bdc->dev, "err in bdc reinit\n");
drivers/usb/gadget/udc/bdc/bdc_core.c
644
clk_disable_unprepare(bdc->clk);
drivers/usb/gadget/udc/bdc/bdc_core.c
65
ret = poll_oip(bdc, BDC_COP_TIMEOUT);
drivers/usb/gadget/udc/bdc/bdc_core.c
67
dev_err(bdc->dev, "bdc stop operation failed");
drivers/usb/gadget/udc/bdc/bdc_core.c
73
int bdc_reset(struct bdc *bdc)
drivers/usb/gadget/udc/bdc/bdc_core.c
78
dev_dbg(bdc->dev, "%s ()\n", __func__);
drivers/usb/gadget/udc/bdc/bdc_core.c
80
ret = bdc_stop(bdc);
drivers/usb/gadget/udc/bdc/bdc_core.c
84
temp = bdc_readl(bdc->regs, BDC_BDCSC);
drivers/usb/gadget/udc/bdc/bdc_core.c
87
bdc_writel(bdc->regs, BDC_BDCSC, temp);
drivers/usb/gadget/udc/bdc/bdc_core.c
88
ret = poll_oip(bdc, BDC_COP_TIMEOUT);
drivers/usb/gadget/udc/bdc/bdc_core.c
90
dev_err(bdc->dev, "bdc reset operation failed");
drivers/usb/gadget/udc/bdc/bdc_core.c
96
int bdc_run(struct bdc *bdc)
drivers/usb/gadget/udc/bdc/bdc_dbg.c
108
dev_vdbg(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_dbg.c
116
dev_vdbg(bdc->dev, "\n\n");
drivers/usb/gadget/udc/bdc/bdc_dbg.c
13
void bdc_dbg_regs(struct bdc *bdc)
drivers/usb/gadget/udc/bdc/bdc_dbg.c
17
dev_vdbg(bdc->dev, "bdc->regs:%p\n", bdc->regs);
drivers/usb/gadget/udc/bdc/bdc_dbg.c
18
temp = bdc_readl(bdc->regs, BDC_BDCCFG0);
drivers/usb/gadget/udc/bdc/bdc_dbg.c
19
dev_vdbg(bdc->dev, "bdccfg0:0x%08x\n", temp);
drivers/usb/gadget/udc/bdc/bdc_dbg.c
20
temp = bdc_readl(bdc->regs, BDC_BDCCFG1);
drivers/usb/gadget/udc/bdc/bdc_dbg.c
21
dev_vdbg(bdc->dev, "bdccfg1:0x%08x\n", temp);
drivers/usb/gadget/udc/bdc/bdc_dbg.c
22
temp = bdc_readl(bdc->regs, BDC_BDCCAP0);
drivers/usb/gadget/udc/bdc/bdc_dbg.c
23
dev_vdbg(bdc->dev, "bdccap0:0x%08x\n", temp);
drivers/usb/gadget/udc/bdc/bdc_dbg.c
24
temp = bdc_readl(bdc->regs, BDC_BDCCAP1);
drivers/usb/gadget/udc/bdc/bdc_dbg.c
25
dev_vdbg(bdc->dev, "bdccap1:0x%08x\n", temp);
drivers/usb/gadget/udc/bdc/bdc_dbg.c
26
temp = bdc_readl(bdc->regs, BDC_USPC);
drivers/usb/gadget/udc/bdc/bdc_dbg.c
27
dev_vdbg(bdc->dev, "uspc:0x%08x\n", temp);
drivers/usb/gadget/udc/bdc/bdc_dbg.c
28
temp = bdc_readl(bdc->regs, BDC_DVCSA);
drivers/usb/gadget/udc/bdc/bdc_dbg.c
29
dev_vdbg(bdc->dev, "dvcsa:0x%08x\n", temp);
drivers/usb/gadget/udc/bdc/bdc_dbg.c
30
temp = bdc_readl(bdc->regs, BDC_DVCSB);
drivers/usb/gadget/udc/bdc/bdc_dbg.c
31
dev_vdbg(bdc->dev, "dvcsb:0x%x08\n", temp);
drivers/usb/gadget/udc/bdc/bdc_dbg.c
34
void bdc_dump_epsts(struct bdc *bdc)
drivers/usb/gadget/udc/bdc/bdc_dbg.c
38
temp = bdc_readl(bdc->regs, BDC_EPSTS0);
drivers/usb/gadget/udc/bdc/bdc_dbg.c
39
dev_vdbg(bdc->dev, "BDC_EPSTS0:0x%08x\n", temp);
drivers/usb/gadget/udc/bdc/bdc_dbg.c
41
temp = bdc_readl(bdc->regs, BDC_EPSTS1);
drivers/usb/gadget/udc/bdc/bdc_dbg.c
42
dev_vdbg(bdc->dev, "BDC_EPSTS1:0x%x\n", temp);
drivers/usb/gadget/udc/bdc/bdc_dbg.c
44
temp = bdc_readl(bdc->regs, BDC_EPSTS2);
drivers/usb/gadget/udc/bdc/bdc_dbg.c
45
dev_vdbg(bdc->dev, "BDC_EPSTS2:0x%08x\n", temp);
drivers/usb/gadget/udc/bdc/bdc_dbg.c
47
temp = bdc_readl(bdc->regs, BDC_EPSTS3);
drivers/usb/gadget/udc/bdc/bdc_dbg.c
48
dev_vdbg(bdc->dev, "BDC_EPSTS3:0x%08x\n", temp);
drivers/usb/gadget/udc/bdc/bdc_dbg.c
50
temp = bdc_readl(bdc->regs, BDC_EPSTS4);
drivers/usb/gadget/udc/bdc/bdc_dbg.c
51
dev_vdbg(bdc->dev, "BDC_EPSTS4:0x%08x\n", temp);
drivers/usb/gadget/udc/bdc/bdc_dbg.c
53
temp = bdc_readl(bdc->regs, BDC_EPSTS5);
drivers/usb/gadget/udc/bdc/bdc_dbg.c
54
dev_vdbg(bdc->dev, "BDC_EPSTS5:0x%08x\n", temp);
drivers/usb/gadget/udc/bdc/bdc_dbg.c
56
temp = bdc_readl(bdc->regs, BDC_EPSTS6);
drivers/usb/gadget/udc/bdc/bdc_dbg.c
57
dev_vdbg(bdc->dev, "BDC_EPSTS6:0x%08x\n", temp);
drivers/usb/gadget/udc/bdc/bdc_dbg.c
59
temp = bdc_readl(bdc->regs, BDC_EPSTS7);
drivers/usb/gadget/udc/bdc/bdc_dbg.c
60
dev_vdbg(bdc->dev, "BDC_EPSTS7:0x%08x\n", temp);
drivers/usb/gadget/udc/bdc/bdc_dbg.c
63
void bdc_dbg_srr(struct bdc *bdc, u32 srr_num)
drivers/usb/gadget/udc/bdc/bdc_dbg.c
69
sr = bdc->srr.sr_bds;
drivers/usb/gadget/udc/bdc/bdc_dbg.c
70
addr = bdc->srr.dma_addr;
drivers/usb/gadget/udc/bdc/bdc_dbg.c
71
dev_vdbg(bdc->dev, "%s sr:%p dqp_index:%d\n", __func__,
drivers/usb/gadget/udc/bdc/bdc_dbg.c
72
sr, bdc->srr.dqp_index);
drivers/usb/gadget/udc/bdc/bdc_dbg.c
74
sr = &bdc->srr.sr_bds[i];
drivers/usb/gadget/udc/bdc/bdc_dbg.c
75
dev_vdbg(bdc->dev, "%llx %08x %08x %08x %08x\n",
drivers/usb/gadget/udc/bdc/bdc_dbg.c
85
void bdc_dbg_bd_list(struct bdc *bdc, struct bdc_ep *ep)
drivers/usb/gadget/udc/bdc/bdc_dbg.c
94
dev_vdbg(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_dbg.c
98
dev_vdbg(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_dbg.h
15
void bdc_dbg_bd_list(struct bdc *bdc, struct bdc_ep *ep);
drivers/usb/gadget/udc/bdc/bdc_dbg.h
16
void bdc_dbg_srr(struct bdc *bdc, u32 srr_num);
drivers/usb/gadget/udc/bdc/bdc_dbg.h
17
void bdc_dbg_regs(struct bdc *bdc);
drivers/usb/gadget/udc/bdc/bdc_dbg.h
18
void bdc_dump_epsts(struct bdc *bdc);
drivers/usb/gadget/udc/bdc/bdc_dbg.h
20
static inline void bdc_dbg_regs(struct bdc *bdc)
drivers/usb/gadget/udc/bdc/bdc_dbg.h
23
static inline void bdc_dbg_srr(struct bdc *bdc, u32 srr_num)
drivers/usb/gadget/udc/bdc/bdc_dbg.h
26
static inline void bdc_dbg_bd_list(struct bdc *bdc, struct bdc_ep *ep)
drivers/usb/gadget/udc/bdc/bdc_dbg.h
29
static inline void bdc_dump_epsts(struct bdc *bdc)
drivers/usb/gadget/udc/bdc/bdc_ep.c
1041
dev_dbg(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_ep.c
1050
dev_dbg(bdc->dev, "short xfr on %d\n", ep->ep_num);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1063
void bdc_xsf_ep0_setup_recv(struct bdc *bdc, struct bdc_sr *sreport)
drivers/usb/gadget/udc/bdc/bdc_ep.c
1068
dev_dbg(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_ep.c
1070
__func__, ep0_state_string[bdc->ep0_state]);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1072
setup_pkt = &bdc->setup_pkt;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1076
bdc->ep0_state = WAIT_FOR_STATUS_START;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1078
bdc->ep0_state = WAIT_FOR_DATA_START;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1081
dev_dbg(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_ep.c
1083
__func__, ep0_state_string[bdc->ep0_state]);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1087
static void ep0_stall(struct bdc *bdc)
drivers/usb/gadget/udc/bdc/bdc_ep.c
1089
struct bdc_ep *ep = bdc->bdc_ep_array[1];
drivers/usb/gadget/udc/bdc/bdc_ep.c
1092
dev_dbg(bdc->dev, "%s\n", __func__);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1093
bdc->delayed_status = false;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1105
static int ep0_set_address(struct bdc *bdc, struct usb_ctrlrequest *ctrl)
drivers/usb/gadget/udc/bdc/bdc_ep.c
1107
enum usb_device_state state = bdc->gadget.state;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1112
dev_dbg(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_ep.c
1123
ret = bdc_address_device(bdc, addr);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1128
usb_gadget_set_state(&bdc->gadget, USB_STATE_ADDRESS);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1130
usb_gadget_set_state(&bdc->gadget, USB_STATE_DEFAULT);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1132
bdc->dev_addr = addr;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1135
dev_warn(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_ep.c
1145
static int ep0_handle_feature_dev(struct bdc *bdc, u16 wValue,
drivers/usb/gadget/udc/bdc/bdc_ep.c
1148
enum usb_device_state state = bdc->gadget.state;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1151
dev_dbg(bdc->dev, "%s set:%d dev state:%d\n",
drivers/usb/gadget/udc/bdc/bdc_ep.c
1155
dev_dbg(bdc->dev, "USB_DEVICE_REMOTE_WAKEUP\n");
drivers/usb/gadget/udc/bdc/bdc_ep.c
1157
bdc->devstatus |= REMOTE_WAKE_ENABLE;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1159
bdc->devstatus &= ~REMOTE_WAKE_ENABLE;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1163
dev_dbg(bdc->dev, "USB_DEVICE_TEST_MODE\n");
drivers/usb/gadget/udc/bdc/bdc_ep.c
1165
(bdc->gadget.speed != USB_SPEED_HIGH) || !set)
drivers/usb/gadget/udc/bdc/bdc_ep.c
1168
bdc->test_mode = wIndex >> 8;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1172
dev_dbg(bdc->dev, "USB_DEVICE_U1_ENABLE\n");
drivers/usb/gadget/udc/bdc/bdc_ep.c
1174
if (bdc->gadget.speed != USB_SPEED_SUPER ||
drivers/usb/gadget/udc/bdc/bdc_ep.c
1178
usppms = bdc_readl(bdc->regs, BDC_USPPMS);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1184
bdc->devstatus |= (1 << USB_DEV_STAT_U1_ENABLED);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1188
bdc->devstatus &= ~(1 << USB_DEV_STAT_U1_ENABLED);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1190
bdc_writel(bdc->regs, BDC_USPPMS, usppms);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1194
dev_dbg(bdc->dev, "USB_DEVICE_U2_ENABLE\n");
drivers/usb/gadget/udc/bdc/bdc_ep.c
1196
if (bdc->gadget.speed != USB_SPEED_SUPER ||
drivers/usb/gadget/udc/bdc/bdc_ep.c
1200
usppms = bdc_readl(bdc->regs, BDC_USPPMS);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1204
bdc->devstatus |= (1 << USB_DEV_STAT_U2_ENABLED);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1208
bdc->devstatus &= ~(1 << USB_DEV_STAT_U2_ENABLED);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1210
bdc_writel(bdc->regs, BDC_USPPMS, usppms);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1214
dev_dbg(bdc->dev, "USB_DEVICE_LTM_ENABLE?\n");
drivers/usb/gadget/udc/bdc/bdc_ep.c
1215
if (bdc->gadget.speed != USB_SPEED_SUPER ||
drivers/usb/gadget/udc/bdc/bdc_ep.c
1220
dev_err(bdc->dev, "Unknown wValue:%d\n", wValue);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1228
static int ep0_handle_feature(struct bdc *bdc,
drivers/usb/gadget/udc/bdc/bdc_ep.c
1231
enum usb_device_state state = bdc->gadget.state;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1240
dev_dbg(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_ep.c
1243
bdc->gadget.speed, set);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1247
return ep0_handle_feature_dev(bdc, wValue, wIndex, set);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1249
dev_dbg(bdc->dev, "USB_RECIP_INTERFACE\n");
drivers/usb/gadget/udc/bdc/bdc_ep.c
125
struct bdc *bdc = ep->bdc;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1256
dev_dbg(bdc->dev, "SET REMOTE_WAKEUP\n");
drivers/usb/gadget/udc/bdc/bdc_ep.c
1257
bdc->devstatus |= REMOTE_WAKE_ENABLE;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1259
dev_dbg(bdc->dev, "CLEAR REMOTE_WAKEUP\n");
drivers/usb/gadget/udc/bdc/bdc_ep.c
1260
bdc->devstatus &= ~REMOTE_WAKE_ENABLE;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1266
dev_dbg(bdc->dev, "USB_RECIP_ENDPOINT\n");
drivers/usb/gadget/udc/bdc/bdc_ep.c
1285
dev_dbg(bdc->dev, "ep0 stall already cleared\n");
drivers/usb/gadget/udc/bdc/bdc_ep.c
1288
dev_dbg(bdc->dev, "epnum=%d\n", epnum);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1289
ep = bdc->bdc_ep_array[epnum];
drivers/usb/gadget/udc/bdc/bdc_ep.c
1295
dev_err(bdc->dev, "Unknown recipient\n");
drivers/usb/gadget/udc/bdc/bdc_ep.c
1303
static int ep0_handle_status(struct bdc *bdc,
drivers/usb/gadget/udc/bdc/bdc_ep.c
1306
enum usb_device_state state = bdc->gadget.state;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1316
dev_dbg(bdc->dev, "%s\n", __func__);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1317
usb_status = bdc->devstatus;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1320
dev_dbg(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_ep.c
1322
bdc->devstatus);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1324
if (bdc->gadget.speed == USB_SPEED_SUPER)
drivers/usb/gadget/udc/bdc/bdc_ep.c
1329
dev_dbg(bdc->dev, "USB_RECIP_INTERFACE\n");
drivers/usb/gadget/udc/bdc/bdc_ep.c
1330
if (bdc->gadget.speed == USB_SPEED_SUPER) {
drivers/usb/gadget/udc/bdc/bdc_ep.c
1335
if (bdc->devstatus & REMOTE_WAKE_ENABLE)
drivers/usb/gadget/udc/bdc/bdc_ep.c
1344
dev_dbg(bdc->dev, "USB_RECIP_ENDPOINT\n");
drivers/usb/gadget/udc/bdc/bdc_ep.c
1355
ep = bdc->bdc_ep_array[epnum];
drivers/usb/gadget/udc/bdc/bdc_ep.c
1357
dev_err(bdc->dev, "ISSUE, GET_STATUS for invalid EP ?");
drivers/usb/gadget/udc/bdc/bdc_ep.c
136
dev_dbg(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_ep.c
1365
dev_err(bdc->dev, "Unknown recipient for get_status\n");
drivers/usb/gadget/udc/bdc/bdc_ep.c
1369
dev_dbg(bdc->dev, "usb_status=%08x\n", usb_status);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1370
*(__le16 *)bdc->ep0_response_buff = cpu_to_le16(usb_status);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1371
bdc->ep0_req.usb_req.length = 2;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1372
bdc->ep0_req.usb_req.buf = &bdc->ep0_response_buff;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1373
ep0_queue_data_stage(bdc);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1384
static int ep0_set_sel(struct bdc *bdc,
drivers/usb/gadget/udc/bdc/bdc_ep.c
1390
dev_dbg(bdc->dev, "%s\n", __func__);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1393
dev_err(bdc->dev, "%s Wrong wLength:%d\n", __func__, wLength);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1396
ep = bdc->bdc_ep_array[1];
drivers/usb/gadget/udc/bdc/bdc_ep.c
1397
bdc->ep0_req.ep = ep;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1398
bdc->ep0_req.usb_req.length = 6;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1399
bdc->ep0_req.usb_req.buf = bdc->ep0_response_buff;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1400
bdc->ep0_req.usb_req.complete = ep0_set_sel_cmpl;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1401
ep0_queue_data_stage(bdc);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1410
static int ep0_queue_zlp(struct bdc *bdc)
drivers/usb/gadget/udc/bdc/bdc_ep.c
1414
dev_dbg(bdc->dev, "%s\n", __func__);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1415
bdc->ep0_req.ep = bdc->bdc_ep_array[1];
drivers/usb/gadget/udc/bdc/bdc_ep.c
1416
bdc->ep0_req.usb_req.length = 0;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1417
bdc->ep0_req.usb_req.complete = NULL;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1418
bdc->ep0_state = WAIT_FOR_DATA_START;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1419
ret = bdc_queue_xfr(bdc, &bdc->ep0_req);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1421
dev_err(bdc->dev, "err queueing zlp :%d\n", ret);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1424
bdc->ep0_state = WAIT_FOR_DATA_XMIT;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1430
static int handle_control_request(struct bdc *bdc)
drivers/usb/gadget/udc/bdc/bdc_ep.c
1432
enum usb_device_state state = bdc->gadget.state;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1438
setup_pkt = &bdc->setup_pkt;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1439
dev_dbg(bdc->dev, "%s\n", __func__);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1443
dev_dbg(bdc->dev, "USB_REQ_SET_ADDRESS\n");
drivers/usb/gadget/udc/bdc/bdc_ep.c
1444
ret = ep0_set_address(bdc, setup_pkt);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1445
bdc->devstatus &= DEVSTATUS_CLEAR;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1449
dev_dbg(bdc->dev, "USB_REQ_SET_CONFIGURATION\n");
drivers/usb/gadget/udc/bdc/bdc_ep.c
1451
usb_gadget_set_state(&bdc->gadget,
drivers/usb/gadget/udc/bdc/bdc_ep.c
1461
&bdc->gadget,
drivers/usb/gadget/udc/bdc/bdc_ep.c
1468
dev_dbg(bdc->dev, "USB_REQ_SET_FEATURE\n");
drivers/usb/gadget/udc/bdc/bdc_ep.c
1469
ret = ep0_handle_feature(bdc, setup_pkt, 1);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1473
dev_dbg(bdc->dev, "USB_REQ_CLEAR_FEATURE\n");
drivers/usb/gadget/udc/bdc/bdc_ep.c
1474
ret = ep0_handle_feature(bdc, setup_pkt, 0);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1478
dev_dbg(bdc->dev, "USB_REQ_GET_STATUS\n");
drivers/usb/gadget/udc/bdc/bdc_ep.c
1479
ret = ep0_handle_status(bdc, setup_pkt);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1483
dev_dbg(bdc->dev, "USB_REQ_SET_SEL\n");
drivers/usb/gadget/udc/bdc/bdc_ep.c
1484
ret = ep0_set_sel(bdc, setup_pkt);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1488
dev_warn(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_ep.c
1500
spin_unlock(&bdc->lock);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1501
ret = bdc->gadget_driver->setup(&bdc->gadget, setup_pkt);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1502
spin_lock(&bdc->lock);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1509
void bdc_xsf_ep0_data_start(struct bdc *bdc, struct bdc_sr *sreport)
drivers/usb/gadget/udc/bdc/bdc_ep.c
1514
dev_dbg(bdc->dev, "%s\n", __func__);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1515
ep = bdc->bdc_ep_array[1];
drivers/usb/gadget/udc/bdc/bdc_ep.c
1522
if (bdc->ep0_state != WAIT_FOR_DATA_START)
drivers/usb/gadget/udc/bdc/bdc_ep.c
1523
dev_warn(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_ep.c
1525
ep0_state_string[bdc->ep0_state]);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1527
ret = handle_control_request(bdc);
drivers/usb/gadget/udc/bdc/bdc_ep.c
153
bd_table->start_bd = dma_pool_zalloc(bdc->bd_table_pool,
drivers/usb/gadget/udc/bdc/bdc_ep.c
1533
bdc->delayed_status = true;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1537
bdc->ep0_state = WAIT_FOR_DATA_XMIT;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1538
dev_dbg(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_ep.c
1539
"ep0_state:%s", ep0_state_string[bdc->ep0_state]);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1543
ep0_stall(bdc);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1547
void bdc_xsf_ep0_status_start(struct bdc *bdc, struct bdc_sr *sreport)
drivers/usb/gadget/udc/bdc/bdc_ep.c
1553
dev_dbg(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_ep.c
1555
__func__, ep0_state_string[bdc->ep0_state]);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1556
ep = bdc->bdc_ep_array[1];
drivers/usb/gadget/udc/bdc/bdc_ep.c
1559
if (bdc->zlp_needed)
drivers/usb/gadget/udc/bdc/bdc_ep.c
1560
bdc->zlp_needed = false;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1568
if ((bdc->ep0_state != WAIT_FOR_STATUS_START) &&
drivers/usb/gadget/udc/bdc/bdc_ep.c
1569
(bdc->ep0_state != WAIT_FOR_DATA_XMIT))
drivers/usb/gadget/udc/bdc/bdc_ep.c
1570
dev_err(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_ep.c
1572
ep0_state_string[bdc->ep0_state]);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1575
if (bdc->ep0_state == WAIT_FOR_DATA_XMIT) {
drivers/usb/gadget/udc/bdc/bdc_ep.c
1576
bdc->ep0_state = STATUS_PENDING;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1578
dev_dbg(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_ep.c
1582
setup_pkt = &bdc->setup_pkt;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1589
ret = handle_control_request(bdc);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1591
bdc->delayed_status = true;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1598
ep0_queue_status_stage(bdc);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1599
bdc->ep0_state = WAIT_FOR_STATUS_XMIT;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1600
dev_dbg(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_ep.c
1601
"ep0_state:%s", ep0_state_string[bdc->ep0_state]);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1605
ep0_stall(bdc);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1609
static void ep0_xsf_complete(struct bdc *bdc, struct bdc_sr *sreport)
drivers/usb/gadget/udc/bdc/bdc_ep.c
1611
dev_dbg(bdc->dev, "%s\n", __func__);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1612
switch (bdc->ep0_state) {
drivers/usb/gadget/udc/bdc/bdc_ep.c
1614
bdc->ep0_state = WAIT_FOR_STATUS_START;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1617
bdc->ep0_state = WAIT_FOR_SETUP;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1618
if (bdc->test_mode) {
drivers/usb/gadget/udc/bdc/bdc_ep.c
1621
dev_dbg(bdc->dev, "test_mode:%d\n", bdc->test_mode);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1622
ret = bdc_set_test_mode(bdc);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1624
dev_err(bdc->dev, "Err in setting Test mode\n");
drivers/usb/gadget/udc/bdc/bdc_ep.c
1627
bdc->test_mode = 0;
drivers/usb/gadget/udc/bdc/bdc_ep.c
163
dev_dbg(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_ep.c
1631
bdc_xsf_ep0_status_start(bdc, sreport);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1635
dev_err(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_ep.c
1637
ep0_state_string[bdc->ep0_state]);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1643
void bdc_sr_xsf(struct bdc *bdc, struct bdc_sr *sreport)
drivers/usb/gadget/udc/bdc/bdc_ep.c
1650
if (ep_num >= bdc->num_eps) {
drivers/usb/gadget/udc/bdc/bdc_ep.c
1651
dev_err(bdc->dev, "xsf for invalid ep %u\n", ep_num);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1654
ep = bdc->bdc_ep_array[ep_num];
drivers/usb/gadget/udc/bdc/bdc_ep.c
1656
dev_err(bdc->dev, "xsf for ep not enabled\n");
drivers/usb/gadget/udc/bdc/bdc_ep.c
1663
if (bdc->devstatus & FUNC_WAKE_ISSUED) {
drivers/usb/gadget/udc/bdc/bdc_ep.c
1664
bdc->devstatus &= ~(FUNC_WAKE_ISSUED);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1665
dev_dbg(bdc->dev, "%s clearing FUNC_WAKE_ISSUED flag\n",
drivers/usb/gadget/udc/bdc/bdc_ep.c
1669
dev_dbg_ratelimited(bdc->dev, "%s sr_status=%d ep:%s\n",
drivers/usb/gadget/udc/bdc/bdc_ep.c
1675
handle_xsr_succ_status(bdc, ep, sreport);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1677
ep0_xsf_complete(bdc, sreport);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1684
dev_err(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_ep.c
1688
bdc->sr_xsf_ep0[sr_status - XSF_SETUP_RECV](bdc, sreport);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1693
dev_dbg(bdc->dev, "Babble on ep0 zlp_need:%d\n",
drivers/usb/gadget/udc/bdc/bdc_ep.c
1694
bdc->zlp_needed);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1699
if (bdc->zlp_needed) {
drivers/usb/gadget/udc/bdc/bdc_ep.c
1701
ep0_queue_zlp(bdc);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1705
dev_warn(bdc->dev, "Babble on ep not handled\n");
drivers/usb/gadget/udc/bdc/bdc_ep.c
1708
dev_warn(bdc->dev, "sr status not handled:%x\n", sr_status);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1719
struct bdc *bdc;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1730
bdc = ep->bdc;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1731
dev_dbg(bdc->dev, "%s ep:%p req:%p\n", __func__, ep, req);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1732
dev_dbg(bdc->dev, "queuing request %p to %s length %d zero:%d\n",
drivers/usb/gadget/udc/bdc/bdc_ep.c
1736
dev_warn(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_ep.c
1743
dev_warn(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_ep.c
1748
spin_lock_irqsave(&bdc->lock, flags);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1749
if (ep == bdc->bdc_ep_array[1])
drivers/usb/gadget/udc/bdc/bdc_ep.c
1754
spin_unlock_irqrestore(&bdc->lock, flags);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1766
struct bdc *bdc;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1774
bdc = ep->bdc;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1775
dev_dbg(bdc->dev, "%s ep:%s req:%p\n", __func__, ep->name, req);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1776
bdc_dbg_bd_list(bdc, ep);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1777
spin_lock_irqsave(&bdc->lock, flags);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1788
spin_unlock_irqrestore(&bdc->lock, flags);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1789
dev_err(bdc->dev, "usb_req !=req n");
drivers/usb/gadget/udc/bdc/bdc_ep.c
1800
bdc_dbg_bd_list(bdc, ep);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1801
spin_unlock_irqrestore(&bdc->lock, flags);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1810
struct bdc *bdc;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1814
bdc = ep->bdc;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1815
dev_dbg(bdc->dev, "%s ep:%s value=%d\n", __func__, ep->name, value);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1816
spin_lock_irqsave(&bdc->lock, flags);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1824
spin_unlock_irqrestore(&bdc->lock, flags);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1843
dev_dbg(ep->bdc->dev, "%s ep:%s req:%p\n", __func__, ep->name, req);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1865
struct bdc *bdc;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1879
bdc = ep->bdc;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1882
if (ep == bdc->bdc_ep_array[1])
drivers/usb/gadget/udc/bdc/bdc_ep.c
1885
if (!bdc->gadget_driver
drivers/usb/gadget/udc/bdc/bdc_ep.c
1886
|| bdc->gadget.speed == USB_SPEED_UNKNOWN) {
drivers/usb/gadget/udc/bdc/bdc_ep.c
1890
dev_dbg(bdc->dev, "%s Enabling %s\n", __func__, ep->name);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1891
spin_lock_irqsave(&bdc->lock, flags);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1895
spin_unlock_irqrestore(&bdc->lock, flags);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1904
struct bdc *bdc;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1912
bdc = ep->bdc;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1915
if (ep == bdc->bdc_ep_array[1]) {
drivers/usb/gadget/udc/bdc/bdc_ep.c
1916
dev_warn(bdc->dev, "%s called for ep0\n", __func__);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1919
dev_dbg(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_ep.c
1924
if (bdc->gadget.speed != USB_SPEED_UNKNOWN)
drivers/usb/gadget/udc/bdc/bdc_ep.c
1925
dev_warn(bdc->dev, "%s is already disabled\n",
drivers/usb/gadget/udc/bdc/bdc_ep.c
1929
spin_lock_irqsave(&bdc->lock, flags);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1931
spin_unlock_irqrestore(&bdc->lock, flags);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1947
static int init_ep(struct bdc *bdc, u32 epnum, u32 dir)
drivers/usb/gadget/udc/bdc/bdc_ep.c
1951
dev_dbg(bdc->dev, "%s epnum=%d dir=%d\n", __func__, epnum, dir);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1956
ep->bdc = bdc;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1967
bdc->bdc_ep_array[ep->ep_num] = ep;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1972
bdc->gadget.ep0 = &ep->usb_ep;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1979
bdc->bdc_ep_array[ep->ep_num] = ep;
drivers/usb/gadget/udc/bdc/bdc_ep.c
1988
list_add_tail(&ep->usb_ep.ep_list, &bdc->gadget.ep_list);
drivers/usb/gadget/udc/bdc/bdc_ep.c
1994
dev_dbg(bdc->dev, "ep=%p ep->usb_ep.name=%s epnum=%d ep->epnum=%d\n",
drivers/usb/gadget/udc/bdc/bdc_ep.c
2003
int bdc_init_ep(struct bdc *bdc)
drivers/usb/gadget/udc/bdc/bdc_ep.c
2008
dev_dbg(bdc->dev, "%s()\n", __func__);
drivers/usb/gadget/udc/bdc/bdc_ep.c
2009
INIT_LIST_HEAD(&bdc->gadget.ep_list);
drivers/usb/gadget/udc/bdc/bdc_ep.c
2011
ret = init_ep(bdc, 1, 0);
drivers/usb/gadget/udc/bdc/bdc_ep.c
2013
dev_err(bdc->dev, "init ep ep0 fail %d\n", ret);
drivers/usb/gadget/udc/bdc/bdc_ep.c
2017
for (epnum = 2; epnum <= bdc->num_eps / 2; epnum++) {
drivers/usb/gadget/udc/bdc/bdc_ep.c
2019
ret = init_ep(bdc, epnum, 0);
drivers/usb/gadget/udc/bdc/bdc_ep.c
2021
dev_err(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_ep.c
2028
ret = init_ep(bdc, epnum, 1);
drivers/usb/gadget/udc/bdc/bdc_ep.c
2030
dev_err(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_ep.c
218
struct bdc *bdc = ep->bdc;
drivers/usb/gadget/udc/bdc/bdc_ep.c
224
dev_dbg(bdc->dev, "%s %llx\n",
drivers/usb/gadget/udc/bdc/bdc_ep.c
237
dev_dbg(bdc->dev, "dma_first_bd:%llx dma_last_bd:%llx\n",
drivers/usb/gadget/udc/bdc/bdc_ep.c
246
dev_err(bdc->dev, "%s FATAL err, bd not found\n", __func__);
drivers/usb/gadget/udc/bdc/bdc_ep.c
262
dev_vdbg(ep->bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_ep.c
291
struct bdc *bdc = ep->bdc;
drivers/usb/gadget/udc/bdc/bdc_ep.c
310
dev_vdbg(bdc->dev, "chain_bd1:%d chain_bd2:%d\n",
drivers/usb/gadget/udc/bdc/bdc_ep.c
334
dev_vdbg(bdc->dev, "available_bd:%d\n", available_bd);
drivers/usb/gadget/udc/bdc/bdc_ep.c
340
void bdc_notify_xfr(struct bdc *bdc, u32 epnum)
drivers/usb/gadget/udc/bdc/bdc_ep.c
342
struct bdc_ep *ep = bdc->bdc_ep_array[epnum];
drivers/usb/gadget/udc/bdc/bdc_ep.c
344
dev_vdbg(bdc->dev, "%s epnum:%d\n", __func__, epnum);
drivers/usb/gadget/udc/bdc/bdc_ep.c
352
bdc_writel(bdc->regs, BDC_XSFNTF, epnum);
drivers/usb/gadget/udc/bdc/bdc_ep.c
362
dev_vdbg(ep->bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_ep.c
383
static int setup_first_bd_ep0(struct bdc *bdc, struct bdc_req *req, u32 *dword3)
drivers/usb/gadget/udc/bdc/bdc_ep.c
390
switch (bdc->ep0_state) {
drivers/usb/gadget/udc/bdc/bdc_ep.c
393
if (bdc->setup_pkt.bRequestType & USB_DIR_IN)
drivers/usb/gadget/udc/bdc/bdc_ep.c
397
wValue = le16_to_cpu(bdc->setup_pkt.wValue);
drivers/usb/gadget/udc/bdc/bdc_ep.c
399
(req_len % bdc->gadget.ep0->maxpacket == 0)) {
drivers/usb/gadget/udc/bdc/bdc_ep.c
400
dev_dbg(bdc->dev, "ZLP needed wVal:%d len:%d MaxP:%d\n",
drivers/usb/gadget/udc/bdc/bdc_ep.c
402
bdc->gadget.ep0->maxpacket);
drivers/usb/gadget/udc/bdc/bdc_ep.c
403
bdc->zlp_needed = true;
drivers/usb/gadget/udc/bdc/bdc_ep.c
409
if (!le16_to_cpu(bdc->setup_pkt.wLength) ||
drivers/usb/gadget/udc/bdc/bdc_ep.c
410
!(bdc->setup_pkt.bRequestType & USB_DIR_IN))
drivers/usb/gadget/udc/bdc/bdc_ep.c
414
dev_err(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_ep.c
416
ep0_state_string[bdc->ep0_state]);
drivers/usb/gadget/udc/bdc/bdc_ep.c
424
static int setup_bd_list_xfr(struct bdc *bdc, struct bdc_req *req, int num_bds)
drivers/usb/gadget/udc/bdc/bdc_ep.c
445
dev_vdbg(bdc->dev, "%s ep:%s num_bds:%d tfs:%d r_len:%d bd:%p\n",
drivers/usb/gadget/udc/bdc/bdc_ep.c
456
ret = setup_first_bd_ep0(bdc, req, &dword3);
drivers/usb/gadget/udc/bdc/bdc_ep.c
477
dev_err(bdc->dev, "Err bd pointing to wrong addr\n");
drivers/usb/gadget/udc/bdc/bdc_ep.c
489
dev_vdbg(bdc->dev, "buf_add:%08llx req_len:%d bd:%p eqp:%d\n",
drivers/usb/gadget/udc/bdc/bdc_ep.c
508
static int bdc_queue_xfr(struct bdc *bdc, struct bdc_req *req)
drivers/usb/gadget/udc/bdc/bdc_ep.c
515
dev_dbg(bdc->dev, "%s req:%p\n", __func__, req);
drivers/usb/gadget/udc/bdc/bdc_ep.c
516
dev_dbg(bdc->dev, "eqp_bdi:%d hwd_bdi:%d\n",
drivers/usb/gadget/udc/bdc/bdc_ep.c
526
ret = setup_bd_list_xfr(bdc, req, num_bds);
drivers/usb/gadget/udc/bdc/bdc_ep.c
530
bdc_dbg_bd_list(bdc, ep);
drivers/usb/gadget/udc/bdc/bdc_ep.c
531
bdc_notify_xfr(bdc, ep->ep_num);
drivers/usb/gadget/udc/bdc/bdc_ep.c
540
struct bdc *bdc = ep->bdc;
drivers/usb/gadget/udc/bdc/bdc_ep.c
545
dev_dbg(bdc->dev, "%s ep:%s status:%d\n", __func__, ep->name, status);
drivers/usb/gadget/udc/bdc/bdc_ep.c
548
usb_gadget_unmap_request(&bdc->gadget, &req->usb_req, ep->dir);
drivers/usb/gadget/udc/bdc/bdc_ep.c
55
struct bdc *bdc = ep->bdc;
drivers/usb/gadget/udc/bdc/bdc_ep.c
550
spin_unlock(&bdc->lock);
drivers/usb/gadget/udc/bdc/bdc_ep.c
552
spin_lock(&bdc->lock);
drivers/usb/gadget/udc/bdc/bdc_ep.c
560
struct bdc *bdc;
drivers/usb/gadget/udc/bdc/bdc_ep.c
564
bdc = ep->bdc;
drivers/usb/gadget/udc/bdc/bdc_ep.c
565
dev_dbg(bdc->dev, "%s() ep->ep_num=%d\n", __func__, ep->ep_num);
drivers/usb/gadget/udc/bdc/bdc_ep.c
567
ret = bdc_stop_ep(bdc, ep->ep_num);
drivers/usb/gadget/udc/bdc/bdc_ep.c
580
ret = bdc_dconfig_ep(bdc, ep);
drivers/usb/gadget/udc/bdc/bdc_ep.c
582
dev_warn(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_ep.c
59
dev_dbg(bdc->dev, "%s ep:%s num_tabs:%d\n",
drivers/usb/gadget/udc/bdc/bdc_ep.c
603
struct bdc *bdc;
drivers/usb/gadget/udc/bdc/bdc_ep.c
606
bdc = ep->bdc;
drivers/usb/gadget/udc/bdc/bdc_ep.c
607
dev_dbg(bdc->dev, "%s NUM_TABLES:%d %d\n",
drivers/usb/gadget/udc/bdc/bdc_ep.c
612
dev_err(bdc->dev, "ep bd list allocation failed:%d\n", ret);
drivers/usb/gadget/udc/bdc/bdc_ep.c
615
bdc_dbg_bd_list(bdc, ep);
drivers/usb/gadget/udc/bdc/bdc_ep.c
621
ret = bdc_config_ep(bdc, ep);
drivers/usb/gadget/udc/bdc/bdc_ep.c
63
dev_dbg(bdc->dev, "%s already freed\n", ep->name);
drivers/usb/gadget/udc/bdc/bdc_ep.c
637
static int ep0_queue_status_stage(struct bdc *bdc)
drivers/usb/gadget/udc/bdc/bdc_ep.c
642
status_req = &bdc->status_req;
drivers/usb/gadget/udc/bdc/bdc_ep.c
643
ep = bdc->bdc_ep_array[1];
drivers/usb/gadget/udc/bdc/bdc_ep.c
649
bdc_queue_xfr(bdc, status_req);
drivers/usb/gadget/udc/bdc/bdc_ep.c
657
struct bdc *bdc;
drivers/usb/gadget/udc/bdc/bdc_ep.c
660
bdc = ep->bdc;
drivers/usb/gadget/udc/bdc/bdc_ep.c
661
dev_dbg(bdc->dev, "%s()\n", __func__);
drivers/usb/gadget/udc/bdc/bdc_ep.c
666
if (bdc->delayed_status) {
drivers/usb/gadget/udc/bdc/bdc_ep.c
667
bdc->delayed_status = false;
drivers/usb/gadget/udc/bdc/bdc_ep.c
669
if (bdc->ep0_state == WAIT_FOR_STATUS_START) {
drivers/usb/gadget/udc/bdc/bdc_ep.c
671
ep0_queue_status_stage(bdc);
drivers/usb/gadget/udc/bdc/bdc_ep.c
672
bdc->ep0_state = WAIT_FOR_STATUS_XMIT;
drivers/usb/gadget/udc/bdc/bdc_ep.c
685
ret = usb_gadget_map_request(&bdc->gadget, &req->usb_req, ep->dir);
drivers/usb/gadget/udc/bdc/bdc_ep.c
687
dev_err(bdc->dev, "dma mapping failed %s\n", ep->name);
drivers/usb/gadget/udc/bdc/bdc_ep.c
691
return bdc_queue_xfr(bdc, req);
drivers/usb/gadget/udc/bdc/bdc_ep.c
695
static int ep0_queue_data_stage(struct bdc *bdc)
drivers/usb/gadget/udc/bdc/bdc_ep.c
699
dev_dbg(bdc->dev, "%s\n", __func__);
drivers/usb/gadget/udc/bdc/bdc_ep.c
700
ep = bdc->bdc_ep_array[1];
drivers/usb/gadget/udc/bdc/bdc_ep.c
701
bdc->ep0_req.ep = ep;
drivers/usb/gadget/udc/bdc/bdc_ep.c
702
bdc->ep0_req.usb_req.complete = NULL;
drivers/usb/gadget/udc/bdc/bdc_ep.c
704
return ep0_queue(ep, &bdc->ep0_req);
drivers/usb/gadget/udc/bdc/bdc_ep.c
710
struct bdc *bdc;
drivers/usb/gadget/udc/bdc/bdc_ep.c
716
bdc = ep->bdc;
drivers/usb/gadget/udc/bdc/bdc_ep.c
722
ret = usb_gadget_map_request(&bdc->gadget, &req->usb_req, ep->dir);
drivers/usb/gadget/udc/bdc/bdc_ep.c
724
dev_err(bdc->dev, "dma mapping failed\n");
drivers/usb/gadget/udc/bdc/bdc_ep.c
728
return bdc_queue_xfr(bdc, req);
drivers/usb/gadget/udc/bdc/bdc_ep.c
73
dev_dbg(bdc->dev, "bd_table:%p index:%d\n", bd_table, index);
drivers/usb/gadget/udc/bdc/bdc_ep.c
742
struct bdc *bdc;
drivers/usb/gadget/udc/bdc/bdc_ep.c
746
bdc = ep->bdc;
drivers/usb/gadget/udc/bdc/bdc_ep.c
75
dev_dbg(bdc->dev, "bd_table not allocated\n");
drivers/usb/gadget/udc/bdc/bdc_ep.c
756
dev_dbg(bdc->dev, "%s ep:%s start:%d end:%d\n",
drivers/usb/gadget/udc/bdc/bdc_ep.c
758
dev_dbg(bdc->dev, "%s ep=%p ep->desc=%p\n", __func__,
drivers/usb/gadget/udc/bdc/bdc_ep.c
761
if (!(bdc_readl(bdc->regs, BDC_USPC) & BDC_PST_MASK)) {
drivers/usb/gadget/udc/bdc/bdc_ep.c
762
ret = bdc_stop_ep(bdc, ep->ep_num);
drivers/usb/gadget/udc/bdc/bdc_ep.c
775
tmp_32 = bdc_readl(bdc->regs, BDC_EPSTS0);
drivers/usb/gadget/udc/bdc/bdc_ep.c
777
tmp_32 = bdc_readl(bdc->regs, BDC_EPSTS1);
drivers/usb/gadget/udc/bdc/bdc_ep.c
79
dev_dbg(bdc->dev, "bd dma pool not allocated\n");
drivers/usb/gadget/udc/bdc/bdc_ep.c
807
dev_dbg(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_ep.c
809
start_pending, end_pending, bdc->gadget.speed);
drivers/usb/gadget/udc/bdc/bdc_ep.c
819
if (bdc->gadget.speed == USB_SPEED_UNKNOWN)
drivers/usb/gadget/udc/bdc/bdc_ep.c
83
dev_dbg(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_ep.c
848
bdc_dbg_bd_list(bdc, ep);
drivers/usb/gadget/udc/bdc/bdc_ep.c
854
ret = bdc_ep_bla(bdc, ep, next_bd_dma);
drivers/usb/gadget/udc/bdc/bdc_ep.c
856
dev_err(bdc->dev, "error in ep_bla:%d\n", ret);
drivers/usb/gadget/udc/bdc/bdc_ep.c
867
struct bdc *bdc;
drivers/usb/gadget/udc/bdc/bdc_ep.c
870
bdc = ep->bdc;
drivers/usb/gadget/udc/bdc/bdc_ep.c
871
dev_dbg(bdc->dev, "%s ep:%s value=%d\n", __func__, ep->name, value);
drivers/usb/gadget/udc/bdc/bdc_ep.c
874
dev_dbg(bdc->dev, "Halt\n");
drivers/usb/gadget/udc/bdc/bdc_ep.c
876
bdc->ep0_state = WAIT_FOR_SETUP;
drivers/usb/gadget/udc/bdc/bdc_ep.c
878
ret = bdc_ep_set_stall(bdc, ep->ep_num);
drivers/usb/gadget/udc/bdc/bdc_ep.c
88
dma_pool_free(bdc->bd_table_pool,
drivers/usb/gadget/udc/bdc/bdc_ep.c
880
dev_err(bdc->dev, "failed to set STALL on %s\n",
drivers/usb/gadget/udc/bdc/bdc_ep.c
886
dev_dbg(bdc->dev, "Before Clear\n");
drivers/usb/gadget/udc/bdc/bdc_ep.c
887
ret = bdc_ep_clear_stall(bdc, ep->ep_num);
drivers/usb/gadget/udc/bdc/bdc_ep.c
889
dev_err(bdc->dev, "failed to clear STALL on %s\n",
drivers/usb/gadget/udc/bdc/bdc_ep.c
893
dev_dbg(bdc->dev, "After Clear\n");
drivers/usb/gadget/udc/bdc/bdc_ep.c
900
void bdc_free_ep(struct bdc *bdc)
drivers/usb/gadget/udc/bdc/bdc_ep.c
905
dev_dbg(bdc->dev, "%s\n", __func__);
drivers/usb/gadget/udc/bdc/bdc_ep.c
906
for (epnum = 1; epnum < bdc->num_eps; epnum++) {
drivers/usb/gadget/udc/bdc/bdc_ep.c
907
ep = bdc->bdc_ep_array[epnum];
drivers/usb/gadget/udc/bdc/bdc_ep.c
923
static int bdc_set_test_mode(struct bdc *bdc)
drivers/usb/gadget/udc/bdc/bdc_ep.c
927
usb2_pm = bdc_readl(bdc->regs, BDC_USPPM2);
drivers/usb/gadget/udc/bdc/bdc_ep.c
929
dev_dbg(bdc->dev, "%s\n", __func__);
drivers/usb/gadget/udc/bdc/bdc_ep.c
930
switch (bdc->test_mode) {
drivers/usb/gadget/udc/bdc/bdc_ep.c
936
usb2_pm |= bdc->test_mode << 28;
drivers/usb/gadget/udc/bdc/bdc_ep.c
941
dev_dbg(bdc->dev, "usb2_pm=%08x", usb2_pm);
drivers/usb/gadget/udc/bdc/bdc_ep.c
942
bdc_writel(bdc->regs, BDC_USPPM2, usb2_pm);
drivers/usb/gadget/udc/bdc/bdc_ep.c
951
static void handle_xsr_succ_status(struct bdc *bdc, struct bdc_ep *ep,
drivers/usb/gadget/udc/bdc/bdc_ep.c
965
dev_dbg(bdc->dev, "%s ep:%p\n", __func__, ep);
drivers/usb/gadget/udc/bdc/bdc_ep.c
966
bdc_dbg_srr(bdc, 0);
drivers/usb/gadget/udc/bdc/bdc_ep.c
974
dev_warn(bdc->dev, "xfr srr with no BD's queued\n");
drivers/usb/gadget/udc/bdc/bdc_ep.c
999
dev_warn(bdc->dev, "bd doesn't exist?\n");
drivers/usb/gadget/udc/bdc/bdc_ep.h
12
int bdc_init_ep(struct bdc *bdc);
drivers/usb/gadget/udc/bdc/bdc_ep.h
15
void bdc_free_ep(struct bdc *bdc);
drivers/usb/gadget/udc/bdc/bdc_udc.c
104
bdc->gadget.ep0->maxpacket = 64;
drivers/usb/gadget/udc/bdc/bdc_udc.c
105
bdc->gadget.speed = USB_SPEED_FULL;
drivers/usb/gadget/udc/bdc/bdc_udc.c
110
bdc->gadget.ep0->maxpacket = 8;
drivers/usb/gadget/udc/bdc/bdc_udc.c
111
bdc->gadget.speed = USB_SPEED_LOW;
drivers/usb/gadget/udc/bdc/bdc_udc.c
114
dev_err(bdc->dev, "UNDEFINED SPEED\n");
drivers/usb/gadget/udc/bdc/bdc_udc.c
117
dev_dbg(bdc->dev, "connected at %s\n", conn_speed_str[speed]);
drivers/usb/gadget/udc/bdc/bdc_udc.c
119
bdc->bdc_ep_array[1]->desc = &bdc_gadget_ep0_desc;
drivers/usb/gadget/udc/bdc/bdc_udc.c
120
ret = bdc_config_ep(bdc, bdc->bdc_ep_array[1]);
drivers/usb/gadget/udc/bdc/bdc_udc.c
122
dev_err(bdc->dev, "EP0 config failed\n");
drivers/usb/gadget/udc/bdc/bdc_udc.c
123
bdc->bdc_ep_array[1]->usb_ep.desc = &bdc_gadget_ep0_desc;
drivers/usb/gadget/udc/bdc/bdc_udc.c
124
bdc->bdc_ep_array[1]->flags |= BDC_EP_ENABLED;
drivers/usb/gadget/udc/bdc/bdc_udc.c
125
usb_gadget_set_state(&bdc->gadget, USB_STATE_DEFAULT);
drivers/usb/gadget/udc/bdc/bdc_udc.c
129
static void bdc_uspc_disconnected(struct bdc *bdc, bool reinit)
drivers/usb/gadget/udc/bdc/bdc_udc.c
133
dev_dbg(bdc->dev, "%s\n", __func__);
drivers/usb/gadget/udc/bdc/bdc_udc.c
138
ep = bdc->bdc_ep_array[1];
drivers/usb/gadget/udc/bdc/bdc_udc.c
143
if (bdc->gadget_driver && bdc->gadget_driver->disconnect) {
drivers/usb/gadget/udc/bdc/bdc_udc.c
144
spin_unlock(&bdc->lock);
drivers/usb/gadget/udc/bdc/bdc_udc.c
145
bdc->gadget_driver->disconnect(&bdc->gadget);
drivers/usb/gadget/udc/bdc/bdc_udc.c
146
spin_lock(&bdc->lock);
drivers/usb/gadget/udc/bdc/bdc_udc.c
149
bdc->gadget.speed = USB_SPEED_UNKNOWN;
drivers/usb/gadget/udc/bdc/bdc_udc.c
150
bdc->devstatus &= DEVSTATUS_CLEAR;
drivers/usb/gadget/udc/bdc/bdc_udc.c
151
bdc->delayed_status = false;
drivers/usb/gadget/udc/bdc/bdc_udc.c
152
bdc->reinit = reinit;
drivers/usb/gadget/udc/bdc/bdc_udc.c
153
bdc->test_mode = false;
drivers/usb/gadget/udc/bdc/bdc_udc.c
154
usb_gadget_set_state(&bdc->gadget, USB_STATE_NOTATTACHED);
drivers/usb/gadget/udc/bdc/bdc_udc.c
160
struct bdc *bdc = container_of(work, struct bdc, func_wake_notify.work);
drivers/usb/gadget/udc/bdc/bdc_udc.c
163
dev_dbg(bdc->dev, "%s\n", __func__);
drivers/usb/gadget/udc/bdc/bdc_udc.c
164
spin_lock_irqsave(&bdc->lock, flags);
drivers/usb/gadget/udc/bdc/bdc_udc.c
169
if (bdc->devstatus & FUNC_WAKE_ISSUED) {
drivers/usb/gadget/udc/bdc/bdc_udc.c
170
dev_dbg(bdc->dev, "FUNC_WAKE_ISSUED FLAG IS STILL SET\n");
drivers/usb/gadget/udc/bdc/bdc_udc.c
172
bdc_function_wake_fh(bdc, 0);
drivers/usb/gadget/udc/bdc/bdc_udc.c
173
schedule_delayed_work(&bdc->func_wake_notify,
drivers/usb/gadget/udc/bdc/bdc_udc.c
176
spin_unlock_irqrestore(&bdc->lock, flags);
drivers/usb/gadget/udc/bdc/bdc_udc.c
180
static void handle_link_state_change(struct bdc *bdc, u32 uspc)
drivers/usb/gadget/udc/bdc/bdc_udc.c
184
dev_dbg(bdc->dev, "Link state change");
drivers/usb/gadget/udc/bdc/bdc_udc.c
188
if ((bdc->gadget.speed != USB_SPEED_UNKNOWN) &&
drivers/usb/gadget/udc/bdc/bdc_udc.c
189
bdc->gadget_driver->suspend) {
drivers/usb/gadget/udc/bdc/bdc_udc.c
190
dev_dbg(bdc->dev, "Entered Suspend mode\n");
drivers/usb/gadget/udc/bdc/bdc_udc.c
191
spin_unlock(&bdc->lock);
drivers/usb/gadget/udc/bdc/bdc_udc.c
192
bdc->devstatus |= DEVICE_SUSPENDED;
drivers/usb/gadget/udc/bdc/bdc_udc.c
193
bdc->gadget_driver->suspend(&bdc->gadget);
drivers/usb/gadget/udc/bdc/bdc_udc.c
194
spin_lock(&bdc->lock);
drivers/usb/gadget/udc/bdc/bdc_udc.c
198
if (bdc->devstatus & REMOTE_WAKEUP_ISSUED) {
drivers/usb/gadget/udc/bdc/bdc_udc.c
199
bdc->devstatus &= ~REMOTE_WAKEUP_ISSUED;
drivers/usb/gadget/udc/bdc/bdc_udc.c
200
if (bdc->gadget.speed == USB_SPEED_SUPER) {
drivers/usb/gadget/udc/bdc/bdc_udc.c
201
bdc_function_wake_fh(bdc, 0);
drivers/usb/gadget/udc/bdc/bdc_udc.c
202
bdc->devstatus |= FUNC_WAKE_ISSUED;
drivers/usb/gadget/udc/bdc/bdc_udc.c
211
&bdc->func_wake_notify,
drivers/usb/gadget/udc/bdc/bdc_udc.c
213
dev_dbg(bdc->dev, "sched func_wake_notify\n");
drivers/usb/gadget/udc/bdc/bdc_udc.c
219
dev_dbg(bdc->dev, "Resumed from Suspend\n");
drivers/usb/gadget/udc/bdc/bdc_udc.c
220
if (bdc->devstatus & DEVICE_SUSPENDED) {
drivers/usb/gadget/udc/bdc/bdc_udc.c
221
bdc->gadget_driver->resume(&bdc->gadget);
drivers/usb/gadget/udc/bdc/bdc_udc.c
222
bdc->devstatus &= ~DEVICE_SUSPENDED;
drivers/usb/gadget/udc/bdc/bdc_udc.c
226
dev_dbg(bdc->dev, "link state:%d\n", link_state);
drivers/usb/gadget/udc/bdc/bdc_udc.c
231
void bdc_sr_uspc(struct bdc *bdc, struct bdc_sr *sreport)
drivers/usb/gadget/udc/bdc/bdc_udc.c
238
uspc = bdc_readl(bdc->regs, BDC_USPC);
drivers/usb/gadget/udc/bdc/bdc_udc.c
239
dev_dbg(bdc->dev, "%s uspc=0x%08x\n", __func__, uspc);
drivers/usb/gadget/udc/bdc/bdc_udc.c
253
if (bdc->pullup) {
drivers/usb/gadget/udc/bdc/bdc_udc.c
254
dev_dbg(bdc->dev, "Do a softconnect\n");
drivers/usb/gadget/udc/bdc/bdc_udc.c
256
bdc_softconn(bdc);
drivers/usb/gadget/udc/bdc/bdc_udc.c
257
usb_gadget_set_state(&bdc->gadget, USB_STATE_POWERED);
drivers/usb/gadget/udc/bdc/bdc_udc.c
262
dev_dbg(bdc->dev, "Port reset or disconn\n");
drivers/usb/gadget/udc/bdc/bdc_udc.c
263
bdc_uspc_disconnected(bdc, disconn);
drivers/usb/gadget/udc/bdc/bdc_udc.c
267
handle_link_state_change(bdc, uspc);
drivers/usb/gadget/udc/bdc/bdc_udc.c
278
dev_dbg(bdc->dev, "Connected\n");
drivers/usb/gadget/udc/bdc/bdc_udc.c
279
bdc_uspc_connected(bdc);
drivers/usb/gadget/udc/bdc/bdc_udc.c
280
bdc->devstatus &= ~(DEVICE_SUSPENDED);
drivers/usb/gadget/udc/bdc/bdc_udc.c
282
uspc = bdc_readl(bdc->regs, BDC_USPC);
drivers/usb/gadget/udc/bdc/bdc_udc.c
284
dev_dbg(bdc->dev, "uspc=%x\n", uspc);
drivers/usb/gadget/udc/bdc/bdc_udc.c
285
bdc_writel(bdc->regs, BDC_USPC, clear_flags);
drivers/usb/gadget/udc/bdc/bdc_udc.c
293
struct bdc *bdc = _bdc;
drivers/usb/gadget/udc/bdc/bdc_udc.c
297
spin_lock(&bdc->lock);
drivers/usb/gadget/udc/bdc/bdc_udc.c
298
status = bdc_readl(bdc->regs, BDC_BDCSC);
drivers/usb/gadget/udc/bdc/bdc_udc.c
300
spin_unlock(&bdc->lock);
drivers/usb/gadget/udc/bdc/bdc_udc.c
303
srr_int = bdc_readl(bdc->regs, BDC_SRRINT(0));
drivers/usb/gadget/udc/bdc/bdc_udc.c
306
dev_warn(bdc->dev, "Global irq pending but SRR IP is 0\n");
drivers/usb/gadget/udc/bdc/bdc_udc.c
307
spin_unlock(&bdc->lock);
drivers/usb/gadget/udc/bdc/bdc_udc.c
312
dev_dbg(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_udc.c
314
__func__, eqp_index, dqp_index, bdc->srr.dqp_index);
drivers/usb/gadget/udc/bdc/bdc_udc.c
318
dev_dbg(bdc->dev, "SRR empty?\n");
drivers/usb/gadget/udc/bdc/bdc_udc.c
319
spin_unlock(&bdc->lock);
drivers/usb/gadget/udc/bdc/bdc_udc.c
323
while (bdc->srr.dqp_index != eqp_index) {
drivers/usb/gadget/udc/bdc/bdc_udc.c
324
sreport = &bdc->srr.sr_bds[bdc->srr.dqp_index];
drivers/usb/gadget/udc/bdc/bdc_udc.c
328
dev_dbg_ratelimited(bdc->dev, "sr_type=%d\n", sr_type);
drivers/usb/gadget/udc/bdc/bdc_udc.c
331
bdc->sr_handler[0](bdc, sreport);
drivers/usb/gadget/udc/bdc/bdc_udc.c
335
bdc->sr_handler[1](bdc, sreport);
drivers/usb/gadget/udc/bdc/bdc_udc.c
338
dev_warn(bdc->dev, "SR:%d not handled\n", sr_type);
drivers/usb/gadget/udc/bdc/bdc_udc.c
341
srr_dqp_index_advc(bdc, 0);
drivers/usb/gadget/udc/bdc/bdc_udc.c
344
srr_int = bdc_readl(bdc->regs, BDC_SRRINT(0));
drivers/usb/gadget/udc/bdc/bdc_udc.c
347
srr_int |= ((bdc->srr.dqp_index) << 16);
drivers/usb/gadget/udc/bdc/bdc_udc.c
349
bdc_writel(bdc->regs, BDC_SRRINT(0), srr_int);
drivers/usb/gadget/udc/bdc/bdc_udc.c
350
srr_int = bdc_readl(bdc->regs, BDC_SRRINT(0));
drivers/usb/gadget/udc/bdc/bdc_udc.c
351
if (bdc->reinit) {
drivers/usb/gadget/udc/bdc/bdc_udc.c
352
ret = bdc_reinit(bdc);
drivers/usb/gadget/udc/bdc/bdc_udc.c
354
dev_err(bdc->dev, "err in bdc reinit\n");
drivers/usb/gadget/udc/bdc/bdc_udc.c
357
spin_unlock(&bdc->lock);
drivers/usb/gadget/udc/bdc/bdc_udc.c
366
struct bdc *bdc = gadget_to_bdc(gadget);
drivers/usb/gadget/udc/bdc/bdc_udc.c
370
dev_dbg(bdc->dev, "%s()\n", __func__);
drivers/usb/gadget/udc/bdc/bdc_udc.c
371
spin_lock_irqsave(&bdc->lock, flags);
drivers/usb/gadget/udc/bdc/bdc_udc.c
372
if (bdc->gadget_driver) {
drivers/usb/gadget/udc/bdc/bdc_udc.c
373
dev_err(bdc->dev, "%s is already bound to %s\n",
drivers/usb/gadget/udc/bdc/bdc_udc.c
374
bdc->gadget.name,
drivers/usb/gadget/udc/bdc/bdc_udc.c
375
bdc->gadget_driver->driver.name);
drivers/usb/gadget/udc/bdc/bdc_udc.c
384
ret = bdc_run(bdc);
drivers/usb/gadget/udc/bdc/bdc_udc.c
386
dev_err(bdc->dev, "%s bdc run fail\n", __func__);
drivers/usb/gadget/udc/bdc/bdc_udc.c
389
bdc->gadget_driver = driver;
drivers/usb/gadget/udc/bdc/bdc_udc.c
390
bdc->gadget.dev.driver = &driver->driver;
drivers/usb/gadget/udc/bdc/bdc_udc.c
392
spin_unlock_irqrestore(&bdc->lock, flags);
drivers/usb/gadget/udc/bdc/bdc_udc.c
399
struct bdc *bdc = gadget_to_bdc(gadget);
drivers/usb/gadget/udc/bdc/bdc_udc.c
402
dev_dbg(bdc->dev, "%s()\n", __func__);
drivers/usb/gadget/udc/bdc/bdc_udc.c
403
spin_lock_irqsave(&bdc->lock, flags);
drivers/usb/gadget/udc/bdc/bdc_udc.c
404
bdc_stop(bdc);
drivers/usb/gadget/udc/bdc/bdc_udc.c
405
bdc->gadget_driver = NULL;
drivers/usb/gadget/udc/bdc/bdc_udc.c
406
bdc->gadget.dev.driver = NULL;
drivers/usb/gadget/udc/bdc/bdc_udc.c
407
spin_unlock_irqrestore(&bdc->lock, flags);
drivers/usb/gadget/udc/bdc/bdc_udc.c
414
struct bdc *bdc = gadget_to_bdc(gadget);
drivers/usb/gadget/udc/bdc/bdc_udc.c
418
dev_dbg(bdc->dev, "%s() is_on:%d\n", __func__, is_on);
drivers/usb/gadget/udc/bdc/bdc_udc.c
422
spin_lock_irqsave(&bdc->lock, flags);
drivers/usb/gadget/udc/bdc/bdc_udc.c
424
bdc_softdisconn(bdc);
drivers/usb/gadget/udc/bdc/bdc_udc.c
425
bdc->pullup = false;
drivers/usb/gadget/udc/bdc/bdc_udc.c
432
bdc->pullup = true;
drivers/usb/gadget/udc/bdc/bdc_udc.c
438
uspc = bdc_readl(bdc->regs, BDC_USPC);
drivers/usb/gadget/udc/bdc/bdc_udc.c
440
bdc_softconn(bdc);
drivers/usb/gadget/udc/bdc/bdc_udc.c
442
spin_unlock_irqrestore(&bdc->lock, flags);
drivers/usb/gadget/udc/bdc/bdc_udc.c
450
struct bdc *bdc = gadget_to_bdc(gadget);
drivers/usb/gadget/udc/bdc/bdc_udc.c
453
dev_dbg(bdc->dev, "%s()\n", __func__);
drivers/usb/gadget/udc/bdc/bdc_udc.c
455
spin_lock_irqsave(&bdc->lock, flags);
drivers/usb/gadget/udc/bdc/bdc_udc.c
457
bdc->devstatus |= 1 << USB_DEVICE_SELF_POWERED;
drivers/usb/gadget/udc/bdc/bdc_udc.c
459
bdc->devstatus &= ~(1 << USB_DEVICE_SELF_POWERED);
drivers/usb/gadget/udc/bdc/bdc_udc.c
461
spin_unlock_irqrestore(&bdc->lock, flags);
drivers/usb/gadget/udc/bdc/bdc_udc.c
468
struct bdc *bdc = gadget_to_bdc(gadget);
drivers/usb/gadget/udc/bdc/bdc_udc.c
474
dev_dbg(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_udc.c
476
__func__, bdc->devstatus);
drivers/usb/gadget/udc/bdc/bdc_udc.c
478
if (!(bdc->devstatus & REMOTE_WAKE_ENABLE))
drivers/usb/gadget/udc/bdc/bdc_udc.c
481
spin_lock_irqsave(&bdc->lock, flags);
drivers/usb/gadget/udc/bdc/bdc_udc.c
482
uspc = bdc_readl(bdc->regs, BDC_USPC);
drivers/usb/gadget/udc/bdc/bdc_udc.c
484
dev_dbg(bdc->dev, "link_state =%d portsc=%x", link_state, uspc);
drivers/usb/gadget/udc/bdc/bdc_udc.c
486
dev_warn(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_udc.c
492
if (bdc->gadget.speed == USB_SPEED_SUPER)
drivers/usb/gadget/udc/bdc/bdc_udc.c
493
bdc->devstatus |= REMOTE_WAKEUP_ISSUED;
drivers/usb/gadget/udc/bdc/bdc_udc.c
499
bdc_writel(bdc->regs, BDC_USPC, uspc);
drivers/usb/gadget/udc/bdc/bdc_udc.c
500
uspc = bdc_readl(bdc->regs, BDC_USPC);
drivers/usb/gadget/udc/bdc/bdc_udc.c
502
dev_dbg(bdc->dev, "link_state =%d portsc=%x", link_state, uspc);
drivers/usb/gadget/udc/bdc/bdc_udc.c
504
spin_unlock_irqrestore(&bdc->lock, flags);
drivers/usb/gadget/udc/bdc/bdc_udc.c
518
int bdc_udc_init(struct bdc *bdc)
drivers/usb/gadget/udc/bdc/bdc_udc.c
523
dev_dbg(bdc->dev, "%s()\n", __func__);
drivers/usb/gadget/udc/bdc/bdc_udc.c
524
bdc->gadget.ops = &bdc_gadget_ops;
drivers/usb/gadget/udc/bdc/bdc_udc.c
525
bdc->gadget.max_speed = USB_SPEED_SUPER;
drivers/usb/gadget/udc/bdc/bdc_udc.c
526
bdc->gadget.speed = USB_SPEED_UNKNOWN;
drivers/usb/gadget/udc/bdc/bdc_udc.c
527
bdc->gadget.dev.parent = bdc->dev;
drivers/usb/gadget/udc/bdc/bdc_udc.c
529
bdc->gadget.sg_supported = false;
drivers/usb/gadget/udc/bdc/bdc_udc.c
532
bdc->gadget.name = BRCM_BDC_NAME;
drivers/usb/gadget/udc/bdc/bdc_udc.c
533
ret = request_irq(bdc->irq, bdc_udc_interrupt, IRQF_SHARED,
drivers/usb/gadget/udc/bdc/bdc_udc.c
534
BRCM_BDC_NAME, bdc);
drivers/usb/gadget/udc/bdc/bdc_udc.c
536
dev_err(bdc->dev,
drivers/usb/gadget/udc/bdc/bdc_udc.c
538
bdc->irq, ret);
drivers/usb/gadget/udc/bdc/bdc_udc.c
542
ret = bdc_init_ep(bdc);
drivers/usb/gadget/udc/bdc/bdc_udc.c
544
dev_err(bdc->dev, "bdc init ep fail: %d\n", ret);
drivers/usb/gadget/udc/bdc/bdc_udc.c
548
ret = usb_add_gadget_udc(bdc->dev, &bdc->gadget);
drivers/usb/gadget/udc/bdc/bdc_udc.c
550
dev_err(bdc->dev, "failed to register udc\n");
drivers/usb/gadget/udc/bdc/bdc_udc.c
553
usb_gadget_set_state(&bdc->gadget, USB_STATE_NOTATTACHED);
drivers/usb/gadget/udc/bdc/bdc_udc.c
554
bdc->bdc_ep_array[1]->desc = &bdc_gadget_ep0_desc;
drivers/usb/gadget/udc/bdc/bdc_udc.c
559
ret = bdc_ep_enable(bdc->bdc_ep_array[1]);
drivers/usb/gadget/udc/bdc/bdc_udc.c
561
dev_err(bdc->dev, "fail to enable %s\n",
drivers/usb/gadget/udc/bdc/bdc_udc.c
562
bdc->bdc_ep_array[1]->name);
drivers/usb/gadget/udc/bdc/bdc_udc.c
565
INIT_DELAYED_WORK(&bdc->func_wake_notify, bdc_func_wake_timer);
drivers/usb/gadget/udc/bdc/bdc_udc.c
567
temp = bdc_readl(bdc->regs, BDC_BDCSC);
drivers/usb/gadget/udc/bdc/bdc_udc.c
569
bdc_writel(bdc->regs, BDC_BDCSC, temp);
drivers/usb/gadget/udc/bdc/bdc_udc.c
572
usb_del_gadget_udc(&bdc->gadget);
drivers/usb/gadget/udc/bdc/bdc_udc.c
574
free_irq(bdc->irq, bdc);
drivers/usb/gadget/udc/bdc/bdc_udc.c
575
bdc_free_ep(bdc);
drivers/usb/gadget/udc/bdc/bdc_udc.c
580
void bdc_udc_exit(struct bdc *bdc)
drivers/usb/gadget/udc/bdc/bdc_udc.c
584
dev_dbg(bdc->dev, "%s()\n", __func__);
drivers/usb/gadget/udc/bdc/bdc_udc.c
585
spin_lock_irqsave(&bdc->lock, flags);
drivers/usb/gadget/udc/bdc/bdc_udc.c
586
bdc_ep_disable(bdc->bdc_ep_array[1]);
drivers/usb/gadget/udc/bdc/bdc_udc.c
587
spin_unlock_irqrestore(&bdc->lock, flags);
drivers/usb/gadget/udc/bdc/bdc_udc.c
589
usb_del_gadget_udc(&bdc->gadget);
drivers/usb/gadget/udc/bdc/bdc_udc.c
590
bdc_free_ep(bdc);
drivers/usb/gadget/udc/bdc/bdc_udc.c
60
static void srr_dqp_index_advc(struct bdc *bdc, u32 srr_num)
drivers/usb/gadget/udc/bdc/bdc_udc.c
64
srr = &bdc->srr;
drivers/usb/gadget/udc/bdc/bdc_udc.c
65
dev_dbg_ratelimited(bdc->dev, "srr->dqp_index:%d\n", srr->dqp_index);
drivers/usb/gadget/udc/bdc/bdc_udc.c
73
static void bdc_uspc_connected(struct bdc *bdc)
drivers/usb/gadget/udc/bdc/bdc_udc.c
79
temp = bdc_readl(bdc->regs, BDC_USPC);
drivers/usb/gadget/udc/bdc/bdc_udc.c
81
dev_dbg(bdc->dev, "%s speed=%x\n", __func__, speed);
drivers/usb/gadget/udc/bdc/bdc_udc.c
86
bdc->gadget.ep0->maxpacket = EP0_MAX_PKT_SIZE;
drivers/usb/gadget/udc/bdc/bdc_udc.c
87
bdc->gadget.speed = USB_SPEED_SUPER;
drivers/usb/gadget/udc/bdc/bdc_udc.c
89
usppms = bdc_readl(bdc->regs, BDC_USPPMS);
drivers/usb/gadget/udc/bdc/bdc_udc.c
93
bdc_writel(bdc->regs, BDC_USPPMS, usppms);
drivers/usb/gadget/udc/bdc/bdc_udc.c
98
bdc->gadget.ep0->maxpacket = 64;
drivers/usb/gadget/udc/bdc/bdc_udc.c
99
bdc->gadget.speed = USB_SPEED_HIGH;