Lines Matching refs:musb
57 struct platform_device *musb; member
93 static void davinci_musb_enable(struct musb *musb) in davinci_musb_enable() argument
98 tmp = (musb->epmask & DAVINCI_USB_TX_ENDPTS_MASK) in davinci_musb_enable()
100 musb_writel(musb->ctrl_base, DAVINCI_USB_INT_MASK_SET_REG, tmp); in davinci_musb_enable()
102 tmp = (musb->epmask & (0xfffe & DAVINCI_USB_RX_ENDPTS_MASK)) in davinci_musb_enable()
104 musb_writel(musb->ctrl_base, DAVINCI_USB_INT_MASK_SET_REG, tmp); in davinci_musb_enable()
109 musb_writel(musb->ctrl_base, DAVINCI_USB_INT_MASK_SET_REG, tmp); in davinci_musb_enable()
118 musb_writel(musb->ctrl_base, DAVINCI_USB_INT_SET_REG, in davinci_musb_enable()
125 static void davinci_musb_disable(struct musb *musb) in davinci_musb_disable() argument
132 musb_writel(musb->ctrl_base, DAVINCI_USB_INT_MASK_CLR_REG, in davinci_musb_disable()
136 musb_writeb(musb->mregs, MUSB_DEVCTL, 0); in davinci_musb_disable()
137 musb_writel(musb->ctrl_base, DAVINCI_USB_EOI_REG, 0); in davinci_musb_disable()
171 static void davinci_musb_source_power(struct musb *musb, int is_on, int immediate) in davinci_musb_source_power() argument
194 static void davinci_musb_set_vbus(struct musb *musb, int is_on) in davinci_musb_set_vbus() argument
196 WARN_ON(is_on && is_peripheral_active(musb)); in davinci_musb_set_vbus()
197 davinci_musb_source_power(musb, is_on, 0); in davinci_musb_set_vbus()
207 struct musb *musb = (void *)_musb; in otg_timer() local
208 void __iomem *mregs = musb->mregs; in otg_timer()
216 dev_dbg(musb->controller, "poll devctl %02x (%s)\n", devctl, in otg_timer()
217 usb_otg_state_string(musb->xceiv->otg->state)); in otg_timer()
219 spin_lock_irqsave(&musb->lock, flags); in otg_timer()
220 switch (musb->xceiv->otg->state) { in otg_timer()
231 musb->xceiv->otg->state = OTG_STATE_A_WAIT_VRISE; in otg_timer()
232 musb_writel(musb->ctrl_base, DAVINCI_USB_INT_SET_REG, in otg_timer()
254 musb->xceiv->otg->state = OTG_STATE_A_IDLE; in otg_timer()
259 spin_unlock_irqrestore(&musb->lock, flags); in otg_timer()
266 struct musb *musb = __hci; in davinci_musb_interrupt() local
267 struct usb_otg *otg = musb->xceiv->otg; in davinci_musb_interrupt()
268 void __iomem *tibase = musb->ctrl_base; in davinci_musb_interrupt()
272 spin_lock_irqsave(&musb->lock, flags); in davinci_musb_interrupt()
286 cppi = container_of(musb->dma_controller, struct cppi, controller); in davinci_musb_interrupt()
287 if (is_cppi_enabled(musb) && musb->dma_controller && !cppi->irq) in davinci_musb_interrupt()
293 dev_dbg(musb->controller, "IRQ %08x\n", tmp); in davinci_musb_interrupt()
295 musb->int_rx = (tmp & DAVINCI_USB_RXINT_MASK) in davinci_musb_interrupt()
297 musb->int_tx = (tmp & DAVINCI_USB_TXINT_MASK) in davinci_musb_interrupt()
299 musb->int_usb = (tmp & DAVINCI_USB_USBINT_MASK) in davinci_musb_interrupt()
311 void __iomem *mregs = musb->mregs; in davinci_musb_interrupt()
313 int err = musb->int_usb & MUSB_INTR_VBUSERROR; in davinci_musb_interrupt()
315 err = musb->int_usb & MUSB_INTR_VBUSERROR; in davinci_musb_interrupt()
327 musb->int_usb &= ~MUSB_INTR_VBUSERROR; in davinci_musb_interrupt()
328 musb->xceiv->otg->state = OTG_STATE_A_WAIT_VFALL; in davinci_musb_interrupt()
332 MUSB_HST_MODE(musb); in davinci_musb_interrupt()
334 musb->xceiv->otg->state = OTG_STATE_A_WAIT_VRISE; in davinci_musb_interrupt()
335 portstate(musb->port1_status |= USB_PORT_STAT_POWER); in davinci_musb_interrupt()
338 musb->is_active = 0; in davinci_musb_interrupt()
339 MUSB_DEV_MODE(musb); in davinci_musb_interrupt()
341 musb->xceiv->otg->state = OTG_STATE_B_IDLE; in davinci_musb_interrupt()
342 portstate(musb->port1_status &= ~USB_PORT_STAT_POWER); in davinci_musb_interrupt()
348 davinci_musb_source_power(musb, drvvbus, 0); in davinci_musb_interrupt()
349 dev_dbg(musb->controller, "VBUS %s (%s)%s, devctl %02x\n", in davinci_musb_interrupt()
351 usb_otg_state_string(musb->xceiv->otg->state), in davinci_musb_interrupt()
357 if (musb->int_tx || musb->int_rx || musb->int_usb) in davinci_musb_interrupt()
358 retval |= musb_interrupt(musb); in davinci_musb_interrupt()
364 if (musb->xceiv->otg->state == OTG_STATE_B_IDLE) in davinci_musb_interrupt()
367 spin_unlock_irqrestore(&musb->lock, flags); in davinci_musb_interrupt()
372 static int davinci_musb_set_mode(struct musb *musb, u8 mode) in davinci_musb_set_mode() argument
378 static int davinci_musb_init(struct musb *musb) in davinci_musb_init() argument
380 void __iomem *tibase = musb->ctrl_base; in davinci_musb_init()
384 musb->xceiv = usb_get_phy(USB_PHY_TYPE_USB2); in davinci_musb_init()
385 if (IS_ERR_OR_NULL(musb->xceiv)) { in davinci_musb_init()
390 musb->mregs += DAVINCI_BASE_OFFSET; in davinci_musb_init()
397 setup_timer(&otg_workaround, otg_timer, (unsigned long) musb); in davinci_musb_init()
399 davinci_musb_source_power(musb, 0, 1); in davinci_musb_init()
435 musb->isr = davinci_musb_interrupt; in davinci_musb_init()
439 usb_put_phy(musb->xceiv); in davinci_musb_init()
445 static int davinci_musb_exit(struct musb *musb) in davinci_musb_exit() argument
458 davinci_musb_source_power(musb, 0 /*off*/, 1); in davinci_musb_exit()
461 if (musb->xceiv->otg->default_a) { in davinci_musb_exit()
469 devctl = musb_readb(musb->mregs, MUSB_DEVCTL); in davinci_musb_exit()
474 dev_dbg(musb->controller, "VBUS %d\n", in davinci_musb_exit()
483 dev_dbg(musb->controller, "VBUS off timeout (devctl %02x)\n", devctl); in davinci_musb_exit()
488 usb_put_phy(musb->xceiv); in davinci_musb_exit()
520 struct platform_device *musb; in davinci_probe() local
581 glue->musb = musb = platform_device_register_full(&pinfo); in davinci_probe()
582 if (IS_ERR(musb)) { in davinci_probe()
583 ret = PTR_ERR(musb); in davinci_probe()
601 platform_device_unregister(glue->musb); in davinci_remove()