Lines Matching refs:musb

48 	struct musb *musb;  in musb_host_finish_resume()  local
52 musb = container_of(work, struct musb, finish_resume_work.work); in musb_host_finish_resume()
54 spin_lock_irqsave(&musb->lock, flags); in musb_host_finish_resume()
56 power = musb_readb(musb->mregs, MUSB_POWER); in musb_host_finish_resume()
58 dev_dbg(musb->controller, "root port resume stopped, power %02x\n", in musb_host_finish_resume()
60 musb_writeb(musb->mregs, MUSB_POWER, power); in musb_host_finish_resume()
67 musb->is_active = 1; in musb_host_finish_resume()
68 musb->port1_status &= ~(USB_PORT_STAT_SUSPEND | MUSB_PORT_STAT_RESUME); in musb_host_finish_resume()
69 musb->port1_status |= USB_PORT_STAT_C_SUSPEND << 16; in musb_host_finish_resume()
70 usb_hcd_poll_rh_status(musb->hcd); in musb_host_finish_resume()
72 musb->xceiv->otg->state = OTG_STATE_A_HOST; in musb_host_finish_resume()
74 spin_unlock_irqrestore(&musb->lock, flags); in musb_host_finish_resume()
77 void musb_port_suspend(struct musb *musb, bool do_suspend) in musb_port_suspend() argument
79 struct usb_otg *otg = musb->xceiv->otg; in musb_port_suspend()
81 void __iomem *mbase = musb->mregs; in musb_port_suspend()
83 if (!is_host_active(musb)) in musb_port_suspend()
107 dev_dbg(musb->controller, "Root port suspended, power %02x\n", power); in musb_port_suspend()
109 musb->port1_status |= USB_PORT_STAT_SUSPEND; in musb_port_suspend()
110 switch (musb->xceiv->otg->state) { in musb_port_suspend()
112 musb->xceiv->otg->state = OTG_STATE_A_SUSPEND; in musb_port_suspend()
113 musb->is_active = otg->host->b_hnp_enable; in musb_port_suspend()
114 if (musb->is_active) in musb_port_suspend()
115 mod_timer(&musb->otg_timer, jiffies in musb_port_suspend()
118 musb_platform_try_idle(musb, 0); in musb_port_suspend()
121 musb->xceiv->otg->state = OTG_STATE_B_WAIT_ACON; in musb_port_suspend()
122 musb->is_active = otg->host->b_hnp_enable; in musb_port_suspend()
123 musb_platform_try_idle(musb, 0); in musb_port_suspend()
126 dev_dbg(musb->controller, "bogus rh suspend? %s\n", in musb_port_suspend()
127 usb_otg_state_string(musb->xceiv->otg->state)); in musb_port_suspend()
134 dev_dbg(musb->controller, "Root port resuming, power %02x\n", power); in musb_port_suspend()
137 musb->port1_status |= MUSB_PORT_STAT_RESUME; in musb_port_suspend()
138 schedule_delayed_work(&musb->finish_resume_work, in musb_port_suspend()
143 void musb_port_reset(struct musb *musb, bool do_reset) in musb_port_reset() argument
146 void __iomem *mbase = musb->mregs; in musb_port_reset()
148 if (musb->xceiv->otg->state == OTG_STATE_B_IDLE) { in musb_port_reset()
149 dev_dbg(musb->controller, "HNP: Returning from HNP; no hub reset from b_idle\n"); in musb_port_reset()
150 musb->port1_status &= ~USB_PORT_STAT_RESET; in musb_port_reset()
154 if (!is_host_active(musb)) in musb_port_reset()
170 long remain = (unsigned long) musb->rh_timer - jiffies; in musb_port_reset()
172 if (musb->rh_timer > 0 && remain > 0) { in musb_port_reset()
175 &musb->deassert_reset_work, remain); in musb_port_reset()
183 schedule_delayed_work(&musb->deassert_reset_work, in musb_port_reset()
192 musb->port1_status |= USB_PORT_STAT_RESET; in musb_port_reset()
193 musb->port1_status &= ~USB_PORT_STAT_ENABLE; in musb_port_reset()
194 schedule_delayed_work(&musb->deassert_reset_work, in musb_port_reset()
197 dev_dbg(musb->controller, "root port reset stopped\n"); in musb_port_reset()
203 dev_dbg(musb->controller, "high-speed device connected\n"); in musb_port_reset()
204 musb->port1_status |= USB_PORT_STAT_HIGH_SPEED; in musb_port_reset()
207 musb->port1_status &= ~USB_PORT_STAT_RESET; in musb_port_reset()
208 musb->port1_status |= USB_PORT_STAT_ENABLE in musb_port_reset()
211 usb_hcd_poll_rh_status(musb->hcd); in musb_port_reset()
213 musb->vbuserr_retry = VBUSERR_RETRY_COUNT; in musb_port_reset()
217 void musb_root_disconnect(struct musb *musb) in musb_root_disconnect() argument
219 struct usb_otg *otg = musb->xceiv->otg; in musb_root_disconnect()
221 musb->port1_status = USB_PORT_STAT_POWER in musb_root_disconnect()
224 usb_hcd_poll_rh_status(musb->hcd); in musb_root_disconnect()
225 musb->is_active = 0; in musb_root_disconnect()
227 switch (musb->xceiv->otg->state) { in musb_root_disconnect()
230 musb->xceiv->otg->state = OTG_STATE_A_PERIPHERAL; in musb_root_disconnect()
231 musb->g.is_a_peripheral = 1; in musb_root_disconnect()
236 musb->xceiv->otg->state = OTG_STATE_A_WAIT_BCON; in musb_root_disconnect()
237 musb->is_active = 0; in musb_root_disconnect()
240 musb->xceiv->otg->state = OTG_STATE_B_IDLE; in musb_root_disconnect()
243 dev_dbg(musb->controller, "host disconnect (%s)\n", in musb_root_disconnect()
244 usb_otg_state_string(musb->xceiv->otg->state)); in musb_root_disconnect()
254 struct musb *musb = hcd_to_musb(hcd); in musb_hub_status_data() local
258 if (musb->port1_status & 0xffff0000) { in musb_hub_status_data()
265 static int musb_has_gadget(struct musb *musb) in musb_has_gadget() argument
276 return musb->port_mode == MUSB_PORT_MODE_HOST; in musb_has_gadget()
288 struct musb *musb = hcd_to_musb(hcd); in musb_hub_control() local
293 spin_lock_irqsave(&musb->lock, flags); in musb_hub_control()
296 spin_unlock_irqrestore(&musb->lock, flags); in musb_hub_control()
323 musb_port_suspend(musb, false); in musb_hub_control()
327 musb_platform_set_vbus(musb, 0); in musb_hub_control()
338 dev_dbg(musb->controller, "clear feature %d\n", wValue); in musb_hub_control()
339 musb->port1_status &= ~(1 << wValue); in musb_hub_control()
368 put_unaligned(cpu_to_le32(musb->port1_status in musb_hub_control()
373 dev_dbg(musb->controller, "port status %08x\n", in musb_hub_control()
374 musb->port1_status); in musb_hub_control()
392 if (!hcd->self.is_b_host && musb_has_gadget(musb)) in musb_hub_control()
393 musb_start(musb); in musb_hub_control()
396 musb_port_reset(musb, true); in musb_hub_control()
399 musb_port_suspend(musb, true); in musb_hub_control()
402 if (unlikely(is_host_active(musb))) in musb_hub_control()
422 musb_load_testpacket(musb); in musb_hub_control()
429 musb_writeb(musb->mregs, MUSB_DEVCTL, in musb_hub_control()
439 musb_writeb(musb->mregs, MUSB_TESTMODE, temp); in musb_hub_control()
444 dev_dbg(musb->controller, "set feature %d\n", wValue); in musb_hub_control()
445 musb->port1_status |= 1 << wValue; in musb_hub_control()
453 spin_unlock_irqrestore(&musb->lock, flags); in musb_hub_control()