Lines Matching refs:fhci

26 #include "fhci.h"
87 fhci_dbg(usb->fhci, "td err fu\n");
91 fhci_dbg(usb->fhci, "td err f!u\n");
94 fhci_dbg(usb->fhci, "td err !f\n");
102 fhci_vdbg(usb->fhci, "td nack\n");
131 mode = in_8(&usb->fhci->regs->usb_usmod);
132 clrbits8(&usb->fhci->regs->usb_usmod, USB_MODE_EN);
146 out_be16(&usb->fhci->regs->usb_usber, 0xffff);
148 out_8(&usb->fhci->regs->usb_usmod, mode | USB_MODE_EN);
196 fhci_vdbg(usb->fhci, "not enough space in this frame: "
207 fhci_dbg(usb->fhci, "not enough time in this frame\n");
214 fhci_dbg(usb->fhci, "there is no empty frame\n");
248 fhci_err(usb->fhci, "host transaction failed\n");
337 struct fhci_hcd *fhci = usb->fhci;
340 if ((((in_be16(&fhci->pram->frame_num) & 0x07ff) -
348 usb->actual_frame->frame_num = in_be16(&fhci->pram->frame_num) & 0x7ff;
399 static void sof_interrupt(struct fhci_hcd *fhci)
401 struct fhci_usb *usb = fhci->usb_lld;
412 out_be16(&usb->fhci->regs->usb_usbmr, usb->saved_msk);
415 gtm_set_exact_timer16(fhci->timer, usb->max_frame_usage, false);
424 void fhci_device_disconnected_interrupt(struct fhci_hcd *fhci)
426 struct fhci_usb *usb = fhci->usb_lld;
428 fhci_dbg(fhci, "-> %s\n", __func__);
431 clrbits8(&usb->fhci->regs->usb_usmod, USB_MODE_LSS);
434 fhci_stop_sof_timer(fhci);
438 out_be16(&usb->fhci->regs->usb_usbmr, usb->saved_msk);
445 fhci_dbg(fhci, "<- %s\n", __func__);
449 void fhci_device_connected_interrupt(struct fhci_hcd *fhci)
452 struct fhci_usb *usb = fhci->usb_lld;
456 fhci_dbg(fhci, "-> %s\n", __func__);
459 state = fhci_ioports_check_bus_state(fhci);
463 ret = qe_usb_clock_set(fhci->lowspeed_clk, USB_CLOCK >> 3);
465 fhci_warn(fhci, "Low-Speed device is not supported, "
471 setbits8(&usb->fhci->regs->usb_usmod, USB_MODE_LSS);
481 ret = qe_usb_clock_set(fhci->fullspeed_clk, USB_CLOCK);
483 fhci_warn(fhci, "Full-Speed device is not supported, "
489 clrbits8(&usb->fhci->regs->usb_usmod, USB_MODE_LSS);
501 fhci_dbg(fhci, "<- %s\n", __func__);
507 struct fhci_hcd *fhci = hcd_to_fhci(hcd);
508 struct fhci_usb *usb = fhci->usb_lld;
510 spin_lock(&fhci->lock);
512 gtm_set_exact_timer16(fhci->timer, 1000, false);
521 spin_unlock(&fhci->lock);
529 fhci_dbg(usb->fhci, "-> %s\n", __func__);
533 out_8(&usb->fhci->regs->usb_uscom, USB_CMD_FLUSH_FIFO | EP_ZERO);
539 fhci_dbg(usb->fhci, "<- %s\n", __func__);
544 struct fhci_hcd *fhci = hcd_to_fhci(hcd);
549 spin_lock_irqsave(&fhci->lock, flags);
551 usb = fhci->usb_lld;
553 usb_er |= in_be16(&usb->fhci->regs->usb_usber) &
554 in_be16(&usb->fhci->regs->usb_usbmr);
557 out_be16(&usb->fhci->regs->usb_usber, usb_er);
559 fhci_dbg_isr(fhci, usb_er);
564 fhci_device_disconnected_interrupt(fhci);
571 out_be16(&usb->fhci->regs->usb_usber,
574 if (fhci_ioports_check_bus_state(fhci) == 1)
575 fhci_device_connected_interrupt(fhci);
581 abort_transmission(fhci->usb_lld);
586 sof_interrupt(fhci);
591 fhci_tx_conf_interrupt(fhci->usb_lld);
596 fhci_tx_conf_interrupt(fhci->usb_lld);
603 fhci_device_connected_interrupt(fhci);
609 out_be16(&usb->fhci->regs->usb_usbmr,
612 fhci_dbg_isr(fhci, -1);
618 spin_unlock_irqrestore(&fhci->lock, flags);
637 struct fhci_hcd *fhci = (struct fhci_hcd *)data;
639 disable_irq(fhci->timer->irq);
640 disable_irq(fhci_to_hcd(fhci)->irq);
641 spin_lock(&fhci->lock);
643 td = fhci_remove_td_from_done_list(fhci->hc_list);
660 fhci_urb_complete_free(fhci, urb);
663 fhci_del_ed_list(fhci, ed);
668 fhci_del_ed_list(fhci, ed);
672 td = fhci_remove_td_from_done_list(fhci->hc_list);
675 spin_unlock(&fhci->lock);
676 enable_irq(fhci->timer->irq);
677 enable_irq(fhci_to_hcd(fhci)->irq);
683 u32 fhci_transfer_confirm_callback(struct fhci_hcd *fhci)
685 if (!fhci->process_done_task->state)
686 tasklet_schedule(fhci->process_done_task);
693 * fhci data structure for the Low level host controller
697 void fhci_queue_urb(struct fhci_hcd *fhci, struct urb *urb)
708 ed = fhci_get_empty_ed(fhci);
731 fhci_dbg(fhci, "new ep speed=%d max_pkt_size=%d\n",
739 get_frame_num(fhci);
772 fhci_td_fill(fhci, urb, urb_priv, ed, cnt,
783 fhci_td_fill(fhci, urb, urb_priv, ed, cnt,
791 fhci_td_fill(fhci, urb, urb_priv, ed, cnt,
799 urb->start_frame = get_frame_num(fhci) + 1;
800 fhci_td_fill(fhci, urb, urb_priv, ed, cnt++,
810 fhci_td_fill(fhci, urb, urb_priv, ed, cnt++, FHCI_TA_SETUP,
815 fhci_td_fill(fhci, urb, urb_priv, ed, cnt++,
824 fhci_td_fill(fhci, urb, urb_priv, ed, cnt++,
829 fhci_td_fill(fhci, urb, urb_priv, ed, cnt++,
846 fhci_td_fill(fhci, urb, urb_priv, ed, cnt,
873 list_add(&ed->node, &fhci->hc_list->ctrl_list);
876 list_add(&ed->node, &fhci->hc_list->bulk_list);
879 list_add(&ed->node, &fhci->hc_list->intr_list);
882 list_add(&ed->node, &fhci->hc_list->iso_list);
890 fhci->active_urbs++;