Lines Matching defs:musb

34 	struct platform_device	*musb;
40 static void tusb_musb_set_vbus(struct musb *musb, int is_on);
49 static u8 tusb_get_revision(struct musb *musb)
51 void __iomem *tbase = musb->ctrl_base;
66 static void tusb_print_revision(struct musb *musb)
68 void __iomem *tbase = musb->ctrl_base;
71 rev = musb->tusb_revision;
99 static void tusb_wbus_quirk(struct musb *musb, int enabled)
101 void __iomem *tbase = musb->ctrl_base;
114 dev_dbg(musb->controller, "Enabled tusb wbus quirk ctrl %08x ena %08x\n",
123 dev_dbg(musb->controller, "Disabled tusb wbus quirk ctrl %08x ena %08x\n",
227 struct musb *musb = hw_ep->musb;
234 dev_dbg(musb->controller, "%cX ep%d fifo %p count %d buf %p\n",
277 struct musb *musb = hw_ep->musb;
282 dev_dbg(musb->controller, "%cX ep%d fifo %p count %d buf %p\n",
322 static struct musb *the_musb;
332 struct musb *musb = the_musb;
333 void __iomem *tbase = musb->ctrl_base;
346 if (x->otg->default_a || mA < (musb->min_power << 1))
351 musb->is_bus_powered = 1;
354 musb->is_bus_powered = 0;
359 dev_dbg(musb->controller, "draw max %d mA VBUS\n", mA);
367 static void tusb_set_clock_source(struct musb *musb, unsigned mode)
369 void __iomem *tbase = musb->ctrl_base;
394 static void tusb_allow_idle(struct musb *musb, u32 wakeup_enables)
396 void __iomem *tbase = musb->ctrl_base;
400 && (musb->tusb_revision == TUSB_REV_30))
401 tusb_wbus_quirk(musb, 1);
403 tusb_set_clock_source(musb, 0);
415 if (is_host_active(musb)) {
425 dev_dbg(musb->controller, "idle, wake on %02x\n", wakeup_enables);
431 static int tusb_musb_vbus_status(struct musb *musb)
433 void __iomem *tbase = musb->ctrl_base;
460 struct musb *musb = timer_container_of(musb, t, dev_timer);
463 spin_lock_irqsave(&musb->lock, flags);
465 switch (musb->xceiv->otg->state) {
467 if ((musb->a_wait_bcon != 0)
468 && (musb->idle_timeout == 0
469 || time_after(jiffies, musb->idle_timeout))) {
470 dev_dbg(musb->controller, "Nothing connected %s, turning off VBUS\n",
471 usb_otg_state_string(musb->xceiv->otg->state));
475 tusb_musb_set_vbus(musb, 0);
481 if (!musb->is_active) {
485 if (is_host_active(musb) && (musb->port1_status >> 16))
488 if (!musb->gadget_driver) {
496 tusb_allow_idle(musb, wakeups);
499 spin_unlock_irqrestore(&musb->lock, flags);
515 static void tusb_musb_try_idle(struct musb *musb, unsigned long timeout)
524 if (musb->is_active || ((musb->a_wait_bcon == 0)
525 && (musb->xceiv->otg->state == OTG_STATE_A_WAIT_BCON))) {
526 dev_dbg(musb->controller, "%s active, deleting timer\n",
527 usb_otg_state_string(musb->xceiv->otg->state));
528 timer_delete(&musb->dev_timer);
534 if (!timer_pending(&musb->dev_timer))
537 dev_dbg(musb->controller, "Longer idle timer already pending, ignoring\n");
543 dev_dbg(musb->controller, "%s inactive, for idle timer for %lu ms\n",
544 usb_otg_state_string(musb->xceiv->otg->state),
546 mod_timer(&musb->dev_timer, timeout);
556 static void tusb_musb_set_vbus(struct musb *musb, int is_on)
558 void __iomem *tbase = musb->ctrl_base;
561 struct usb_otg *otg = musb->xceiv->otg;
570 devctl = musb_readb(musb->mregs, MUSB_DEVCTL);
575 musb->xceiv->otg->state = OTG_STATE_A_WAIT_VRISE;
579 MUSB_HST_MODE(musb);
588 switch (musb->xceiv->otg->state) {
591 musb->xceiv->otg->state = OTG_STATE_A_WAIT_VFALL;
594 musb->xceiv->otg->state = OTG_STATE_A_IDLE;
597 musb->xceiv->otg->state = OTG_STATE_A_IDLE;
599 musb->is_active = 0;
601 MUSB_HST_MODE(musb);
603 musb->is_active = 0;
605 musb->xceiv->otg->state = OTG_STATE_B_IDLE;
606 MUSB_DEV_MODE(musb);
617 musb_writeb(musb->mregs, MUSB_DEVCTL, devctl);
619 dev_dbg(musb->controller, "VBUS %s, devctl %02x otg %3x conf %08x prcm %08x\n",
620 usb_otg_state_string(musb->xceiv->otg->state),
621 musb_readb(musb->mregs, MUSB_DEVCTL),
633 static int tusb_musb_set_mode(struct musb *musb, u8 musb_mode)
635 void __iomem *tbase = musb->ctrl_base;
663 dev_dbg(musb->controller, "Trying to set mode %i\n", musb_mode);
683 tusb_otg_ints(struct musb *musb, u32 int_src, void __iomem *tbase)
687 struct usb_otg *otg = musb->xceiv->otg;
694 dev_dbg(musb->controller, "Default-%c\n", default_a ? 'A' : 'B');
696 tusb_musb_set_vbus(musb, default_a);
708 /* ? musb_root_disconnect(musb); */
709 musb->port1_status &=
718 dev_dbg(musb->controller, "Forcing disconnect (no interrupt)\n");
719 if (musb->xceiv->otg->state != OTG_STATE_B_IDLE) {
721 musb->xceiv->otg->state = OTG_STATE_B_IDLE;
722 musb->int_usb |= MUSB_INTR_DISCONNECT;
724 musb->is_active = 0;
726 dev_dbg(musb->controller, "vbus change, %s, otg %03x\n",
727 usb_otg_state_string(musb->xceiv->otg->state), otg_stat);
729 schedule_delayed_work(&musb->irq_work, 0);
732 dev_dbg(musb->controller, "vbus change, %s, otg %03x\n",
733 usb_otg_state_string(musb->xceiv->otg->state), otg_stat);
735 switch (musb->xceiv->otg->state) {
737 dev_dbg(musb->controller, "Got SRP, turning on VBUS\n");
738 musb_platform_set_vbus(musb, 1);
741 if (musb->a_wait_bcon != 0)
742 musb->is_active = 0;
744 musb->is_active = 1;
762 if (musb->vbuserr_retry) {
763 musb->vbuserr_retry--;
764 tusb_musb_set_vbus(musb, 1);
766 musb->vbuserr_retry
768 tusb_musb_set_vbus(musb, 0);
781 dev_dbg(musb->controller, "%s timer, %03x\n",
782 usb_otg_state_string(musb->xceiv->otg->state), otg_stat);
784 switch (musb->xceiv->otg->state) {
789 devctl = musb_readb(musb->mregs, MUSB_DEVCTL);
793 dev_dbg(musb->controller, "devctl %02x\n", devctl);
796 musb->xceiv->otg->state = OTG_STATE_A_WAIT_BCON;
797 musb->is_active = 0;
799 + msecs_to_jiffies(musb->a_wait_bcon);
803 tusb_musb_set_vbus(musb, 0);
807 if (musb->a_wait_bcon != 0)
809 + msecs_to_jiffies(musb->a_wait_bcon);
819 schedule_delayed_work(&musb->irq_work, 0);
826 struct musb *musb = __hci;
827 void __iomem *tbase = musb->ctrl_base;
831 spin_lock_irqsave(&musb->lock, flags);
838 dev_dbg(musb->controller, "TUSB IRQ %08x\n", int_src);
840 musb->int_usb = (u8) int_src;
847 if (musb->tusb_revision == TUSB_REV_30)
848 tusb_wbus_quirk(musb, 0);
859 dev_dbg(musb->controller, "TUSB NOR not ready\n");
863 tusb_set_clock_source(musb, 1);
868 musb->is_active = 1;
869 schedule_delayed_work(&musb->irq_work, 0);
871 dev_dbg(musb->controller, "wake %sactive %02x\n",
872 musb->is_active ? "" : "in", reg);
878 timer_delete(&musb->dev_timer);
884 idle_timeout = tusb_otg_ints(musb, int_src, tbase);
893 dev_dbg(musb->controller, "DMA IRQ %08x\n", dma_src);
902 musb->int_rx = (((musb_src >> 16) & 0xffff) << 1);
903 musb->int_tx = (musb_src & 0xffff);
905 musb->int_rx = 0;
906 musb->int_tx = 0;
910 musb_interrupt(musb);
916 tusb_musb_try_idle(musb, idle_timeout);
919 spin_unlock_irqrestore(&musb->lock, flags);
931 static void tusb_musb_enable(struct musb *musb)
933 void __iomem *tbase = musb->ctrl_base;
957 irq_set_irq_type(musb->nIrq, IRQ_TYPE_LEVEL_LOW);
975 static void tusb_musb_disable(struct musb *musb)
977 void __iomem *tbase = musb->ctrl_base;
987 timer_delete(&musb->dev_timer);
1000 static void tusb_setup_cpu_interface(struct musb *musb)
1002 void __iomem *tbase = musb->ctrl_base;
1027 static int tusb_musb_start(struct musb *musb)
1029 struct tusb6010_glue *glue = dev_get_drvdata(musb->controller->parent);
1030 void __iomem *tbase = musb->ctrl_base;
1050 spin_lock_irqsave(&musb->lock, flags);
1058 musb->tusb_revision = tusb_get_revision(musb);
1059 tusb_print_revision(musb);
1060 if (musb->tusb_revision < 2) {
1062 musb->tusb_revision);
1071 tusb_set_clock_source(musb, 1);
1082 tusb_setup_cpu_interface(musb);
1093 spin_unlock_irqrestore(&musb->lock, flags);
1098 spin_unlock_irqrestore(&musb->lock, flags);
1106 static int tusb_musb_init(struct musb *musb)
1113 musb->xceiv = usb_get_phy(USB_PHY_TYPE_USB2);
1114 if (IS_ERR_OR_NULL(musb->xceiv))
1117 pdev = to_platform_device(musb->controller);
1126 musb->async = mem->start;
1135 musb->sync = mem->start;
1143 musb->sync_va = sync;
1148 musb->mregs += TUSB_BASE_OFFSET;
1150 ret = tusb_musb_start(musb);
1156 musb->isr = tusb_musb_interrupt;
1158 musb->xceiv->set_power = tusb_draw_power;
1159 the_musb = musb;
1161 timer_setup(&musb->dev_timer, musb_do_idle, 0);
1168 usb_put_phy(musb->xceiv);
1173 static int tusb_musb_exit(struct musb *musb)
1175 struct tusb6010_glue *glue = dev_get_drvdata(musb->controller->parent);
1177 timer_delete_sync(&musb->dev_timer);
1183 iounmap(musb->sync_va);
1185 usb_put_phy(musb->xceiv);
1217 .name = "musb-hdrc",
1226 struct platform_device *musb;
1273 glue->musb = musb = platform_device_register_full(&pinfo);
1274 if (IS_ERR(musb)) {
1275 ret = PTR_ERR(musb);
1276 dev_err(&pdev->dev, "failed to register musb device: %d\n", ret);
1287 platform_device_unregister(glue->musb);
1295 .name = "musb-tusb",