Lines Matching refs:musb
37 struct platform_device *musb;
76 static void davinci_musb_enable(struct musb *musb)
81 tmp = (musb->epmask & DAVINCI_USB_TX_ENDPTS_MASK)
83 musb_writel(musb->ctrl_base, DAVINCI_USB_INT_MASK_SET_REG, tmp);
85 tmp = (musb->epmask & (0xfffe & DAVINCI_USB_RX_ENDPTS_MASK))
87 musb_writel(musb->ctrl_base, DAVINCI_USB_INT_MASK_SET_REG, tmp);
92 musb_writel(musb->ctrl_base, DAVINCI_USB_INT_MASK_SET_REG, tmp);
101 musb_writel(musb->ctrl_base, DAVINCI_USB_INT_SET_REG,
108 static void davinci_musb_disable(struct musb *musb)
115 musb_writel(musb->ctrl_base, DAVINCI_USB_INT_MASK_CLR_REG,
119 musb_writel(musb->ctrl_base, DAVINCI_USB_EOI_REG, 0);
150 static void davinci_musb_source_power(struct musb *musb, int is_on,
153 struct davinci_glue *glue = dev_get_drvdata(musb->controller->parent);
177 static void davinci_musb_set_vbus(struct musb *musb, int is_on)
179 WARN_ON(is_on && is_peripheral_active(musb));
180 davinci_musb_source_power(musb, is_on, 0);
188 struct musb *musb = from_timer(musb, t, dev_timer);
189 void __iomem *mregs = musb->mregs;
197 dev_dbg(musb->controller, "poll devctl %02x (%s)\n", devctl,
198 usb_otg_state_string(musb->xceiv->otg->state));
200 spin_lock_irqsave(&musb->lock, flags);
201 switch (musb->xceiv->otg->state) {
209 mod_timer(&musb->dev_timer, jiffies + POLL_SECONDS * HZ);
212 musb->xceiv->otg->state = OTG_STATE_A_WAIT_VRISE;
213 musb_writel(musb->ctrl_base, DAVINCI_USB_INT_SET_REG,
233 mod_timer(&musb->dev_timer, jiffies + POLL_SECONDS * HZ);
235 musb->xceiv->otg->state = OTG_STATE_A_IDLE;
240 spin_unlock_irqrestore(&musb->lock, flags);
247 struct musb *musb = __hci;
248 struct usb_otg *otg = musb->xceiv->otg;
249 void __iomem *tibase = musb->ctrl_base;
253 spin_lock_irqsave(&musb->lock, flags);
267 cppi = container_of(musb->dma_controller, struct cppi, controller);
268 if (is_cppi_enabled(musb) && musb->dma_controller && !cppi->irq)
274 dev_dbg(musb->controller, "IRQ %08x\n", tmp);
276 musb->int_rx = (tmp & DAVINCI_USB_RXINT_MASK)
278 musb->int_tx = (tmp & DAVINCI_USB_TXINT_MASK)
280 musb->int_usb = (tmp & DAVINCI_USB_USBINT_MASK)
292 void __iomem *mregs = musb->mregs;
294 int err = musb->int_usb & MUSB_INTR_VBUSERROR;
296 err = musb->int_usb & MUSB_INTR_VBUSERROR;
308 musb->int_usb &= ~MUSB_INTR_VBUSERROR;
309 musb->xceiv->otg->state = OTG_STATE_A_WAIT_VFALL;
310 mod_timer(&musb->dev_timer, jiffies + POLL_SECONDS * HZ);
313 MUSB_HST_MODE(musb);
314 musb->xceiv->otg->state = OTG_STATE_A_WAIT_VRISE;
315 portstate(musb->port1_status |= USB_PORT_STAT_POWER);
316 del_timer(&musb->dev_timer);
318 musb->is_active = 0;
319 MUSB_DEV_MODE(musb);
320 musb->xceiv->otg->state = OTG_STATE_B_IDLE;
321 portstate(musb->port1_status &= ~USB_PORT_STAT_POWER);
327 davinci_musb_source_power(musb, drvvbus, 0);
328 dev_dbg(musb->controller, "VBUS %s (%s)%s, devctl %02x\n",
330 usb_otg_state_string(musb->xceiv->otg->state),
336 if (musb->int_tx || musb->int_rx || musb->int_usb)
337 retval |= musb_interrupt(musb);
343 if (musb->xceiv->otg->state == OTG_STATE_B_IDLE)
344 mod_timer(&musb->dev_timer, jiffies + POLL_SECONDS * HZ);
346 spin_unlock_irqrestore(&musb->lock, flags);
351 static int davinci_musb_set_mode(struct musb *musb, u8 mode)
357 static int davinci_musb_init(struct musb *musb)
359 void __iomem *tibase = musb->ctrl_base;
363 musb->xceiv = usb_get_phy(USB_PHY_TYPE_USB2);
364 if (IS_ERR_OR_NULL(musb->xceiv)) {
369 musb->mregs += DAVINCI_BASE_OFFSET;
376 timer_setup(&musb->dev_timer, otg_timer, 0);
378 davinci_musb_source_power(musb, 0, 1);
409 /* NOTE: irqs are in mixed mode, not bypass to pure-musb */
414 musb->isr = davinci_musb_interrupt;
418 usb_put_phy(musb->xceiv);
424 static int davinci_musb_exit(struct musb *musb)
429 del_timer_sync(&musb->dev_timer);
440 davinci_musb_source_power(musb, 0 /*off*/, 1);
448 devctl = musb_readb(musb->mregs, MUSB_DEVCTL);
453 dev_dbg(musb->controller, "VBUS %d\n",
462 dev_dbg(musb->controller, "VBUS off timeout (devctl %02x)\n", devctl);
466 usb_put_phy(musb->xceiv);
489 .name = "musb-hdrc",
498 struct platform_device *musb;
568 glue->musb = musb = platform_device_register_full(&pinfo);
569 if (IS_ERR(musb)) {
570 ret = PTR_ERR(musb);
571 dev_err(&pdev->dev, "failed to register musb device: %d\n", ret);
588 platform_device_unregister(glue->musb);
599 .name = "musb-davinci",