Lines Matching refs:ehci

45 static void ehci_handover_companion_ports(struct ehci_hcd *ehci)  in ehci_handover_companion_ports()  argument
51 struct usb_hcd *hcd = ehci_to_hcd(ehci); in ehci_handover_companion_ports()
53 if (!ehci->owned_ports) in ehci_handover_companion_ports()
67 port = HCS_N_PORTS(ehci->hcs_params); in ehci_handover_companion_ports()
69 if (test_bit(port, &ehci->owned_ports)) { in ehci_handover_companion_ports()
70 reg = &ehci->regs->port_status[port]; in ehci_handover_companion_ports()
71 status = ehci_readl(ehci, reg) & ~PORT_RWC_BITS; in ehci_handover_companion_ports()
73 ehci_port_power(ehci, port, true); in ehci_handover_companion_ports()
80 spin_lock_irq(&ehci->lock); in ehci_handover_companion_ports()
81 port = HCS_N_PORTS(ehci->hcs_params); in ehci_handover_companion_ports()
83 if (test_bit(port, &ehci->owned_ports)) { in ehci_handover_companion_ports()
84 reg = &ehci->regs->port_status[port]; in ehci_handover_companion_ports()
85 status = ehci_readl(ehci, reg) & ~PORT_RWC_BITS; in ehci_handover_companion_ports()
89 clear_bit(port, &ehci->owned_ports); in ehci_handover_companion_ports()
90 else if (test_bit(port, &ehci->companion_ports)) in ehci_handover_companion_ports()
91 ehci_writel(ehci, status & ~PORT_PE, reg); in ehci_handover_companion_ports()
93 spin_unlock_irq(&ehci->lock); in ehci_handover_companion_ports()
97 spin_lock_irq(&ehci->lock); in ehci_handover_companion_ports()
101 spin_unlock_irq(&ehci->lock); in ehci_handover_companion_ports()
103 if (!ehci->owned_ports) in ehci_handover_companion_ports()
107 spin_lock_irq(&ehci->lock); in ehci_handover_companion_ports()
108 port = HCS_N_PORTS(ehci->hcs_params); in ehci_handover_companion_ports()
110 if (test_bit(port, &ehci->owned_ports)) { in ehci_handover_companion_ports()
111 spin_unlock_irq(&ehci->lock); in ehci_handover_companion_ports()
115 spin_lock_irq(&ehci->lock); in ehci_handover_companion_ports()
121 reg = &ehci->regs->port_status[port]; in ehci_handover_companion_ports()
122 status = ehci_readl(ehci, reg) & ~PORT_RWC_BITS; in ehci_handover_companion_ports()
124 ehci_writel(ehci, status | PORT_CSC, reg); in ehci_handover_companion_ports()
126 ehci_dbg(ehci, "failed handover port %d: %x\n", in ehci_handover_companion_ports()
128 ehci_writel(ehci, status & ~PORT_PE, reg); in ehci_handover_companion_ports()
133 ehci->owned_ports = 0; in ehci_handover_companion_ports()
134 spin_unlock_irq(&ehci->lock); in ehci_handover_companion_ports()
137 static int ehci_port_change(struct ehci_hcd *ehci) in ehci_port_change() argument
139 int i = HCS_N_PORTS(ehci->hcs_params); in ehci_port_change()
143 if (ehci_readl(ehci, &ehci->regs->status) & STS_PCD) in ehci_port_change()
152 if (ehci_readl(ehci, &ehci->regs->port_status[i]) & PORT_CSC) in ehci_port_change()
158 static void ehci_adjust_port_wakeup_flags(struct ehci_hcd *ehci, in ehci_adjust_port_wakeup_flags() argument
169 if (!ehci_to_hcd(ehci)->self.root_hub->do_remote_wakeup || do_wakeup) in ehci_adjust_port_wakeup_flags()
172 spin_lock_irq(&ehci->lock); in ehci_adjust_port_wakeup_flags()
175 if (ehci->has_tdi_phy_lpm) { in ehci_adjust_port_wakeup_flags()
176 port = HCS_N_PORTS(ehci->hcs_params); in ehci_adjust_port_wakeup_flags()
178 u32 __iomem *hostpc_reg = &ehci->regs->hostpc[port]; in ehci_adjust_port_wakeup_flags()
180 temp = ehci_readl(ehci, hostpc_reg); in ehci_adjust_port_wakeup_flags()
181 ehci_writel(ehci, temp & ~HOSTPC_PHCD, hostpc_reg); in ehci_adjust_port_wakeup_flags()
183 spin_unlock_irq(&ehci->lock); in ehci_adjust_port_wakeup_flags()
185 spin_lock_irq(&ehci->lock); in ehci_adjust_port_wakeup_flags()
188 port = HCS_N_PORTS(ehci->hcs_params); in ehci_adjust_port_wakeup_flags()
190 u32 __iomem *reg = &ehci->regs->port_status[port]; in ehci_adjust_port_wakeup_flags()
191 u32 t1 = ehci_readl(ehci, reg) & ~PORT_RWC_BITS; in ehci_adjust_port_wakeup_flags()
203 ehci_writel(ehci, t2, reg); in ehci_adjust_port_wakeup_flags()
207 if (ehci->has_tdi_phy_lpm) { in ehci_adjust_port_wakeup_flags()
208 port = HCS_N_PORTS(ehci->hcs_params); in ehci_adjust_port_wakeup_flags()
210 u32 __iomem *hostpc_reg = &ehci->regs->hostpc[port]; in ehci_adjust_port_wakeup_flags()
212 temp = ehci_readl(ehci, hostpc_reg); in ehci_adjust_port_wakeup_flags()
213 ehci_writel(ehci, temp | HOSTPC_PHCD, hostpc_reg); in ehci_adjust_port_wakeup_flags()
218 if (!suspending && ehci_port_change(ehci)) in ehci_adjust_port_wakeup_flags()
219 usb_hcd_resume_root_hub(ehci_to_hcd(ehci)); in ehci_adjust_port_wakeup_flags()
221 spin_unlock_irq(&ehci->lock); in ehci_adjust_port_wakeup_flags()
226 struct ehci_hcd *ehci = hcd_to_ehci (hcd); in ehci_bus_suspend() local
232 ehci_dbg(ehci, "suspend root hub\n"); in ehci_bus_suspend()
234 if (time_before (jiffies, ehci->next_statechange)) in ehci_bus_suspend()
238 ehci_quiesce(ehci); in ehci_bus_suspend()
240 spin_lock_irq (&ehci->lock); in ehci_bus_suspend()
241 if (ehci->rh_state < EHCI_RH_RUNNING) in ehci_bus_suspend()
250 if (ehci->resuming_ports) { in ehci_bus_suspend()
251 spin_unlock_irq(&ehci->lock); in ehci_bus_suspend()
252 ehci_dbg(ehci, "suspend failed because a port is resuming\n"); in ehci_bus_suspend()
262 ehci->bus_suspended = 0; in ehci_bus_suspend()
263 ehci->owned_ports = 0; in ehci_bus_suspend()
266 port = HCS_N_PORTS(ehci->hcs_params); in ehci_bus_suspend()
268 u32 __iomem *reg = &ehci->regs->port_status [port]; in ehci_bus_suspend()
269 u32 t1 = ehci_readl(ehci, reg) & ~PORT_RWC_BITS; in ehci_bus_suspend()
274 set_bit(port, &ehci->owned_ports); in ehci_bus_suspend()
277 set_bit(port, &ehci->bus_suspended); in ehci_bus_suspend()
301 ehci_port_speed(ehci, t2) == in ehci_bus_suspend()
304 ehci_writel(ehci, t2, reg); in ehci_bus_suspend()
308 spin_unlock_irq(&ehci->lock); in ehci_bus_suspend()
310 if ((changed && ehci->has_tdi_phy_lpm) || fs_idle_delay) { in ehci_bus_suspend()
318 if (changed && ehci->has_tdi_phy_lpm) { in ehci_bus_suspend()
319 spin_lock_irq(&ehci->lock); in ehci_bus_suspend()
320 port = HCS_N_PORTS(ehci->hcs_params); in ehci_bus_suspend()
322 u32 __iomem *hostpc_reg = &ehci->regs->hostpc[port]; in ehci_bus_suspend()
325 t3 = ehci_readl(ehci, hostpc_reg); in ehci_bus_suspend()
326 ehci_writel(ehci, t3 | HOSTPC_PHCD, hostpc_reg); in ehci_bus_suspend()
327 t3 = ehci_readl(ehci, hostpc_reg); in ehci_bus_suspend()
328 ehci_dbg(ehci, "Port %d phy low-power mode %s\n", in ehci_bus_suspend()
332 spin_unlock_irq(&ehci->lock); in ehci_bus_suspend()
336 if (ehci->bus_suspended) in ehci_bus_suspend()
340 ehci_halt (ehci); in ehci_bus_suspend()
342 spin_lock_irq(&ehci->lock); in ehci_bus_suspend()
343 if (ehci->enabled_hrtimer_events & BIT(EHCI_HRTIMER_POLL_DEAD)) in ehci_bus_suspend()
344 ehci_handle_controller_death(ehci); in ehci_bus_suspend()
345 if (ehci->rh_state != EHCI_RH_RUNNING) in ehci_bus_suspend()
347 ehci->rh_state = EHCI_RH_SUSPENDED; in ehci_bus_suspend()
349 end_unlink_async(ehci); in ehci_bus_suspend()
350 unlink_empty_async_suspended(ehci); in ehci_bus_suspend()
351 ehci_handle_start_intr_unlinks(ehci); in ehci_bus_suspend()
352 ehci_handle_intr_unlinks(ehci); in ehci_bus_suspend()
353 end_free_itds(ehci); in ehci_bus_suspend()
359 ehci_writel(ehci, mask, &ehci->regs->intr_enable); in ehci_bus_suspend()
360 ehci_readl(ehci, &ehci->regs->intr_enable); in ehci_bus_suspend()
363 ehci->next_statechange = jiffies + msecs_to_jiffies(10); in ehci_bus_suspend()
364 ehci->enabled_hrtimer_events = 0; in ehci_bus_suspend()
365 ehci->next_hrtimer_event = EHCI_HRTIMER_NO_EVENT; in ehci_bus_suspend()
366 spin_unlock_irq (&ehci->lock); in ehci_bus_suspend()
368 hrtimer_cancel(&ehci->hrtimer); in ehci_bus_suspend()
376 struct ehci_hcd *ehci = hcd_to_ehci (hcd); in ehci_bus_resume() local
382 if (time_before (jiffies, ehci->next_statechange)) in ehci_bus_resume()
384 spin_lock_irq (&ehci->lock); in ehci_bus_resume()
385 if (!HCD_HW_ACCESSIBLE(hcd) || ehci->shutdown) in ehci_bus_resume()
388 if (unlikely(ehci->debug)) { in ehci_bus_resume()
390 ehci->debug = NULL; in ehci_bus_resume()
401 power_okay = ehci_readl(ehci, &ehci->regs->intr_enable); in ehci_bus_resume()
402 ehci_dbg(ehci, "resume root hub%s\n", in ehci_bus_resume()
408 ehci_writel(ehci, 0, &ehci->regs->intr_enable); in ehci_bus_resume()
411 ehci_writel(ehci, 0, &ehci->regs->segment); in ehci_bus_resume()
412 ehci_writel(ehci, ehci->periodic_dma, &ehci->regs->frame_list); in ehci_bus_resume()
413 ehci_writel(ehci, (u32) ehci->async->qh_dma, &ehci->regs->async_next); in ehci_bus_resume()
416 ehci->command |= CMD_RUN; in ehci_bus_resume()
417 ehci_writel(ehci, ehci->command, &ehci->regs->command); in ehci_bus_resume()
418 ehci->rh_state = EHCI_RH_RUNNING; in ehci_bus_resume()
425 i = HCS_N_PORTS(ehci->hcs_params); in ehci_bus_resume()
427 temp = ehci_readl(ehci, &ehci->regs->port_status[i]); in ehci_bus_resume()
430 ehci_dbg(ehci, "Port status(0x%x) is wrong\n", temp); in ehci_bus_resume()
431 spin_unlock_irq(&ehci->lock); in ehci_bus_resume()
433 spin_lock_irq(&ehci->lock); in ehci_bus_resume()
438 if (ehci->shutdown) in ehci_bus_resume()
442 if (ehci->bus_suspended && ehci->has_tdi_phy_lpm) { in ehci_bus_resume()
443 i = HCS_N_PORTS(ehci->hcs_params); in ehci_bus_resume()
445 if (test_bit(i, &ehci->bus_suspended)) { in ehci_bus_resume()
447 &ehci->regs->hostpc[i]; in ehci_bus_resume()
449 temp = ehci_readl(ehci, hostpc_reg); in ehci_bus_resume()
450 ehci_writel(ehci, temp & ~HOSTPC_PHCD, in ehci_bus_resume()
454 spin_unlock_irq(&ehci->lock); in ehci_bus_resume()
456 spin_lock_irq(&ehci->lock); in ehci_bus_resume()
457 if (ehci->shutdown) in ehci_bus_resume()
462 i = HCS_N_PORTS (ehci->hcs_params); in ehci_bus_resume()
464 temp = ehci_readl(ehci, &ehci->regs->port_status [i]); in ehci_bus_resume()
466 if (test_bit(i, &ehci->bus_suspended) && in ehci_bus_resume()
471 ehci_writel(ehci, temp, &ehci->regs->port_status [i]); in ehci_bus_resume()
479 spin_unlock_irq(&ehci->lock); in ehci_bus_resume()
481 spin_lock_irq(&ehci->lock); in ehci_bus_resume()
482 if (ehci->shutdown) in ehci_bus_resume()
486 i = HCS_N_PORTS (ehci->hcs_params); in ehci_bus_resume()
488 temp = ehci_readl(ehci, &ehci->regs->port_status [i]); in ehci_bus_resume()
491 ehci_writel(ehci, temp, &ehci->regs->port_status [i]); in ehci_bus_resume()
495 ehci->next_statechange = jiffies + msecs_to_jiffies(5); in ehci_bus_resume()
496 spin_unlock_irq(&ehci->lock); in ehci_bus_resume()
498 ehci_handover_companion_ports(ehci); in ehci_bus_resume()
501 spin_lock_irq(&ehci->lock); in ehci_bus_resume()
502 if (ehci->shutdown) in ehci_bus_resume()
504 ehci_writel(ehci, INTR_MASK, &ehci->regs->intr_enable); in ehci_bus_resume()
505 (void) ehci_readl(ehci, &ehci->regs->intr_enable); in ehci_bus_resume()
506 spin_unlock_irq(&ehci->lock); in ehci_bus_resume()
511 spin_unlock_irq(&ehci->lock); in ehci_bus_resume()
527 static void set_owner(struct ehci_hcd *ehci, int portnum, int new_owner) in set_owner() argument
533 status_reg = &ehci->regs->port_status[portnum]; in set_owner()
541 spin_lock_irq(&ehci->lock); in set_owner()
542 port_status = ehci_readl(ehci, status_reg); in set_owner()
550 ehci_writel(ehci, port_status, status_reg); in set_owner()
552 spin_unlock_irq(&ehci->lock); in set_owner()
561 struct ehci_hcd *ehci, in check_reset_complete() argument
573 if (ehci_is_TDI(ehci)) { in check_reset_complete()
574 ehci_dbg (ehci, in check_reset_complete()
580 ehci_dbg (ehci, "port %d full speed --> companion\n", in check_reset_complete()
586 ehci_writel(ehci, port_status, status_reg); in check_reset_complete()
589 if (ehci->has_amcc_usb23) in check_reset_complete()
590 set_ohci_hcfs(ehci, 1); in check_reset_complete()
592 ehci_dbg(ehci, "port %d reset complete, port enabled\n", in check_reset_complete()
595 if (ehci->has_amcc_usb23) in check_reset_complete()
596 set_ohci_hcfs(ehci, 0); in check_reset_complete()
610 struct ehci_hcd *ehci = hcd_to_ehci (hcd); in ehci_hub_status_data() local
619 ports = HCS_N_PORTS (ehci->hcs_params); in ehci_hub_status_data()
628 status = ehci->resuming_ports; in ehci_hub_status_data()
645 spin_lock_irqsave (&ehci->lock, flags); in ehci_hub_status_data()
648 if (ehci->has_ppcd) in ehci_hub_status_data()
649 ppcd = ehci_readl(ehci, &ehci->regs->status) >> 16; in ehci_hub_status_data()
654 temp = ehci_readl(ehci, &ehci->regs->port_status[i]); in ehci_hub_status_data()
665 if ((temp & mask) != 0 || test_bit(i, &ehci->port_c_suspend) in ehci_hub_status_data()
666 || (ehci->reset_done[i] && time_after_eq( in ehci_hub_status_data()
667 jiffies, ehci->reset_done[i]))) { in ehci_hub_status_data()
677 if (ehci->resuming_ports) in ehci_hub_status_data()
680 spin_unlock_irqrestore (&ehci->lock, flags); in ehci_hub_status_data()
688 struct ehci_hcd *ehci, in ehci_hub_descriptor() argument
691 int ports = HCS_N_PORTS (ehci->hcs_params); in ehci_hub_descriptor()
707 if (HCS_PPC (ehci->hcs_params)) in ehci_hub_descriptor()
713 if (HCS_INDICATOR (ehci->hcs_params)) in ehci_hub_descriptor()
796 struct ehci_hcd *ehci = hcd_to_ehci(hcd); in ehset_single_step_set_feature() local
803 ehci_err(ehci, "No device attached to the RootHub\n"); in ehset_single_step_set_feature()
833 ehci_err(ehci, "%s SETUP stage timed out on ep0\n", __func__); in ehset_single_step_set_feature()
848 ehci_err(ehci, "%s IN stage timed out on ep0\n", __func__); in ehset_single_step_set_feature()
868 struct ehci_hcd *ehci = hcd_to_ehci (hcd); in ehci_hub_control() local
869 int ports = HCS_N_PORTS (ehci->hcs_params); in ehci_hub_control()
870 u32 __iomem *status_reg = &ehci->regs->port_status[ in ehci_hub_control()
872 u32 __iomem *hostpc_reg = &ehci->regs->hostpc[(wIndex & 0xff) - 1]; in ehci_hub_control()
885 spin_lock_irqsave (&ehci->lock, flags); in ehci_hub_control()
901 temp = ehci_readl(ehci, status_reg); in ehci_hub_control()
913 ehci_writel(ehci, temp & ~PORT_PE, status_reg); in ehci_hub_control()
916 ehci_writel(ehci, temp | PORT_PEC, status_reg); in ehci_hub_control()
921 if (ehci->no_selective_suspend) in ehci_hub_control()
936 if (ehci->has_tdi_phy_lpm) { in ehci_hub_control()
937 temp1 = ehci_readl(ehci, hostpc_reg); in ehci_hub_control()
938 ehci_writel(ehci, temp1 & ~HOSTPC_PHCD, in ehci_hub_control()
940 spin_unlock_irqrestore(&ehci->lock, flags); in ehci_hub_control()
942 spin_lock_irqsave(&ehci->lock, flags); in ehci_hub_control()
946 ehci_writel(ehci, temp | PORT_RESUME, status_reg); in ehci_hub_control()
947 ehci->reset_done[wIndex] = jiffies in ehci_hub_control()
949 set_bit(wIndex, &ehci->resuming_ports); in ehci_hub_control()
953 clear_bit(wIndex, &ehci->port_c_suspend); in ehci_hub_control()
956 if (HCS_PPC(ehci->hcs_params)) { in ehci_hub_control()
957 spin_unlock_irqrestore(&ehci->lock, flags); in ehci_hub_control()
958 ehci_port_power(ehci, wIndex, false); in ehci_hub_control()
959 spin_lock_irqsave(&ehci->lock, flags); in ehci_hub_control()
963 ehci_writel(ehci, temp | PORT_CSC, status_reg); in ehci_hub_control()
966 ehci_writel(ehci, temp | PORT_OCC, status_reg); in ehci_hub_control()
974 ehci_readl(ehci, &ehci->regs->command); /* unblock posted write */ in ehci_hub_control()
977 ehci_hub_descriptor (ehci, (struct usb_hub_descriptor *) in ehci_hub_control()
990 temp = ehci_readl(ehci, status_reg); in ehci_hub_control()
1008 if (((temp & PORT_OC) || (ehci->need_oc_pp_cycle)) in ehci_hub_control()
1009 && HCS_PPC(ehci->hcs_params)) { in ehci_hub_control()
1010 spin_unlock_irqrestore(&ehci->lock, flags); in ehci_hub_control()
1011 ehci_port_power(ehci, wIndex, false); in ehci_hub_control()
1012 spin_lock_irqsave(&ehci->lock, flags); in ehci_hub_control()
1013 temp = ehci_readl(ehci, status_reg); in ehci_hub_control()
1018 if (!ehci->reset_done[wIndex]) { in ehci_hub_control()
1023 ehci->reset_done[wIndex] = jiffies in ehci_hub_control()
1026 set_bit(wIndex, &ehci->resuming_ports); in ehci_hub_control()
1028 mod_timer(&ehci_to_hcd(ehci)->rh_timer, in ehci_hub_control()
1029 ehci->reset_done[wIndex]); in ehci_hub_control()
1033 } else if (!time_after_eq(jiffies, ehci->reset_done[wIndex])) { in ehci_hub_control()
1037 } else if (test_bit(wIndex, &ehci->resuming_ports)) { in ehci_hub_control()
1038 clear_bit(wIndex, &ehci->suspended_ports); in ehci_hub_control()
1039 set_bit(wIndex, &ehci->port_c_suspend); in ehci_hub_control()
1040 ehci->reset_done[wIndex] = 0; in ehci_hub_control()
1045 ehci_writel(ehci, temp, status_reg); in ehci_hub_control()
1046 clear_bit(wIndex, &ehci->resuming_ports); in ehci_hub_control()
1047 retval = ehci_handshake(ehci, status_reg, in ehci_hub_control()
1050 ehci_err(ehci, "port %d resume error %d\n", in ehci_hub_control()
1054 temp = ehci_readl(ehci, status_reg); in ehci_hub_control()
1059 ehci->reset_done [wIndex] = 0; in ehci_hub_control()
1062 ehci_writel(ehci, temp & ~(PORT_RWC_BITS | PORT_RESET), in ehci_hub_control()
1067 retval = ehci_handshake(ehci, status_reg, in ehci_hub_control()
1070 ehci_err (ehci, "port %d reset error %d\n", in ehci_hub_control()
1076 temp = check_reset_complete (ehci, wIndex, status_reg, in ehci_hub_control()
1077 ehci_readl(ehci, status_reg)); in ehci_hub_control()
1082 test_bit(wIndex, &ehci->companion_ports)) { in ehci_hub_control()
1085 ehci_writel(ehci, temp, status_reg); in ehci_hub_control()
1086 ehci_dbg(ehci, "port %d --> companion\n", wIndex + 1); in ehci_hub_control()
1087 temp = ehci_readl(ehci, status_reg); in ehci_hub_control()
1099 if (ehci->has_hostpc) { in ehci_hub_control()
1100 temp1 = ehci_readl(ehci, hostpc_reg); in ehci_hub_control()
1101 status |= ehci_port_speed(ehci, temp1); in ehci_hub_control()
1103 status |= ehci_port_speed(ehci, temp); in ehci_hub_control()
1111 } else if (test_bit(wIndex, &ehci->suspended_ports)) { in ehci_hub_control()
1112 clear_bit(wIndex, &ehci->suspended_ports); in ehci_hub_control()
1113 clear_bit(wIndex, &ehci->resuming_ports); in ehci_hub_control()
1114 ehci->reset_done[wIndex] = 0; in ehci_hub_control()
1116 set_bit(wIndex, &ehci->port_c_suspend); in ehci_hub_control()
1126 if (test_bit(wIndex, &ehci->port_c_suspend)) in ehci_hub_control()
1130 dbg_port(ehci, "GetStatus", wIndex + 1, temp); in ehci_hub_control()
1146 if (unlikely(ehci->debug)) { in ehci_hub_control()
1149 if (wIndex == HCS_DEBUG_PORT(ehci->hcs_params) && in ehci_hub_control()
1150 (readl(&ehci->debug->control) & DBGP_ENABLED)) { in ehci_hub_control()
1158 temp = ehci_readl(ehci, status_reg); in ehci_hub_control()
1165 if (ehci->no_selective_suspend) in ehci_hub_control()
1177 ehci_writel(ehci, temp | PORT_SUSPEND, status_reg); in ehci_hub_control()
1178 if (ehci->has_tdi_phy_lpm) { in ehci_hub_control()
1179 spin_unlock_irqrestore(&ehci->lock, flags); in ehci_hub_control()
1181 spin_lock_irqsave(&ehci->lock, flags); in ehci_hub_control()
1182 temp1 = ehci_readl(ehci, hostpc_reg); in ehci_hub_control()
1183 ehci_writel(ehci, temp1 | HOSTPC_PHCD, in ehci_hub_control()
1185 temp1 = ehci_readl(ehci, hostpc_reg); in ehci_hub_control()
1186 ehci_dbg(ehci, "Port%d phy low pwr mode %s\n", in ehci_hub_control()
1190 set_bit(wIndex, &ehci->suspended_ports); in ehci_hub_control()
1193 if (HCS_PPC(ehci->hcs_params)) { in ehci_hub_control()
1194 spin_unlock_irqrestore(&ehci->lock, flags); in ehci_hub_control()
1195 ehci_port_power(ehci, wIndex, true); in ehci_hub_control()
1196 spin_lock_irqsave(&ehci->lock, flags); in ehci_hub_control()
1207 && !ehci_is_TDI(ehci) in ehci_hub_control()
1209 ehci_dbg (ehci, in ehci_hub_control()
1221 ehci->reset_done [wIndex] = jiffies in ehci_hub_control()
1224 ehci_writel(ehci, temp, status_reg); in ehci_hub_control()
1236 spin_unlock_irqrestore(&ehci->lock, flags); in ehci_hub_control()
1239 spin_lock_irqsave(&ehci->lock, flags); in ehci_hub_control()
1245 spin_unlock_irqrestore(&ehci->lock, flags); in ehci_hub_control()
1246 ehci_quiesce(ehci); in ehci_hub_control()
1247 spin_lock_irqsave(&ehci->lock, flags); in ehci_hub_control()
1252 &ehci->regs->port_status[ports]; in ehci_hub_control()
1254 temp = ehci_readl(ehci, sreg) & ~PORT_RWC_BITS; in ehci_hub_control()
1256 ehci_writel(ehci, temp | PORT_SUSPEND, in ehci_hub_control()
1260 spin_unlock_irqrestore(&ehci->lock, flags); in ehci_hub_control()
1261 ehci_halt(ehci); in ehci_hub_control()
1262 spin_lock_irqsave(&ehci->lock, flags); in ehci_hub_control()
1264 temp = ehci_readl(ehci, status_reg); in ehci_hub_control()
1266 ehci_writel(ehci, temp, status_reg); in ehci_hub_control()
1272 ehci_readl(ehci, &ehci->regs->command); /* unblock posted writes */ in ehci_hub_control()
1281 spin_unlock_irqrestore (&ehci->lock, flags); in ehci_hub_control()
1288 struct ehci_hcd *ehci = hcd_to_ehci(hcd); in ehci_relinquish_port() local
1290 if (ehci_is_TDI(ehci)) in ehci_relinquish_port()
1292 set_owner(ehci, --portnum, PORT_OWNER); in ehci_relinquish_port()
1297 struct ehci_hcd *ehci = hcd_to_ehci(hcd); in ehci_port_handed_over() local
1300 if (ehci_is_TDI(ehci)) in ehci_port_handed_over()
1302 reg = &ehci->regs->port_status[portnum - 1]; in ehci_port_handed_over()
1303 return ehci_readl(ehci, reg) & PORT_OWNER; in ehci_port_handed_over()
1306 static int ehci_port_power(struct ehci_hcd *ehci, int portnum, bool enable) in ehci_port_power() argument
1308 struct usb_hcd *hcd = ehci_to_hcd(ehci); in ehci_port_power()
1309 u32 __iomem *status_reg = &ehci->regs->port_status[portnum]; in ehci_port_power()
1310 u32 temp = ehci_readl(ehci, status_reg) & ~PORT_RWC_BITS; in ehci_port_power()
1313 ehci_writel(ehci, temp | PORT_POWER, status_reg); in ehci_port_power()
1315 ehci_writel(ehci, temp & ~PORT_POWER, status_reg); in ehci_port_power()