Lines Matching refs:musb
31 struct platform_device *musb;
35 static void tusb_musb_set_vbus(struct musb *musb, int is_on);
44 static u8 tusb_get_revision(struct musb *musb)
46 void __iomem *tbase = musb->ctrl_base;
61 static void tusb_print_revision(struct musb *musb)
63 void __iomem *tbase = musb->ctrl_base;
66 rev = musb->tusb_revision;
94 static void tusb_wbus_quirk(struct musb *musb, int enabled)
96 void __iomem *tbase = musb->ctrl_base;
109 dev_dbg(musb->controller, "Enabled tusb wbus quirk ctrl %08x ena %08x\n",
118 dev_dbg(musb->controller, "Disabled tusb wbus quirk ctrl %08x ena %08x\n",
222 struct musb *musb = hw_ep->musb;
229 dev_dbg(musb->controller, "%cX ep%d fifo %p count %d buf %p\n",
272 struct musb *musb = hw_ep->musb;
277 dev_dbg(musb->controller, "%cX ep%d fifo %p count %d buf %p\n",
317 static struct musb *the_musb;
327 struct musb *musb = the_musb;
328 void __iomem *tbase = musb->ctrl_base;
341 if (x->otg->default_a || mA < (musb->min_power << 1))
346 musb->is_bus_powered = 1;
349 musb->is_bus_powered = 0;
354 dev_dbg(musb->controller, "draw max %d mA VBUS\n", mA);
362 static void tusb_set_clock_source(struct musb *musb, unsigned mode)
364 void __iomem *tbase = musb->ctrl_base;
389 static void tusb_allow_idle(struct musb *musb, u32 wakeup_enables)
391 void __iomem *tbase = musb->ctrl_base;
395 && (musb->tusb_revision == TUSB_REV_30))
396 tusb_wbus_quirk(musb, 1);
398 tusb_set_clock_source(musb, 0);
410 if (is_host_active(musb)) {
420 dev_dbg(musb->controller, "idle, wake on %02x\n", wakeup_enables);
426 static int tusb_musb_vbus_status(struct musb *musb)
428 void __iomem *tbase = musb->ctrl_base;
455 struct musb *musb = from_timer(musb, t, dev_timer);
458 spin_lock_irqsave(&musb->lock, flags);
460 switch (musb->xceiv->otg->state) {
462 if ((musb->a_wait_bcon != 0)
463 && (musb->idle_timeout == 0
464 || time_after(jiffies, musb->idle_timeout))) {
465 dev_dbg(musb->controller, "Nothing connected %s, turning off VBUS\n",
466 usb_otg_state_string(musb->xceiv->otg->state));
470 tusb_musb_set_vbus(musb, 0);
475 if (!musb->is_active) {
479 if (is_host_active(musb) && (musb->port1_status >> 16))
482 if (!musb->gadget_driver) {
490 tusb_allow_idle(musb, wakeups);
493 spin_unlock_irqrestore(&musb->lock, flags);
509 static void tusb_musb_try_idle(struct musb *musb, unsigned long timeout)
518 if (musb->is_active || ((musb->a_wait_bcon == 0)
519 && (musb->xceiv->otg->state == OTG_STATE_A_WAIT_BCON))) {
520 dev_dbg(musb->controller, "%s active, deleting timer\n",
521 usb_otg_state_string(musb->xceiv->otg->state));
522 del_timer(&musb->dev_timer);
528 if (!timer_pending(&musb->dev_timer))
531 dev_dbg(musb->controller, "Longer idle timer already pending, ignoring\n");
537 dev_dbg(musb->controller, "%s inactive, for idle timer for %lu ms\n",
538 usb_otg_state_string(musb->xceiv->otg->state),
540 mod_timer(&musb->dev_timer, timeout);
550 static void tusb_musb_set_vbus(struct musb *musb, int is_on)
552 void __iomem *tbase = musb->ctrl_base;
555 struct usb_otg *otg = musb->xceiv->otg;
564 devctl = musb_readb(musb->mregs, MUSB_DEVCTL);
569 musb->xceiv->otg->state = OTG_STATE_A_WAIT_VRISE;
573 MUSB_HST_MODE(musb);
582 switch (musb->xceiv->otg->state) {
585 musb->xceiv->otg->state = OTG_STATE_A_WAIT_VFALL;
588 musb->xceiv->otg->state = OTG_STATE_A_IDLE;
591 musb->xceiv->otg->state = OTG_STATE_A_IDLE;
593 musb->is_active = 0;
595 MUSB_HST_MODE(musb);
597 musb->is_active = 0;
599 musb->xceiv->otg->state = OTG_STATE_B_IDLE;
600 MUSB_DEV_MODE(musb);
611 musb_writeb(musb->mregs, MUSB_DEVCTL, devctl);
613 dev_dbg(musb->controller, "VBUS %s, devctl %02x otg %3x conf %08x prcm %08x\n",
614 usb_otg_state_string(musb->xceiv->otg->state),
615 musb_readb(musb->mregs, MUSB_DEVCTL),
627 static int tusb_musb_set_mode(struct musb *musb, u8 musb_mode)
629 void __iomem *tbase = musb->ctrl_base;
657 dev_dbg(musb->controller, "Trying to set mode %i\n", musb_mode);
677 tusb_otg_ints(struct musb *musb, u32 int_src, void __iomem *tbase)
681 struct usb_otg *otg = musb->xceiv->otg;
688 dev_dbg(musb->controller, "Default-%c\n", default_a ? 'A' : 'B');
690 tusb_musb_set_vbus(musb, default_a);
702 /* ? musb_root_disconnect(musb); */
703 musb->port1_status &=
712 dev_dbg(musb->controller, "Forcing disconnect (no interrupt)\n");
713 if (musb->xceiv->otg->state != OTG_STATE_B_IDLE) {
715 musb->xceiv->otg->state = OTG_STATE_B_IDLE;
716 musb->int_usb |= MUSB_INTR_DISCONNECT;
718 musb->is_active = 0;
720 dev_dbg(musb->controller, "vbus change, %s, otg %03x\n",
721 usb_otg_state_string(musb->xceiv->otg->state), otg_stat);
723 schedule_delayed_work(&musb->irq_work, 0);
726 dev_dbg(musb->controller, "vbus change, %s, otg %03x\n",
727 usb_otg_state_string(musb->xceiv->otg->state), otg_stat);
729 switch (musb->xceiv->otg->state) {
731 dev_dbg(musb->controller, "Got SRP, turning on VBUS\n");
732 musb_platform_set_vbus(musb, 1);
735 if (musb->a_wait_bcon != 0)
736 musb->is_active = 0;
738 musb->is_active = 1;
756 if (musb->vbuserr_retry) {
757 musb->vbuserr_retry--;
758 tusb_musb_set_vbus(musb, 1);
760 musb->vbuserr_retry
762 tusb_musb_set_vbus(musb, 0);
775 dev_dbg(musb->controller, "%s timer, %03x\n",
776 usb_otg_state_string(musb->xceiv->otg->state), otg_stat);
778 switch (musb->xceiv->otg->state) {
783 devctl = musb_readb(musb->mregs, MUSB_DEVCTL);
787 dev_dbg(musb->controller, "devctl %02x\n", devctl);
790 musb->xceiv->otg->state = OTG_STATE_A_WAIT_BCON;
791 musb->is_active = 0;
793 + msecs_to_jiffies(musb->a_wait_bcon);
797 tusb_musb_set_vbus(musb, 0);
801 if (musb->a_wait_bcon != 0)
803 + msecs_to_jiffies(musb->a_wait_bcon);
813 schedule_delayed_work(&musb->irq_work, 0);
820 struct musb *musb = __hci;
821 void __iomem *tbase = musb->ctrl_base;
825 spin_lock_irqsave(&musb->lock, flags);
832 dev_dbg(musb->controller, "TUSB IRQ %08x\n", int_src);
834 musb->int_usb = (u8) int_src;
841 if (musb->tusb_revision == TUSB_REV_30)
842 tusb_wbus_quirk(musb, 0);
853 dev_dbg(musb->controller, "TUSB NOR not ready\n");
857 tusb_set_clock_source(musb, 1);
862 musb->is_active = 1;
863 schedule_delayed_work(&musb->irq_work, 0);
865 dev_dbg(musb->controller, "wake %sactive %02x\n",
866 musb->is_active ? "" : "in", reg);
872 del_timer(&musb->dev_timer);
878 idle_timeout = tusb_otg_ints(musb, int_src, tbase);
887 dev_dbg(musb->controller, "DMA IRQ %08x\n", dma_src);
896 musb->int_rx = (((musb_src >> 16) & 0xffff) << 1);
897 musb->int_tx = (musb_src & 0xffff);
899 musb->int_rx = 0;
900 musb->int_tx = 0;
904 musb_interrupt(musb);
910 tusb_musb_try_idle(musb, idle_timeout);
913 spin_unlock_irqrestore(&musb->lock, flags);
925 static void tusb_musb_enable(struct musb *musb)
927 void __iomem *tbase = musb->ctrl_base;
951 irq_set_irq_type(musb->nIrq, IRQ_TYPE_LEVEL_LOW);
969 static void tusb_musb_disable(struct musb *musb)
971 void __iomem *tbase = musb->ctrl_base;
981 del_timer(&musb->dev_timer);
994 static void tusb_setup_cpu_interface(struct musb *musb)
996 void __iomem *tbase = musb->ctrl_base;
1021 static int tusb_musb_start(struct musb *musb)
1023 void __iomem *tbase = musb->ctrl_base;
1028 if (musb->board_set_power)
1029 ret = musb->board_set_power(1);
1035 spin_lock_irqsave(&musb->lock, flags);
1043 musb->tusb_revision = tusb_get_revision(musb);
1044 tusb_print_revision(musb);
1045 if (musb->tusb_revision < 2) {
1047 musb->tusb_revision);
1056 tusb_set_clock_source(musb, 1);
1067 tusb_setup_cpu_interface(musb);
1078 spin_unlock_irqrestore(&musb->lock, flags);
1083 spin_unlock_irqrestore(&musb->lock, flags);
1085 if (musb->board_set_power)
1086 musb->board_set_power(0);
1091 static int tusb_musb_init(struct musb *musb)
1098 musb->xceiv = usb_get_phy(USB_PHY_TYPE_USB2);
1099 if (IS_ERR_OR_NULL(musb->xceiv))
1102 pdev = to_platform_device(musb->controller);
1111 musb->async = mem->start;
1120 musb->sync = mem->start;
1128 musb->sync_va = sync;
1133 musb->mregs += TUSB_BASE_OFFSET;
1135 ret = tusb_musb_start(musb);
1141 musb->isr = tusb_musb_interrupt;
1143 musb->xceiv->set_power = tusb_draw_power;
1144 the_musb = musb;
1146 timer_setup(&musb->dev_timer, musb_do_idle, 0);
1153 usb_put_phy(musb->xceiv);
1158 static int tusb_musb_exit(struct musb *musb)
1160 del_timer_sync(&musb->dev_timer);
1163 if (musb->board_set_power)
1164 musb->board_set_power(0);
1166 iounmap(musb->sync_va);
1168 usb_put_phy(musb->xceiv);
1200 .name = "musb-hdrc",
1209 struct platform_device *musb;
1250 glue->musb = musb = platform_device_register_full(&pinfo);
1251 if (IS_ERR(musb)) {
1252 ret = PTR_ERR(musb);
1253 dev_err(&pdev->dev, "failed to register musb device: %d\n", ret);
1264 platform_device_unregister(glue->musb);
1274 .name = "musb-tusb",