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