c67x00 74 drivers/usb/c67x00/c67x00-drv.c struct c67x00_device *c67x00 = __dev; c67x00 79 drivers/usb/c67x00/c67x00-drv.c int_status = c67x00_ll_hpi_status(c67x00); c67x00 84 drivers/usb/c67x00/c67x00-drv.c c67x00_ll_irq(c67x00, int_status); c67x00 86 drivers/usb/c67x00/c67x00-drv.c sie = &c67x00->sie[i]; c67x00 89 drivers/usb/c67x00/c67x00-drv.c msg = c67x00_ll_fetch_siemsg(c67x00, i); c67x00 93 drivers/usb/c67x00/c67x00-drv.c int_status = c67x00_ll_hpi_status(c67x00); c67x00 97 drivers/usb/c67x00/c67x00-drv.c dev_warn(&c67x00->pdev->dev, "Not all interrupts handled! " c67x00 107 drivers/usb/c67x00/c67x00-drv.c struct c67x00_device *c67x00; c67x00 124 drivers/usb/c67x00/c67x00-drv.c c67x00 = kzalloc(sizeof(*c67x00), GFP_KERNEL); c67x00 125 drivers/usb/c67x00/c67x00-drv.c if (!c67x00) c67x00 134 drivers/usb/c67x00/c67x00-drv.c c67x00->hpi.base = ioremap(res->start, resource_size(res)); c67x00 135 drivers/usb/c67x00/c67x00-drv.c if (!c67x00->hpi.base) { c67x00 141 drivers/usb/c67x00/c67x00-drv.c spin_lock_init(&c67x00->hpi.lock); c67x00 142 drivers/usb/c67x00/c67x00-drv.c c67x00->hpi.regstep = pdata->hpi_regstep; c67x00 143 drivers/usb/c67x00/c67x00-drv.c c67x00->pdata = dev_get_platdata(&pdev->dev); c67x00 144 drivers/usb/c67x00/c67x00-drv.c c67x00->pdev = pdev; c67x00 146 drivers/usb/c67x00/c67x00-drv.c c67x00_ll_init(c67x00); c67x00 147 drivers/usb/c67x00/c67x00-drv.c c67x00_ll_hpi_reg_init(c67x00); c67x00 149 drivers/usb/c67x00/c67x00-drv.c ret = request_irq(res2->start, c67x00_irq, 0, pdev->name, c67x00); c67x00 155 drivers/usb/c67x00/c67x00-drv.c ret = c67x00_ll_reset(c67x00); c67x00 162 drivers/usb/c67x00/c67x00-drv.c c67x00_probe_sie(&c67x00->sie[i], c67x00, i); c67x00 164 drivers/usb/c67x00/c67x00-drv.c platform_set_drvdata(pdev, c67x00); c67x00 169 drivers/usb/c67x00/c67x00-drv.c free_irq(res2->start, c67x00); c67x00 171 drivers/usb/c67x00/c67x00-drv.c iounmap(c67x00->hpi.base); c67x00 175 drivers/usb/c67x00/c67x00-drv.c kfree(c67x00); c67x00 182 drivers/usb/c67x00/c67x00-drv.c struct c67x00_device *c67x00 = platform_get_drvdata(pdev); c67x00 187 drivers/usb/c67x00/c67x00-drv.c c67x00_remove_sie(&c67x00->sie[i]); c67x00 189 drivers/usb/c67x00/c67x00-drv.c c67x00_ll_release(c67x00); c67x00 193 drivers/usb/c67x00/c67x00-drv.c free_irq(res->start, c67x00); c67x00 195 drivers/usb/c67x00/c67x00-drv.c iounmap(c67x00->hpi.base); c67x00 201 drivers/usb/c67x00/c67x00-drv.c kfree(c67x00); c67x00 35 drivers/usb/c67x00/c67x00-hcd.c struct c67x00_hcd *c67x00 = sie->private_data; c67x00 40 drivers/usb/c67x00/c67x00-hcd.c spin_lock_irqsave(&c67x00->lock, flags); c67x00 42 drivers/usb/c67x00/c67x00-hcd.c spin_unlock_irqrestore(&c67x00->lock, flags); c67x00 49 drivers/usb/c67x00/c67x00-hcd.c struct c67x00_hcd *c67x00 = hcd_to_c67x00_hcd(hcd); c67x00 50 drivers/usb/c67x00/c67x00-hcd.c struct c67x00_sie *sie = c67x00->sie; c67x00 69 drivers/usb/c67x00/c67x00-hcd.c struct c67x00_hcd *c67x00 = hcd_to_c67x00_hcd(hcd); c67x00 70 drivers/usb/c67x00/c67x00-hcd.c struct c67x00_sie *sie = c67x00->sie; c67x00 99 drivers/usb/c67x00/c67x00-hcd.c c67x00->low_speed_ports |= (1 << port); c67x00 101 drivers/usb/c67x00/c67x00-hcd.c c67x00->low_speed_ports &= ~(1 << port); c67x00 130 drivers/usb/c67x00/c67x00-hcd.c dev_dbg(c67x00_hcd_dev(c67x00), c67x00 146 drivers/usb/c67x00/c67x00-hcd.c dev_dbg(c67x00_hcd_dev(c67x00), c67x00 166 drivers/usb/c67x00/c67x00-hcd.c dev_dbg(c67x00_hcd_dev(c67x00), c67x00 172 drivers/usb/c67x00/c67x00-hcd.c dev_dbg(c67x00_hcd_dev(c67x00), c67x00 178 drivers/usb/c67x00/c67x00-hcd.c dev_dbg(c67x00_hcd_dev(c67x00), c67x00 184 drivers/usb/c67x00/c67x00-hcd.c dev_dbg(c67x00_hcd_dev(c67x00), c67x00 195 drivers/usb/c67x00/c67x00-hcd.c dev_dbg(c67x00_hcd_dev(c67x00), c67x00 201 drivers/usb/c67x00/c67x00-hcd.c dev_dbg(c67x00_hcd_dev(c67x00), c67x00 207 drivers/usb/c67x00/c67x00-hcd.c dev_dbg(c67x00_hcd_dev(c67x00), c67x00 220 drivers/usb/c67x00/c67x00-hcd.c dev_dbg(c67x00_hcd_dev(c67x00), "%s: unknown\n", __func__); c67x00 238 drivers/usb/c67x00/c67x00-hcd.c struct c67x00_hcd *c67x00 = sie->private_data; c67x00 239 drivers/usb/c67x00/c67x00-hcd.c struct usb_hcd *hcd = c67x00_hcd_to_hcd(c67x00); c67x00 244 drivers/usb/c67x00/c67x00-hcd.c c67x00_sched_kick(c67x00); c67x00 246 drivers/usb/c67x00/c67x00-hcd.c dev_warn(c67x00_hcd_dev(c67x00), c67x00 259 drivers/usb/c67x00/c67x00-hcd.c c67x00_sched_kick(c67x00); c67x00 285 drivers/usb/c67x00/c67x00-hcd.c struct c67x00_hcd *c67x00 = hcd_to_c67x00_hcd(hcd); c67x00 288 drivers/usb/c67x00/c67x00-hcd.c dev_dbg(c67x00_hcd_dev(c67x00), "%s\n", __func__); c67x00 289 drivers/usb/c67x00/c67x00-hcd.c temp_val = c67x00_ll_husb_get_frame(c67x00->sie); c67x00 331 drivers/usb/c67x00/c67x00-hcd.c struct c67x00_hcd *c67x00; c67x00 344 drivers/usb/c67x00/c67x00-hcd.c c67x00 = hcd_to_c67x00_hcd(hcd); c67x00 346 drivers/usb/c67x00/c67x00-hcd.c spin_lock_init(&c67x00->lock); c67x00 347 drivers/usb/c67x00/c67x00-hcd.c c67x00->sie = sie; c67x00 349 drivers/usb/c67x00/c67x00-hcd.c INIT_LIST_HEAD(&c67x00->list[PIPE_ISOCHRONOUS]); c67x00 350 drivers/usb/c67x00/c67x00-hcd.c INIT_LIST_HEAD(&c67x00->list[PIPE_INTERRUPT]); c67x00 351 drivers/usb/c67x00/c67x00-hcd.c INIT_LIST_HEAD(&c67x00->list[PIPE_CONTROL]); c67x00 352 drivers/usb/c67x00/c67x00-hcd.c INIT_LIST_HEAD(&c67x00->list[PIPE_BULK]); c67x00 353 drivers/usb/c67x00/c67x00-hcd.c c67x00->urb_count = 0; c67x00 354 drivers/usb/c67x00/c67x00-hcd.c INIT_LIST_HEAD(&c67x00->td_list); c67x00 355 drivers/usb/c67x00/c67x00-hcd.c c67x00->td_base_addr = CY_HCD_BUF_ADDR + SIE_TD_OFFSET(sie->sie_num); c67x00 356 drivers/usb/c67x00/c67x00-hcd.c c67x00->buf_base_addr = CY_HCD_BUF_ADDR + SIE_BUF_OFFSET(sie->sie_num); c67x00 357 drivers/usb/c67x00/c67x00-hcd.c c67x00->max_frame_bw = MAX_FRAME_BW_STD; c67x00 361 drivers/usb/c67x00/c67x00-hcd.c init_completion(&c67x00->endpoint_disable); c67x00 362 drivers/usb/c67x00/c67x00-hcd.c retval = c67x00_sched_start_scheduler(c67x00); c67x00 376 drivers/usb/c67x00/c67x00-hcd.c sie->private_data = c67x00; c67x00 383 drivers/usb/c67x00/c67x00-hcd.c c67x00_sched_stop_scheduler(c67x00); c67x00 393 drivers/usb/c67x00/c67x00-hcd.c struct c67x00_hcd *c67x00 = sie->private_data; c67x00 394 drivers/usb/c67x00/c67x00-hcd.c struct usb_hcd *hcd = c67x00_hcd_to_hcd(c67x00); c67x00 396 drivers/usb/c67x00/c67x00-hcd.c c67x00_sched_stop_scheduler(c67x00); c67x00 92 drivers/usb/c67x00/c67x00-hcd.h static inline struct usb_hcd *c67x00_hcd_to_hcd(struct c67x00_hcd *c67x00) c67x00 94 drivers/usb/c67x00/c67x00-hcd.h return container_of((void *)c67x00, struct usb_hcd, hcd_priv); c67x00 113 drivers/usb/c67x00/c67x00-hcd.h void c67x00_sched_kick(struct c67x00_hcd *c67x00); c67x00 114 drivers/usb/c67x00/c67x00-hcd.h int c67x00_sched_start_scheduler(struct c67x00_hcd *c67x00); c67x00 115 drivers/usb/c67x00/c67x00-hcd.h void c67x00_sched_stop_scheduler(struct c67x00_hcd *c67x00); c67x00 136 drivers/usb/c67x00/c67x00-sched.c static void dbg_td(struct c67x00_hcd *c67x00, struct c67x00_td *td, char *msg) c67x00 138 drivers/usb/c67x00/c67x00-sched.c struct device *dev = c67x00_hcd_dev(c67x00); c67x00 159 drivers/usb/c67x00/c67x00-sched.c static inline u16 c67x00_get_current_frame_number(struct c67x00_hcd *c67x00) c67x00 161 drivers/usb/c67x00/c67x00-sched.c return c67x00_ll_husb_get_frame(c67x00->sie) & HOST_FRAME_MASK; c67x00 198 drivers/usb/c67x00/c67x00-sched.c static void c67x00_release_urb(struct c67x00_hcd *c67x00, struct urb *urb) c67x00 205 drivers/usb/c67x00/c67x00-sched.c c67x00->urb_count--; c67x00 208 drivers/usb/c67x00/c67x00-sched.c c67x00->urb_iso_count--; c67x00 209 drivers/usb/c67x00/c67x00-sched.c if (c67x00->urb_iso_count == 0) c67x00 210 drivers/usb/c67x00/c67x00-sched.c c67x00->max_frame_bw = MAX_FRAME_BW_STD; c67x00 218 drivers/usb/c67x00/c67x00-sched.c list_for_each_entry(td, &c67x00->td_list, td_list) c67x00 231 drivers/usb/c67x00/c67x00-sched.c c67x00_ep_data_alloc(struct c67x00_hcd *c67x00, struct urb *urb) c67x00 237 drivers/usb/c67x00/c67x00-sched.c c67x00->current_frame = c67x00_get_current_frame_number(c67x00); c67x00 242 drivers/usb/c67x00/c67x00-sched.c if (frame_after(c67x00->current_frame, ep_data->next_frame)) c67x00 244 drivers/usb/c67x00/c67x00-sched.c frame_add(c67x00->current_frame, 1); c67x00 263 drivers/usb/c67x00/c67x00-sched.c ep_data->next_frame = frame_add(c67x00->current_frame, 1); c67x00 269 drivers/usb/c67x00/c67x00-sched.c list_add(&ep_data->node, &c67x00->list[type]); c67x00 273 drivers/usb/c67x00/c67x00-sched.c list_for_each_entry(prev, &c67x00->list[type], node) { c67x00 307 drivers/usb/c67x00/c67x00-sched.c struct c67x00_hcd *c67x00 = hcd_to_c67x00_hcd(hcd); c67x00 311 drivers/usb/c67x00/c67x00-sched.c dev_warn(c67x00_hcd_dev(c67x00), "error: urb list not empty\n"); c67x00 313 drivers/usb/c67x00/c67x00-sched.c spin_lock_irqsave(&c67x00->lock, flags); c67x00 318 drivers/usb/c67x00/c67x00-sched.c spin_unlock_irqrestore(&c67x00->lock, flags); c67x00 323 drivers/usb/c67x00/c67x00-sched.c reinit_completion(&c67x00->endpoint_disable); c67x00 324 drivers/usb/c67x00/c67x00-sched.c c67x00_sched_kick(c67x00); c67x00 325 drivers/usb/c67x00/c67x00-sched.c wait_for_completion_timeout(&c67x00->endpoint_disable, 1 * HZ); c67x00 327 drivers/usb/c67x00/c67x00-sched.c spin_lock_irqsave(&c67x00->lock, flags); c67x00 330 drivers/usb/c67x00/c67x00-sched.c spin_unlock_irqrestore(&c67x00->lock, flags); c67x00 348 drivers/usb/c67x00/c67x00-sched.c struct c67x00_hcd *c67x00 = hcd_to_c67x00_hcd(hcd); c67x00 358 drivers/usb/c67x00/c67x00-sched.c spin_lock_irqsave(&c67x00->lock, flags); c67x00 374 drivers/usb/c67x00/c67x00-sched.c urbp->ep_data = c67x00_ep_data_alloc(c67x00, urb); c67x00 397 drivers/usb/c67x00/c67x00-sched.c if (c67x00->urb_iso_count == 0) c67x00 398 drivers/usb/c67x00/c67x00-sched.c c67x00->max_frame_bw = MAX_FRAME_BW_ISO; c67x00 399 drivers/usb/c67x00/c67x00-sched.c c67x00->urb_iso_count++; c67x00 423 drivers/usb/c67x00/c67x00-sched.c if (!c67x00->urb_count++) c67x00 424 drivers/usb/c67x00/c67x00-sched.c c67x00_ll_hpi_enable_sofeop(c67x00->sie); c67x00 426 drivers/usb/c67x00/c67x00-sched.c c67x00_sched_kick(c67x00); c67x00 427 drivers/usb/c67x00/c67x00-sched.c spin_unlock_irqrestore(&c67x00->lock, flags); c67x00 434 drivers/usb/c67x00/c67x00-sched.c spin_unlock_irqrestore(&c67x00->lock, flags); c67x00 443 drivers/usb/c67x00/c67x00-sched.c struct c67x00_hcd *c67x00 = hcd_to_c67x00_hcd(hcd); c67x00 447 drivers/usb/c67x00/c67x00-sched.c spin_lock_irqsave(&c67x00->lock, flags); c67x00 452 drivers/usb/c67x00/c67x00-sched.c c67x00_release_urb(c67x00, urb); c67x00 455 drivers/usb/c67x00/c67x00-sched.c spin_unlock(&c67x00->lock); c67x00 457 drivers/usb/c67x00/c67x00-sched.c spin_lock(&c67x00->lock); c67x00 459 drivers/usb/c67x00/c67x00-sched.c spin_unlock_irqrestore(&c67x00->lock, flags); c67x00 464 drivers/usb/c67x00/c67x00-sched.c spin_unlock_irqrestore(&c67x00->lock, flags); c67x00 474 drivers/usb/c67x00/c67x00-sched.c c67x00_giveback_urb(struct c67x00_hcd *c67x00, struct urb *urb, int status) c67x00 486 drivers/usb/c67x00/c67x00-sched.c c67x00_release_urb(c67x00, urb); c67x00 487 drivers/usb/c67x00/c67x00-sched.c usb_hcd_unlink_urb_from_ep(c67x00_hcd_to_hcd(c67x00), urb); c67x00 488 drivers/usb/c67x00/c67x00-sched.c spin_unlock(&c67x00->lock); c67x00 489 drivers/usb/c67x00/c67x00-sched.c usb_hcd_giveback_urb(c67x00_hcd_to_hcd(c67x00), urb, urbp->status); c67x00 490 drivers/usb/c67x00/c67x00-sched.c spin_lock(&c67x00->lock); c67x00 495 drivers/usb/c67x00/c67x00-sched.c static int c67x00_claim_frame_bw(struct c67x00_hcd *c67x00, struct urb *urb, c67x00 535 drivers/usb/c67x00/c67x00-sched.c if (unlikely(bit_time + c67x00->bandwidth_allocated >= c67x00 536 drivers/usb/c67x00/c67x00-sched.c c67x00->max_frame_bw)) c67x00 539 drivers/usb/c67x00/c67x00-sched.c if (unlikely(c67x00->next_td_addr + CY_TD_SIZE >= c67x00 540 drivers/usb/c67x00/c67x00-sched.c c67x00->td_base_addr + SIE_TD_SIZE)) c67x00 543 drivers/usb/c67x00/c67x00-sched.c if (unlikely(c67x00->next_buf_addr + len >= c67x00 544 drivers/usb/c67x00/c67x00-sched.c c67x00->buf_base_addr + SIE_TD_BUF_SIZE)) c67x00 548 drivers/usb/c67x00/c67x00-sched.c if (unlikely(bit_time + c67x00->periodic_bw_allocated >= c67x00 549 drivers/usb/c67x00/c67x00-sched.c MAX_PERIODIC_BW(c67x00->max_frame_bw))) c67x00 551 drivers/usb/c67x00/c67x00-sched.c c67x00->periodic_bw_allocated += bit_time; c67x00 554 drivers/usb/c67x00/c67x00-sched.c c67x00->bandwidth_allocated += bit_time; c67x00 563 drivers/usb/c67x00/c67x00-sched.c static int c67x00_create_td(struct c67x00_hcd *c67x00, struct urb *urb, c67x00 573 drivers/usb/c67x00/c67x00-sched.c if (c67x00_claim_frame_bw(c67x00, urb, len, usb_pipeisoc(urb->pipe) c67x00 585 drivers/usb/c67x00/c67x00-sched.c !(c67x00->low_speed_ports & (1 << urbp->port))) c67x00 610 drivers/usb/c67x00/c67x00-sched.c td->td_addr = c67x00->next_td_addr; c67x00 611 drivers/usb/c67x00/c67x00-sched.c c67x00->next_td_addr = c67x00->next_td_addr + CY_TD_SIZE; c67x00 614 drivers/usb/c67x00/c67x00-sched.c td->ly_base_addr = __cpu_to_le16(c67x00->next_buf_addr); c67x00 615 drivers/usb/c67x00/c67x00-sched.c td->port_length = __cpu_to_le16((c67x00->sie->sie_num << 15) | c67x00 624 drivers/usb/c67x00/c67x00-sched.c td->next_td_addr = __cpu_to_le16(c67x00->next_td_addr); c67x00 631 drivers/usb/c67x00/c67x00-sched.c c67x00->next_buf_addr += (len + 1) & ~0x01; /* properly align */ c67x00 633 drivers/usb/c67x00/c67x00-sched.c list_add_tail(&td->td_list, &c67x00->td_list); c67x00 645 drivers/usb/c67x00/c67x00-sched.c static int c67x00_add_data_urb(struct c67x00_hcd *c67x00, struct urb *urb) c67x00 674 drivers/usb/c67x00/c67x00-sched.c ret = c67x00_create_td(c67x00, urb, td_buf, len, pid, toggle, c67x00 691 drivers/usb/c67x00/c67x00-sched.c static int c67x00_add_ctrl_urb(struct c67x00_hcd *c67x00, struct urb *urb) c67x00 699 drivers/usb/c67x00/c67x00-sched.c ret = c67x00_create_td(c67x00, urb, urb->setup_packet, c67x00 709 drivers/usb/c67x00/c67x00-sched.c ret = c67x00_add_data_urb(c67x00, urb); c67x00 716 drivers/usb/c67x00/c67x00-sched.c ret = c67x00_create_td(c67x00, urb, NULL, 0, pid, 1, c67x00 729 drivers/usb/c67x00/c67x00-sched.c static int c67x00_add_int_urb(struct c67x00_hcd *c67x00, struct urb *urb) c67x00 733 drivers/usb/c67x00/c67x00-sched.c if (frame_after_eq(c67x00->current_frame, urbp->ep_data->next_frame)) { c67x00 736 drivers/usb/c67x00/c67x00-sched.c return c67x00_add_data_urb(c67x00, urb); c67x00 741 drivers/usb/c67x00/c67x00-sched.c static int c67x00_add_iso_urb(struct c67x00_hcd *c67x00, struct urb *urb) c67x00 745 drivers/usb/c67x00/c67x00-sched.c if (frame_after_eq(c67x00->current_frame, urbp->ep_data->next_frame)) { c67x00 756 drivers/usb/c67x00/c67x00-sched.c ret = c67x00_create_td(c67x00, urb, td_buf, len, pid, 0, c67x00 759 drivers/usb/c67x00/c67x00-sched.c dev_dbg(c67x00_hcd_dev(c67x00), "create failed: %d\n", c67x00 764 drivers/usb/c67x00/c67x00-sched.c c67x00_giveback_urb(c67x00, urb, 0); c67x00 776 drivers/usb/c67x00/c67x00-sched.c static void c67x00_fill_from_list(struct c67x00_hcd *c67x00, int type, c67x00 783 drivers/usb/c67x00/c67x00-sched.c list_for_each_entry(ep_data, &c67x00->list[type], node) { c67x00 790 drivers/usb/c67x00/c67x00-sched.c add(c67x00, urb); c67x00 795 drivers/usb/c67x00/c67x00-sched.c static void c67x00_fill_frame(struct c67x00_hcd *c67x00) c67x00 800 drivers/usb/c67x00/c67x00-sched.c if (!list_empty(&c67x00->td_list)) { c67x00 801 drivers/usb/c67x00/c67x00-sched.c dev_warn(c67x00_hcd_dev(c67x00), c67x00 803 drivers/usb/c67x00/c67x00-sched.c list_for_each_entry_safe(td, ttd, &c67x00->td_list, td_list) { c67x00 804 drivers/usb/c67x00/c67x00-sched.c dbg_td(c67x00, td, "Unprocessed td"); c67x00 810 drivers/usb/c67x00/c67x00-sched.c c67x00->bandwidth_allocated = 0; c67x00 811 drivers/usb/c67x00/c67x00-sched.c c67x00->periodic_bw_allocated = 0; c67x00 813 drivers/usb/c67x00/c67x00-sched.c c67x00->next_td_addr = c67x00->td_base_addr; c67x00 814 drivers/usb/c67x00/c67x00-sched.c c67x00->next_buf_addr = c67x00->buf_base_addr; c67x00 817 drivers/usb/c67x00/c67x00-sched.c c67x00_fill_from_list(c67x00, PIPE_ISOCHRONOUS, c67x00_add_iso_urb); c67x00 818 drivers/usb/c67x00/c67x00-sched.c c67x00_fill_from_list(c67x00, PIPE_INTERRUPT, c67x00_add_int_urb); c67x00 819 drivers/usb/c67x00/c67x00-sched.c c67x00_fill_from_list(c67x00, PIPE_CONTROL, c67x00_add_ctrl_urb); c67x00 820 drivers/usb/c67x00/c67x00-sched.c c67x00_fill_from_list(c67x00, PIPE_BULK, c67x00_add_data_urb); c67x00 829 drivers/usb/c67x00/c67x00-sched.c c67x00_parse_td(struct c67x00_hcd *c67x00, struct c67x00_td *td) c67x00 831 drivers/usb/c67x00/c67x00-sched.c c67x00_ll_read_mem_le16(c67x00->sie->dev, c67x00 835 drivers/usb/c67x00/c67x00-sched.c c67x00_ll_read_mem_le16(c67x00->sie->dev, td_ly_base_addr(td), c67x00 839 drivers/usb/c67x00/c67x00-sched.c static int c67x00_td_to_error(struct c67x00_hcd *c67x00, struct c67x00_td *td) c67x00 842 drivers/usb/c67x00/c67x00-sched.c dbg_td(c67x00, td, "ERROR_FLAG"); c67x00 850 drivers/usb/c67x00/c67x00-sched.c dbg_td(c67x00, td, "TIMEOUT"); c67x00 888 drivers/usb/c67x00/c67x00-sched.c static inline void c67x00_clear_pipe(struct c67x00_hcd *c67x00, c67x00 894 drivers/usb/c67x00/c67x00-sched.c while (td->td_list.next != &c67x00->td_list) { c67x00 906 drivers/usb/c67x00/c67x00-sched.c static void c67x00_handle_successful_td(struct c67x00_hcd *c67x00, c67x00 931 drivers/usb/c67x00/c67x00-sched.c c67x00_clear_pipe(c67x00, td); c67x00 937 drivers/usb/c67x00/c67x00-sched.c c67x00_giveback_urb(c67x00, urb, 0); c67x00 945 drivers/usb/c67x00/c67x00-sched.c c67x00_clear_pipe(c67x00, td); c67x00 946 drivers/usb/c67x00/c67x00-sched.c c67x00_giveback_urb(c67x00, urb, 0); c67x00 952 drivers/usb/c67x00/c67x00-sched.c static void c67x00_handle_isoc(struct c67x00_hcd *c67x00, struct c67x00_td *td) c67x00 966 drivers/usb/c67x00/c67x00-sched.c urb->iso_frame_desc[cnt].status = c67x00_td_to_error(c67x00, td); c67x00 968 drivers/usb/c67x00/c67x00-sched.c c67x00_giveback_urb(c67x00, urb, 0); c67x00 977 drivers/usb/c67x00/c67x00-sched.c static inline void c67x00_check_td_list(struct c67x00_hcd *c67x00) c67x00 984 drivers/usb/c67x00/c67x00-sched.c list_for_each_entry_safe(td, tmp, &c67x00->td_list, td_list) { c67x00 986 drivers/usb/c67x00/c67x00-sched.c c67x00_parse_td(c67x00, td); c67x00 994 drivers/usb/c67x00/c67x00-sched.c c67x00_handle_isoc(c67x00, td); c67x00 1002 drivers/usb/c67x00/c67x00-sched.c c67x00_giveback_urb(c67x00, urb, c67x00 1003 drivers/usb/c67x00/c67x00-sched.c c67x00_td_to_error(c67x00, td)); c67x00 1017 drivers/usb/c67x00/c67x00-sched.c c67x00_giveback_urb(c67x00, urb, -EOVERFLOW); c67x00 1023 drivers/usb/c67x00/c67x00-sched.c c67x00_handle_successful_td(c67x00, td); c67x00 1027 drivers/usb/c67x00/c67x00-sched.c c67x00_clear_pipe(c67x00, td); c67x00 1040 drivers/usb/c67x00/c67x00-sched.c static inline int c67x00_all_tds_processed(struct c67x00_hcd *c67x00) c67x00 1045 drivers/usb/c67x00/c67x00-sched.c return !c67x00_ll_husb_get_current_td(c67x00->sie); c67x00 1051 drivers/usb/c67x00/c67x00-sched.c static void c67x00_send_td(struct c67x00_hcd *c67x00, struct c67x00_td *td) c67x00 1056 drivers/usb/c67x00/c67x00-sched.c c67x00_ll_write_mem_le16(c67x00->sie->dev, td_ly_base_addr(td), c67x00 1059 drivers/usb/c67x00/c67x00-sched.c c67x00_ll_write_mem_le16(c67x00->sie->dev, c67x00 1063 drivers/usb/c67x00/c67x00-sched.c static void c67x00_send_frame(struct c67x00_hcd *c67x00) c67x00 1067 drivers/usb/c67x00/c67x00-sched.c if (list_empty(&c67x00->td_list)) c67x00 1068 drivers/usb/c67x00/c67x00-sched.c dev_warn(c67x00_hcd_dev(c67x00), c67x00 1072 drivers/usb/c67x00/c67x00-sched.c list_for_each_entry(td, &c67x00->td_list, td_list) { c67x00 1073 drivers/usb/c67x00/c67x00-sched.c if (td->td_list.next == &c67x00->td_list) c67x00 1076 drivers/usb/c67x00/c67x00-sched.c c67x00_send_td(c67x00, td); c67x00 1079 drivers/usb/c67x00/c67x00-sched.c c67x00_ll_husb_set_current_td(c67x00->sie, c67x00->td_base_addr); c67x00 1087 drivers/usb/c67x00/c67x00-sched.c static void c67x00_do_work(struct c67x00_hcd *c67x00) c67x00 1089 drivers/usb/c67x00/c67x00-sched.c spin_lock(&c67x00->lock); c67x00 1091 drivers/usb/c67x00/c67x00-sched.c if (!c67x00_all_tds_processed(c67x00)) c67x00 1094 drivers/usb/c67x00/c67x00-sched.c c67x00_check_td_list(c67x00); c67x00 1098 drivers/usb/c67x00/c67x00-sched.c complete(&c67x00->endpoint_disable); c67x00 1100 drivers/usb/c67x00/c67x00-sched.c if (!list_empty(&c67x00->td_list)) c67x00 1103 drivers/usb/c67x00/c67x00-sched.c c67x00->current_frame = c67x00_get_current_frame_number(c67x00); c67x00 1104 drivers/usb/c67x00/c67x00-sched.c if (c67x00->current_frame == c67x00->last_frame) c67x00 1106 drivers/usb/c67x00/c67x00-sched.c c67x00->last_frame = c67x00->current_frame; c67x00 1109 drivers/usb/c67x00/c67x00-sched.c if (!c67x00->urb_count) { c67x00 1110 drivers/usb/c67x00/c67x00-sched.c c67x00_ll_hpi_disable_sofeop(c67x00->sie); c67x00 1114 drivers/usb/c67x00/c67x00-sched.c c67x00_fill_frame(c67x00); c67x00 1115 drivers/usb/c67x00/c67x00-sched.c if (!list_empty(&c67x00->td_list)) c67x00 1117 drivers/usb/c67x00/c67x00-sched.c c67x00_send_frame(c67x00); c67x00 1120 drivers/usb/c67x00/c67x00-sched.c spin_unlock(&c67x00->lock); c67x00 1127 drivers/usb/c67x00/c67x00-sched.c struct c67x00_hcd *c67x00 = (struct c67x00_hcd *)__c67x00; c67x00 1128 drivers/usb/c67x00/c67x00-sched.c c67x00_do_work(c67x00); c67x00 1131 drivers/usb/c67x00/c67x00-sched.c void c67x00_sched_kick(struct c67x00_hcd *c67x00) c67x00 1133 drivers/usb/c67x00/c67x00-sched.c tasklet_hi_schedule(&c67x00->tasklet); c67x00 1136 drivers/usb/c67x00/c67x00-sched.c int c67x00_sched_start_scheduler(struct c67x00_hcd *c67x00) c67x00 1138 drivers/usb/c67x00/c67x00-sched.c tasklet_init(&c67x00->tasklet, c67x00_sched_tasklet, c67x00 1139 drivers/usb/c67x00/c67x00-sched.c (unsigned long)c67x00); c67x00 1143 drivers/usb/c67x00/c67x00-sched.c void c67x00_sched_stop_scheduler(struct c67x00_hcd *c67x00) c67x00 1145 drivers/usb/c67x00/c67x00-sched.c tasklet_kill(&c67x00->tasklet);