Lines Matching refs:musb

23 	struct musb *musb;
27 musb = container_of(work, struct musb, finish_resume_work.work);
29 spin_lock_irqsave(&musb->lock, flags);
31 power = musb_readb(musb->mregs, MUSB_POWER);
33 musb_dbg(musb, "root port resume stopped, power %02x", power);
34 musb_writeb(musb->mregs, MUSB_POWER, power);
41 musb->is_active = 1;
42 musb->port1_status &= ~(USB_PORT_STAT_SUSPEND | MUSB_PORT_STAT_RESUME);
43 musb->port1_status |= USB_PORT_STAT_C_SUSPEND << 16;
44 usb_hcd_poll_rh_status(musb->hcd);
46 musb_set_state(musb, OTG_STATE_A_HOST);
48 spin_unlock_irqrestore(&musb->lock, flags);
51 int musb_port_suspend(struct musb *musb, bool do_suspend)
54 void __iomem *mbase = musb->mregs;
56 if (!is_host_active(musb))
84 musb_dbg(musb, "Root port suspended, power %02x", power);
86 musb->port1_status |= USB_PORT_STAT_SUSPEND;
87 switch (musb_get_state(musb)) {
89 musb_set_state(musb, OTG_STATE_A_SUSPEND);
90 musb->is_active = musb->xceiv &&
91 musb->xceiv->otg->host->b_hnp_enable;
92 if (musb->is_active)
93 mod_timer(&musb->otg_timer, jiffies
96 musb_platform_try_idle(musb, 0);
99 musb_set_state(musb, OTG_STATE_B_WAIT_ACON);
100 musb->is_active = musb->xceiv &&
101 musb->xceiv->otg->host->b_hnp_enable;
102 musb_platform_try_idle(musb, 0);
105 musb_dbg(musb, "bogus rh suspend? %s",
106 musb_otg_state_string(musb));
113 musb_dbg(musb, "Root port resuming, power %02x", power);
115 musb->port1_status |= MUSB_PORT_STAT_RESUME;
116 schedule_delayed_work(&musb->finish_resume_work,
122 void musb_port_reset(struct musb *musb, bool do_reset)
125 void __iomem *mbase = musb->mregs;
127 if (musb_get_state(musb) == OTG_STATE_B_IDLE) {
128 musb_dbg(musb, "HNP: Returning from HNP; no hub reset from b_idle");
129 musb->port1_status &= ~USB_PORT_STAT_RESET;
133 if (!is_host_active(musb))
143 * Then we must clear RESUME and wait a bit to let musb start
149 long remain = (unsigned long) musb->rh_timer - jiffies;
151 if (musb->rh_timer > 0 && remain > 0) {
154 &musb->deassert_reset_work, remain);
162 schedule_delayed_work(&musb->deassert_reset_work,
171 musb->port1_status |= USB_PORT_STAT_RESET;
172 musb->port1_status &= ~USB_PORT_STAT_ENABLE;
173 schedule_delayed_work(&musb->deassert_reset_work,
176 musb_dbg(musb, "root port reset stopped");
177 musb_platform_pre_root_reset_end(musb);
180 musb_platform_post_root_reset_end(musb);
184 musb_dbg(musb, "high-speed device connected");
185 musb->port1_status |= USB_PORT_STAT_HIGH_SPEED;
188 musb->port1_status &= ~USB_PORT_STAT_RESET;
189 musb->port1_status |= USB_PORT_STAT_ENABLE
192 usb_hcd_poll_rh_status(musb->hcd);
194 musb->vbuserr_retry = VBUSERR_RETRY_COUNT;
198 void musb_root_disconnect(struct musb *musb)
200 musb->port1_status = USB_PORT_STAT_POWER
203 usb_hcd_poll_rh_status(musb->hcd);
204 musb->is_active = 0;
206 switch (musb_get_state(musb)) {
208 if (musb->xceiv && musb->xceiv->otg->host->b_hnp_enable) {
209 musb_set_state(musb, OTG_STATE_A_PERIPHERAL);
210 musb->g.is_a_peripheral = 1;
215 musb_set_state(musb, OTG_STATE_A_WAIT_BCON);
216 musb->is_active = 0;
219 musb_set_state(musb, OTG_STATE_B_IDLE);
222 musb_dbg(musb, "host disconnect (%s)",
223 musb_otg_state_string(musb));
231 /* Caller may or may not hold musb->lock */
234 struct musb *musb = hcd_to_musb(hcd);
238 if (musb->port1_status & 0xffff0000) {
245 static int musb_has_gadget(struct musb *musb)
256 return musb->port_mode == MUSB_HOST;
268 struct musb *musb = hcd_to_musb(hcd);
274 spin_lock_irqsave(&musb->lock, flags);
277 spin_unlock_irqrestore(&musb->lock, flags);
304 musb_port_suspend(musb, false);
308 musb_platform_set_vbus(musb, 0);
319 musb_dbg(musb, "clear feature %d", wValue);
320 musb->port1_status &= ~(1 << wValue);
349 put_unaligned(cpu_to_le32(musb->port1_status
354 musb_dbg(musb, "port status %08x", musb->port1_status);
372 if (!hcd->self.is_b_host && musb_has_gadget(musb))
376 musb_port_reset(musb, true);
379 musb_port_suspend(musb, true);
382 if (unlikely(is_host_active(musb)))
402 musb_load_testpacket(musb);
409 musb_writeb(musb->mregs, MUSB_DEVCTL,
419 musb_writeb(musb->mregs, MUSB_TESTMODE, temp);
424 musb_dbg(musb, "set feature %d", wValue);
425 musb->port1_status |= 1 << wValue;
433 spin_unlock_irqrestore(&musb->lock, flags);
436 musb_start(musb);