Lines Matching refs:mtu

15 __releases(mep->mtu->lock)
16 __acquires(mep->mtu->lock)
19 struct mtu3 *mtu = mreq->mtu;
29 usb_gadget_unmap_request(&mtu->g, req, mep->is_in);
31 dev_dbg(mtu->dev, "%s complete req: %p, sts %d, %d/%d\n",
34 spin_unlock(&mtu->lock);
36 spin_lock(&mtu->lock);
46 dev_dbg(mep->mtu->dev, "abort %s's req: sts %d\n", mep->name, status);
63 struct mtu3 *mtu = mep->mtu;
74 switch (mtu->g.speed) {
107 dev_dbg(mtu->dev, "%s maxp:%d, interval:%d, burst:%d, mult:%d\n",
115 mep->slot = usb_endpoint_xfer_int(desc) ? 0 : mtu->slot;
117 ret = mtu3_config_ep(mtu, mep, interval, burst, mult);
123 mtu3_deconfig_ep(mtu, mep);
134 struct mtu3 *mtu = mep->mtu;
139 mtu3_deconfig_ep(mtu, mep);
155 struct mtu3 *mtu;
169 mtu = mep->mtu;
178 dev_dbg(mtu->dev, "%s %s\n", __func__, ep->name);
181 dev_WARN_ONCE(mtu->dev, true, "%s is already enabled\n",
186 spin_lock_irqsave(&mtu->lock, flags);
195 mtu->active_ep++;
198 spin_unlock_irqrestore(&mtu->lock, flags);
200 dev_dbg(mtu->dev, "%s active_ep=%d\n", __func__, mtu->active_ep);
209 struct mtu3 *mtu = mep->mtu;
212 dev_dbg(mtu->dev, "%s %s\n", __func__, mep->name);
216 dev_warn(mtu->dev, "%s is already disabled\n", mep->name);
220 spin_lock_irqsave(&mtu->lock, flags);
223 mtu->active_ep--;
224 spin_unlock_irqrestore(&(mtu->lock), flags);
226 dev_dbg(mtu->dev, "%s active_ep=%d, mtu3 is_active=%d\n",
227 __func__, mtu->active_ep, mtu->is_active);
263 struct mtu3 *mtu = mep->mtu;
273 dev_dbg(mtu->dev, "%s %s EP%d(%s), req=%p, maxp=%d, len#%d\n",
278 (mtu->gen2cp && req->length > GPD_BUF_SIZE_EL)) {
279 dev_warn(mtu->dev,
281 mtu->gen2cp ? GPD_BUF_SIZE_EL : GPD_BUF_SIZE,
288 dev_dbg(mtu->dev, "req=%p queued to %s while it's disabled\n",
293 mreq->mtu = mtu;
297 ret = usb_gadget_map_request(&mtu->g, req, mep->is_in);
299 dev_err(mtu->dev, "dma mapping failed\n");
303 spin_lock_irqsave(&mtu->lock, flags);
315 spin_unlock_irqrestore(&mtu->lock, flags);
326 struct mtu3 *mtu = mep->mtu;
333 dev_dbg(mtu->dev, "%s : req=%p\n", __func__, req);
336 spin_lock_irqsave(&mtu->lock, flags);
343 dev_dbg(mtu->dev, "req=%p not queued to %s\n", req, ep->name);
353 spin_unlock_irqrestore(&mtu->lock, flags);
365 struct mtu3 *mtu = mep->mtu;
370 dev_dbg(mtu->dev, "%s : %s...", __func__, ep->name);
372 spin_lock_irqsave(&mtu->lock, flags);
387 dev_dbg(mtu->dev, "req in progress, cannot halt %s\n",
396 dev_dbg(mtu->dev, "%s %s stall\n", ep->name, value ? "set" : "clear");
401 spin_unlock_irqrestore(&mtu->lock, flags);
430 struct mtu3 *mtu = gadget_to_mtu3(gadget);
432 return (int)mtu3_readl(mtu->mac_base, U3D_USB20_FRAME_NUM);
435 static void function_wake_notif(struct mtu3 *mtu, u8 intf)
437 mtu3_writel(mtu->mac_base, U3D_DEV_NOTIF_0,
439 mtu3_setbits(mtu->mac_base, U3D_DEV_NOTIF_0, SEND_DEV_NOTIF);
444 struct mtu3 *mtu = gadget_to_mtu3(gadget);
447 dev_dbg(mtu->dev, "%s\n", __func__);
450 if (!mtu->may_wakeup)
453 spin_lock_irqsave(&mtu->lock, flags);
454 if (mtu->g.speed >= USB_SPEED_SUPER) {
459 mtu3_setbits(mtu->mac_base, U3D_LINK_POWER_CONTROL, UX_EXIT);
466 function_wake_notif(mtu, 0);
468 mtu3_setbits(mtu->mac_base, U3D_POWER_MANAGEMENT, RESUME);
469 spin_unlock_irqrestore(&mtu->lock, flags);
471 spin_lock_irqsave(&mtu->lock, flags);
472 mtu3_clrbits(mtu->mac_base, U3D_POWER_MANAGEMENT, RESUME);
474 spin_unlock_irqrestore(&mtu->lock, flags);
481 struct mtu3 *mtu = gadget_to_mtu3(gadget);
483 mtu->is_self_powered = !!is_selfpowered;
489 struct mtu3 *mtu = gadget_to_mtu3(gadget);
492 dev_dbg(mtu->dev, "%s (%s) for %sactive device\n", __func__,
493 is_on ? "on" : "off", mtu->is_active ? "" : "in");
495 pm_runtime_get_sync(mtu->dev);
498 spin_lock_irqsave(&mtu->lock, flags);
501 if (!mtu->is_active) {
503 mtu->softconnect = is_on;
504 } else if (is_on != mtu->softconnect) {
505 mtu->softconnect = is_on;
506 mtu3_dev_on_off(mtu, is_on);
509 spin_unlock_irqrestore(&mtu->lock, flags);
510 pm_runtime_put(mtu->dev);
518 struct mtu3 *mtu = gadget_to_mtu3(gadget);
521 if (mtu->gadget_driver) {
522 dev_err(mtu->dev, "%s is already bound to %s\n",
523 mtu->g.name, mtu->gadget_driver->driver.name);
527 dev_dbg(mtu->dev, "bind driver %s\n", driver->function);
528 pm_runtime_get_sync(mtu->dev);
530 spin_lock_irqsave(&mtu->lock, flags);
532 mtu->softconnect = 0;
533 mtu->gadget_driver = driver;
535 if (mtu->ssusb->dr_mode == USB_DR_MODE_PERIPHERAL)
536 mtu3_start(mtu);
538 spin_unlock_irqrestore(&mtu->lock, flags);
539 pm_runtime_put(mtu->dev);
544 static void stop_activity(struct mtu3 *mtu)
546 struct usb_gadget_driver *driver = mtu->gadget_driver;
550 if (mtu->g.speed == USB_SPEED_UNKNOWN)
553 mtu->g.speed = USB_SPEED_UNKNOWN;
556 if (mtu->softconnect) {
557 mtu->softconnect = 0;
558 mtu3_dev_on_off(mtu, 0);
565 nuke(mtu->ep0, -ESHUTDOWN);
566 for (i = 1; i < mtu->num_eps; i++) {
567 nuke(mtu->in_eps + i, -ESHUTDOWN);
568 nuke(mtu->out_eps + i, -ESHUTDOWN);
572 spin_unlock(&mtu->lock);
573 driver->disconnect(&mtu->g);
574 spin_lock(&mtu->lock);
580 struct mtu3 *mtu = gadget_to_mtu3(g);
583 dev_dbg(mtu->dev, "%s\n", __func__);
585 spin_lock_irqsave(&mtu->lock, flags);
587 stop_activity(mtu);
588 mtu->gadget_driver = NULL;
590 if (mtu->ssusb->dr_mode == USB_DR_MODE_PERIPHERAL)
591 mtu3_stop(mtu);
593 spin_unlock_irqrestore(&mtu->lock, flags);
595 synchronize_irq(mtu->irq);
602 struct mtu3 *mtu = gadget_to_mtu3(g);
605 dev_dbg(mtu->dev, "%s %s\n", __func__, usb_speed_string(speed));
607 spin_lock_irqsave(&mtu->lock, flags);
608 mtu->speed = speed;
609 spin_unlock_irqrestore(&mtu->lock, flags);
614 struct mtu3 *mtu = gadget_to_mtu3(g);
617 dev_dbg(mtu->dev, "%s %s\n", __func__, enable ? "en" : "dis");
619 spin_lock_irqsave(&mtu->lock, flags);
620 mtu->async_callbacks = enable;
621 spin_unlock_irqrestore(&mtu->lock, flags);
635 static void mtu3_state_reset(struct mtu3 *mtu)
637 mtu->address = 0;
638 mtu->ep0_state = MU3D_EP0_STATE_SETUP;
639 mtu->may_wakeup = 0;
640 mtu->u1_enable = 0;
641 mtu->u2_enable = 0;
642 mtu->delayed_status = false;
643 mtu->test_mode = false;
646 static void init_hw_ep(struct mtu3 *mtu, struct mtu3_ep *mep,
650 mep->mtu = mtu;
666 mtu->g.ep0 = &mep->ep;
673 list_add_tail(&mep->ep.ep_list, &mtu->g.ep_list);
676 dev_dbg(mtu->dev, "%s, name=%s, maxp=%d\n", __func__, mep->ep.name,
689 static void mtu3_gadget_init_eps(struct mtu3 *mtu)
694 INIT_LIST_HEAD(&(mtu->g.ep_list));
696 dev_dbg(mtu->dev, "%s num_eps(1 for a pair of tx&rx ep)=%d\n",
697 __func__, mtu->num_eps);
699 init_hw_ep(mtu, mtu->ep0, 0, 0);
700 for (epnum = 1; epnum < mtu->num_eps; epnum++) {
701 init_hw_ep(mtu, mtu->in_eps + epnum, epnum, 1);
702 init_hw_ep(mtu, mtu->out_eps + epnum, epnum, 0);
706 int mtu3_gadget_setup(struct mtu3 *mtu)
708 mtu->g.ops = &mtu3_gadget_ops;
709 mtu->g.max_speed = mtu->max_speed;
710 mtu->g.speed = USB_SPEED_UNKNOWN;
711 mtu->g.sg_supported = 0;
712 mtu->g.name = MTU3_DRIVER_NAME;
713 mtu->g.irq = mtu->irq;
714 mtu->is_active = 0;
715 mtu->delayed_status = false;
717 mtu3_gadget_init_eps(mtu);
719 return usb_add_gadget_udc(mtu->dev, &mtu->g);
722 void mtu3_gadget_cleanup(struct mtu3 *mtu)
724 usb_del_gadget_udc(&mtu->g);
727 void mtu3_gadget_resume(struct mtu3 *mtu)
729 dev_dbg(mtu->dev, "gadget RESUME\n");
730 if (mtu->async_callbacks && mtu->gadget_driver && mtu->gadget_driver->resume) {
731 spin_unlock(&mtu->lock);
732 mtu->gadget_driver->resume(&mtu->g);
733 spin_lock(&mtu->lock);
738 void mtu3_gadget_suspend(struct mtu3 *mtu)
740 dev_dbg(mtu->dev, "gadget SUSPEND\n");
741 if (mtu->async_callbacks && mtu->gadget_driver && mtu->gadget_driver->suspend) {
742 spin_unlock(&mtu->lock);
743 mtu->gadget_driver->suspend(&mtu->g);
744 spin_lock(&mtu->lock);
749 void mtu3_gadget_disconnect(struct mtu3 *mtu)
751 dev_dbg(mtu->dev, "gadget DISCONNECT\n");
752 if (mtu->async_callbacks && mtu->gadget_driver && mtu->gadget_driver->disconnect) {
753 spin_unlock(&mtu->lock);
754 mtu->gadget_driver->disconnect(&mtu->g);
755 spin_lock(&mtu->lock);
758 mtu3_state_reset(mtu);
759 usb_gadget_set_state(&mtu->g, USB_STATE_NOTATTACHED);
762 void mtu3_gadget_reset(struct mtu3 *mtu)
764 dev_dbg(mtu->dev, "gadget RESET\n");
767 if (mtu->g.speed != USB_SPEED_UNKNOWN)
768 mtu3_gadget_disconnect(mtu);
770 mtu3_state_reset(mtu);