Lines Matching refs:ehci
97 #include "ehci.h"
110 static unsigned ehci_moschip_read_frame_index(struct ehci_hcd *ehci)
114 uf = ehci_readl(ehci, &ehci->regs->frame_index);
116 uf = ehci_readl(ehci, &ehci->regs->frame_index);
120 static inline unsigned ehci_read_frame_index(struct ehci_hcd *ehci)
122 if (ehci->frame_index_bug)
123 return ehci_moschip_read_frame_index(ehci);
124 return ehci_readl(ehci, &ehci->regs->frame_index);
127 #include "ehci-dbg.c"
148 int ehci_handshake(struct ehci_hcd *ehci, void __iomem *ptr,
154 result = ehci_readl(ehci, ptr);
168 static int tdi_in_host_mode (struct ehci_hcd *ehci)
172 tmp = ehci_readl(ehci, &ehci->regs->usbmode);
180 static int ehci_halt (struct ehci_hcd *ehci)
184 spin_lock_irq(&ehci->lock);
187 ehci_writel(ehci, 0, &ehci->regs->intr_enable);
189 if (ehci_is_TDI(ehci) && !tdi_in_host_mode(ehci)) {
190 spin_unlock_irq(&ehci->lock);
195 * This routine gets called during probe before ehci->command
198 ehci->command &= ~CMD_RUN;
199 temp = ehci_readl(ehci, &ehci->regs->command);
201 ehci_writel(ehci, temp, &ehci->regs->command);
203 spin_unlock_irq(&ehci->lock);
204 synchronize_irq(ehci_to_hcd(ehci)->irq);
206 return ehci_handshake(ehci, &ehci->regs->status,
211 static void tdi_reset (struct ehci_hcd *ehci)
215 tmp = ehci_readl(ehci, &ehci->regs->usbmode);
221 if (ehci_big_endian_mmio(ehci))
223 ehci_writel(ehci, tmp, &ehci->regs->usbmode);
230 int ehci_reset(struct ehci_hcd *ehci)
233 u32 command = ehci_readl(ehci, &ehci->regs->command);
237 if (ehci->debug && !dbgp_reset_prep(ehci_to_hcd(ehci)))
238 ehci->debug = NULL;
241 dbg_cmd (ehci, "reset", command);
242 ehci_writel(ehci, command, &ehci->regs->command);
243 ehci->rh_state = EHCI_RH_HALTED;
244 ehci->next_statechange = jiffies;
245 retval = ehci_handshake(ehci, &ehci->regs->command,
248 if (ehci->has_hostpc) {
249 ehci_writel(ehci, USBMODE_EX_HC | USBMODE_EX_VBPS,
250 &ehci->regs->usbmode_ex);
251 ehci_writel(ehci, TXFIFO_DEFAULT, &ehci->regs->txfill_tuning);
256 if (ehci_is_TDI(ehci))
257 tdi_reset (ehci);
259 if (ehci->debug)
260 dbgp_external_startup(ehci_to_hcd(ehci));
262 ehci->port_c_suspend = ehci->suspended_ports =
263 ehci->resuming_ports = 0;
272 static void ehci_quiesce (struct ehci_hcd *ehci)
276 if (ehci->rh_state != EHCI_RH_RUNNING)
280 temp = (ehci->command << 10) & (STS_ASS | STS_PSS);
281 ehci_handshake(ehci, &ehci->regs->status, STS_ASS | STS_PSS, temp,
285 spin_lock_irq(&ehci->lock);
286 ehci->command &= ~(CMD_ASE | CMD_PSE);
287 ehci_writel(ehci, ehci->command, &ehci->regs->command);
288 spin_unlock_irq(&ehci->lock);
291 ehci_handshake(ehci, &ehci->regs->status, STS_ASS | STS_PSS, 0,
297 static void end_iaa_cycle(struct ehci_hcd *ehci);
298 static void end_unlink_async(struct ehci_hcd *ehci);
299 static void unlink_empty_async(struct ehci_hcd *ehci);
300 static void ehci_work(struct ehci_hcd *ehci);
301 static void start_unlink_intr(struct ehci_hcd *ehci, struct ehci_qh *qh);
302 static void end_unlink_intr(struct ehci_hcd *ehci, struct ehci_qh *qh);
303 static int ehci_port_power(struct ehci_hcd *ehci, int portnum, bool enable);
305 #include "ehci-timer.c"
306 #include "ehci-hub.c"
307 #include "ehci-mem.c"
308 #include "ehci-q.c"
309 #include "ehci-sched.c"
310 #include "ehci-sysfs.c"
318 static void ehci_turn_off_all_ports(struct ehci_hcd *ehci)
320 int port = HCS_N_PORTS(ehci->hcs_params);
323 spin_unlock_irq(&ehci->lock);
324 ehci_port_power(ehci, port, false);
325 spin_lock_irq(&ehci->lock);
326 ehci_writel(ehci, PORT_RWC_BITS,
327 &ehci->regs->port_status[port]);
335 static void ehci_silence_controller(struct ehci_hcd *ehci)
337 ehci_halt(ehci);
339 spin_lock_irq(&ehci->lock);
340 ehci->rh_state = EHCI_RH_HALTED;
341 ehci_turn_off_all_ports(ehci);
344 ehci_writel(ehci, 0, &ehci->regs->configured_flag);
347 ehci_readl(ehci, &ehci->regs->configured_flag);
348 spin_unlock_irq(&ehci->lock);
357 struct ehci_hcd *ehci = hcd_to_ehci(hcd);
365 if (!ehci->sbrn)
368 spin_lock_irq(&ehci->lock);
369 ehci->shutdown = true;
370 ehci->rh_state = EHCI_RH_STOPPING;
371 ehci->enabled_hrtimer_events = 0;
372 spin_unlock_irq(&ehci->lock);
374 ehci_silence_controller(ehci);
376 hrtimer_cancel(&ehci->hrtimer);
383 * it calls driver completion functions, after dropping ehci->lock.
385 static void ehci_work (struct ehci_hcd *ehci)
387 /* another CPU may drop ehci->lock during a schedule scan while
391 if (ehci->scanning) {
392 ehci->need_rescan = true;
395 ehci->scanning = true;
398 ehci->need_rescan = false;
399 if (ehci->async_count)
400 scan_async(ehci);
401 if (ehci->intr_count > 0)
402 scan_intr(ehci);
403 if (ehci->isoc_count > 0)
404 scan_isoc(ehci);
405 if (ehci->need_rescan)
407 ehci->scanning = false;
413 turn_on_io_watchdog(ehci);
421 struct ehci_hcd *ehci = hcd_to_ehci (hcd);
423 ehci_dbg (ehci, "stop\n");
427 spin_lock_irq(&ehci->lock);
428 ehci->enabled_hrtimer_events = 0;
429 spin_unlock_irq(&ehci->lock);
431 ehci_quiesce(ehci);
432 ehci_silence_controller(ehci);
433 ehci_reset (ehci);
435 hrtimer_cancel(&ehci->hrtimer);
436 remove_sysfs_files(ehci);
437 remove_debug_files (ehci);
440 spin_lock_irq (&ehci->lock);
441 end_free_itds(ehci);
442 spin_unlock_irq (&ehci->lock);
443 ehci_mem_cleanup (ehci);
445 if (ehci->amd_pll_fix == 1)
448 dbg_status (ehci, "ehci_stop completed",
449 ehci_readl(ehci, &ehci->regs->status));
455 struct ehci_hcd *ehci = hcd_to_ehci(hcd);
461 spin_lock_init(&ehci->lock);
466 ehci->need_io_watchdog = 1;
468 hrtimer_init(&ehci->hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS);
469 ehci->hrtimer.function = ehci_hrtimer_func;
470 ehci->next_hrtimer_event = EHCI_HRTIMER_NO_EVENT;
472 hcc_params = ehci_readl(ehci, &ehci->caps->hcc_params);
478 ehci->uframe_periodic_max = 100;
484 ehci->periodic_size = DEFAULT_I_TDPS;
485 INIT_LIST_HEAD(&ehci->async_unlink);
486 INIT_LIST_HEAD(&ehci->async_idle);
487 INIT_LIST_HEAD(&ehci->intr_unlink_wait);
488 INIT_LIST_HEAD(&ehci->intr_unlink);
489 INIT_LIST_HEAD(&ehci->intr_qh_list);
490 INIT_LIST_HEAD(&ehci->cached_itd_list);
491 INIT_LIST_HEAD(&ehci->cached_sitd_list);
492 INIT_LIST_HEAD(&ehci->tt_list);
497 case 0: ehci->periodic_size = 1024; break;
498 case 1: ehci->periodic_size = 512; break;
499 case 2: ehci->periodic_size = 256; break;
503 if ((retval = ehci_mem_init(ehci, GFP_KERNEL)) < 0)
508 ehci->i_thresh = 0;
510 ehci->i_thresh = 2 + HCC_ISOC_THRES(hcc_params);
519 ehci->async->qh_next.qh = NULL;
520 hw = ehci->async->hw;
521 hw->hw_next = QH_NEXT(ehci, ehci->async->qh_dma);
522 hw->hw_info1 = cpu_to_hc32(ehci, QH_HEAD);
524 hw->hw_info1 |= cpu_to_hc32(ehci, QH_INACTIVATE);
526 hw->hw_token = cpu_to_hc32(ehci, QTD_STS_HALT);
527 hw->hw_qtd_next = EHCI_LIST_END(ehci);
528 ehci->async->qh_state = QH_STATE_LINKED;
529 hw->hw_alt_next = QTD_NEXT(ehci, ehci->async->dummy->qtd_dma);
536 ehci->has_ppcd = 1;
537 ehci_dbg(ehci, "enable per-port change event\n");
553 ehci_dbg(ehci, "park %d\n", park);
560 ehci->command = temp;
567 ehci->old_current = ~0;
574 struct ehci_hcd *ehci = hcd_to_ehci (hcd);
583 ehci_writel(ehci, ehci->periodic_dma, &ehci->regs->frame_list);
584 ehci_writel(ehci, (u32)ehci->async->qh_dma, &ehci->regs->async_next);
587 * hcc_params controls whether ehci->regs->segment must (!!!)
598 hcc_params = ehci_readl(ehci, &ehci->caps->hcc_params);
600 ehci_writel(ehci, 0, &ehci->regs->segment);
604 ehci_info(ehci, "enabled 64bit DMA\n");
611 ehci->command &= ~(CMD_LRESET|CMD_IAAD|CMD_PSE|CMD_ASE|CMD_RESET);
612 ehci->command |= CMD_RUN;
613 ehci_writel(ehci, ehci->command, &ehci->regs->command);
614 dbg_cmd (ehci, "init", ehci->command);
631 ehci->rh_state = EHCI_RH_RUNNING;
632 ehci_writel(ehci, FLAG_CF, &ehci->regs->configured_flag);
635 ehci_readl(ehci, &ehci->regs->command); /* unblock posted writes */
641 if (ehci->is_aspeed)
642 rc = ehci_handshake(ehci, &ehci->regs->command, CMD_RUN,
645 rc = ehci_handshake(ehci, &ehci->regs->status, STS_HALT,
651 ehci_err(ehci, "USB %x.%x, controller refused to start: %d\n",
652 ((ehci->sbrn & 0xf0)>>4), (ehci->sbrn & 0x0f), rc);
656 ehci->last_periodic_enable = ktime_get_real();
658 temp = HC_VERSION(ehci, ehci_readl(ehci, &ehci->caps->hc_capbase));
659 ehci_info (ehci,
661 ((ehci->sbrn & 0xf0)>>4), (ehci->sbrn & 0x0f),
665 ehci_writel(ehci, INTR_MASK,
666 &ehci->regs->intr_enable); /* Turn On Interrupts */
672 create_debug_files(ehci);
673 create_sysfs_files(ehci);
680 struct ehci_hcd *ehci = hcd_to_ehci(hcd);
683 ehci->regs = (void __iomem *)ehci->caps +
684 HC_LENGTH(ehci, ehci_readl(ehci, &ehci->caps->hc_capbase));
685 dbg_hcs_params(ehci, "reset");
686 dbg_hcc_params(ehci, "reset");
689 ehci->hcs_params = ehci_readl(ehci, &ehci->caps->hcs_params);
691 ehci->sbrn = HCD_USB2;
698 retval = ehci_halt(ehci);
700 ehci_mem_cleanup(ehci);
704 ehci_reset(ehci);
714 struct ehci_hcd *ehci = hcd_to_ehci (hcd);
722 * deadlock with ehci hrtimer callback, because hrtimer callbacks run
726 spin_lock_irqsave(&ehci->lock, flags);
729 current_status = ehci_readl(ehci, &ehci->regs->status);
734 ehci_dbg (ehci, "device removed\n");
746 if (!masked_status || unlikely(ehci->rh_state == EHCI_RH_HALTED)) {
747 spin_unlock_irqrestore(&ehci->lock, flags);
752 ehci_writel(ehci, masked_status, &ehci->regs->status);
755 current_status = ehci_readl(ehci, &ehci->regs->status);
759 cmd = ehci_readl(ehci, &ehci->regs->command);
765 INCR(ehci->stats.normal);
767 INCR(ehci->stats.error);
775 ehci->enabled_hrtimer_events &= ~BIT(EHCI_HRTIMER_IAA_WATCHDOG);
784 if (ehci->next_hrtimer_event == EHCI_HRTIMER_IAA_WATCHDOG)
785 ++ehci->next_hrtimer_event;
789 ehci_dbg(ehci, "IAA with IAAD still set?\n");
790 if (ehci->iaa_in_progress)
791 INCR(ehci->stats.iaa);
792 end_iaa_cycle(ehci);
797 unsigned i = HCS_N_PORTS (ehci->hcs_params);
804 if (ehci->rh_state == EHCI_RH_SUSPENDED)
808 if (ehci->has_ppcd)
817 pstatus = ehci_readl(ehci,
818 &ehci->regs->port_status[i]);
822 if (!(test_bit(i, &ehci->suspended_ports) &&
826 ehci->reset_done[i] == 0))
833 ehci->reset_done[i] = jiffies +
835 set_bit(i, &ehci->resuming_ports);
836 ehci_dbg (ehci, "port %d remote wakeup\n", i + 1);
838 mod_timer(&hcd->rh_timer, ehci->reset_done[i]);
844 ehci_err(ehci, "fatal error\n");
845 dbg_cmd(ehci, "fatal", cmd);
846 dbg_status(ehci, "fatal", status);
851 ehci->shutdown = true;
852 ehci->rh_state = EHCI_RH_STOPPING;
853 ehci->command &= ~(CMD_RUN | CMD_ASE | CMD_PSE);
854 ehci_writel(ehci, ehci->command, &ehci->regs->command);
855 ehci_writel(ehci, 0, &ehci->regs->intr_enable);
856 ehci_handle_controller_death(ehci);
863 ehci_work (ehci);
864 spin_unlock_irqrestore(&ehci->lock, flags);
889 struct ehci_hcd *ehci = hcd_to_ehci (hcd);
904 if (!qh_urb_transaction (ehci, urb, &qtd_list, mem_flags))
906 return submit_async(ehci, urb, &qtd_list, mem_flags);
909 if (!qh_urb_transaction (ehci, urb, &qtd_list, mem_flags))
911 return intr_submit(ehci, urb, &qtd_list, mem_flags);
915 return itd_submit (ehci, urb, mem_flags);
917 return sitd_submit (ehci, urb, mem_flags);
927 struct ehci_hcd *ehci = hcd_to_ehci (hcd);
932 spin_lock_irqsave (&ehci->lock, flags);
949 start_unlink_intr(ehci, qh);
951 start_unlink_async(ehci, qh);
962 qh_completions(ehci, qh);
967 spin_unlock_irqrestore (&ehci->lock, flags);
978 struct ehci_hcd *ehci = hcd_to_ehci (hcd);
986 spin_lock_irqsave (&ehci->lock, flags);
1001 reserve_release_iso_bandwidth(ehci, stream, -1);
1014 start_unlink_async(ehci, qh);
1016 start_unlink_intr(ehci, qh);
1022 spin_unlock_irqrestore (&ehci->lock, flags);
1030 reserve_release_intr_bandwidth(ehci, qh, -1);
1031 qh_destroy(ehci, qh);
1039 ehci_err (ehci, "qh %p (#%02x) state %d%s\n",
1046 spin_unlock_irqrestore (&ehci->lock, flags);
1052 struct ehci_hcd *ehci = hcd_to_ehci(hcd);
1062 spin_lock_irqsave(&ehci->lock, flags);
1081 start_unlink_async(ehci, qh);
1083 start_unlink_intr(ehci, qh);
1086 spin_unlock_irqrestore(&ehci->lock, flags);
1091 struct ehci_hcd *ehci = hcd_to_ehci (hcd);
1092 return (ehci_read_frame_index(ehci) >> 3) % ehci->periodic_size;
1101 struct ehci_hcd *ehci = hcd_to_ehci(hcd);
1103 spin_lock_irq(&ehci->lock);
1105 spin_unlock_irq(&ehci->lock);
1118 struct ehci_hcd *ehci = hcd_to_ehci(hcd);
1120 if (time_before(jiffies, ehci->next_statechange))
1128 ehci_prepare_ports_for_controller_suspend(ehci, do_wakeup);
1130 spin_lock_irq(&ehci->lock);
1131 ehci_writel(ehci, 0, &ehci->regs->intr_enable);
1132 (void) ehci_readl(ehci, &ehci->regs->intr_enable);
1135 spin_unlock_irq(&ehci->lock);
1152 struct ehci_hcd *ehci = hcd_to_ehci(hcd);
1154 if (time_before(jiffies, ehci->next_statechange))
1160 if (ehci->shutdown)
1168 if (ehci_readl(ehci, &ehci->regs->configured_flag) == FLAG_CF &&
1172 ehci_prepare_ports_for_controller_resume(ehci);
1174 spin_lock_irq(&ehci->lock);
1175 if (ehci->shutdown)
1180 ehci_writel(ehci, mask, &ehci->regs->intr_enable);
1181 ehci_readl(ehci, &ehci->regs->intr_enable);
1183 spin_unlock_irq(&ehci->lock);
1192 (void) ehci_halt(ehci);
1193 (void) ehci_reset(ehci);
1195 spin_lock_irq(&ehci->lock);
1196 if (ehci->shutdown)
1199 ehci_writel(ehci, ehci->command, &ehci->regs->command);
1200 ehci_writel(ehci, FLAG_CF, &ehci->regs->configured_flag);
1201 ehci_readl(ehci, &ehci->regs->command); /* unblock posted writes */
1203 ehci->rh_state = EHCI_RH_SUSPENDED;
1204 spin_unlock_irq(&ehci->lock);
1292 #include "ehci-sh.c"
1297 #include "ehci-ps3.c"
1302 #include "ehci-ppc-of.c"
1307 #include "ehci-xilinx-of.c"
1312 #include "ehci-pmcmsp.c"
1317 #include "ehci-grlib.c"
1341 ehci_debug_root = debugfs_create_dir("ehci", usb_debug_root);