Lines Matching refs:musb
32 struct platform_device *musb; member
37 #define glue_to_musb(g) platform_get_drvdata(g->musb)
41 static inline void omap2430_low_level_exit(struct musb *musb) in omap2430_low_level_exit() argument
46 l = musb_readl(musb->mregs, OTG_FORCESTDBY); in omap2430_low_level_exit()
48 musb_writel(musb->mregs, OTG_FORCESTDBY, l); in omap2430_low_level_exit()
51 static inline void omap2430_low_level_init(struct musb *musb) in omap2430_low_level_init() argument
55 l = musb_readl(musb->mregs, OTG_FORCESTDBY); in omap2430_low_level_init()
57 musb_writel(musb->mregs, OTG_FORCESTDBY, l); in omap2430_low_level_init()
89 struct musb *musb = glue_to_musb(glue); in omap_musb_set_mailbox() local
92 pm_runtime_get_sync(musb->controller); in omap_musb_set_mailbox()
94 dev_dbg(musb->controller, "VBUS %s, devctl %02x\n", in omap_musb_set_mailbox()
95 usb_otg_state_string(musb->xceiv->otg->state), in omap_musb_set_mailbox()
96 musb_readb(musb->mregs, MUSB_DEVCTL)); in omap_musb_set_mailbox()
100 dev_dbg(musb->controller, "ID GND\n"); in omap_musb_set_mailbox()
101 switch (musb->xceiv->otg->state) { in omap_musb_set_mailbox()
103 error = musb_set_host(musb); in omap_musb_set_mailbox()
106 musb->xceiv->otg->state = OTG_STATE_A_WAIT_VRISE; in omap_musb_set_mailbox()
115 otg_set_vbus(musb->xceiv->otg, 1); in omap_musb_set_mailbox()
118 musb->xceiv->otg->state = OTG_STATE_A_IDLE; in omap_musb_set_mailbox()
119 musb->xceiv->last_event = USB_EVENT_ID; in omap_musb_set_mailbox()
120 if (musb->gadget_driver) { in omap_musb_set_mailbox()
123 otg_set_vbus(musb->xceiv->otg, 1); in omap_musb_set_mailbox()
130 dev_dbg(musb->controller, "VBUS Connect\n"); in omap_musb_set_mailbox()
132 musb->xceiv->otg->state = OTG_STATE_B_IDLE; in omap_musb_set_mailbox()
133 musb->xceiv->last_event = USB_EVENT_VBUS; in omap_musb_set_mailbox()
139 dev_dbg(musb->controller, "VBUS Disconnect\n"); in omap_musb_set_mailbox()
141 musb->xceiv->last_event = USB_EVENT_NONE; in omap_musb_set_mailbox()
142 musb_set_peripheral(musb); in omap_musb_set_mailbox()
143 otg_set_vbus(musb->xceiv->otg, 0); in omap_musb_set_mailbox()
148 dev_dbg(musb->controller, "ID float\n"); in omap_musb_set_mailbox()
150 pm_runtime_mark_last_busy(musb->controller); in omap_musb_set_mailbox()
151 pm_runtime_put_autosuspend(musb->controller); in omap_musb_set_mailbox()
152 atomic_notifier_call_chain(&musb->xceiv->notifier, in omap_musb_set_mailbox()
153 musb->xceiv->last_event, NULL); in omap_musb_set_mailbox()
169 struct musb *musb = __hci; in omap2430_musb_interrupt() local
171 spin_lock_irqsave(&musb->lock, flags); in omap2430_musb_interrupt()
173 musb->int_usb = musb_readb(musb->mregs, MUSB_INTRUSB); in omap2430_musb_interrupt()
174 musb->int_tx = musb_readw(musb->mregs, MUSB_INTRTX); in omap2430_musb_interrupt()
175 musb->int_rx = musb_readw(musb->mregs, MUSB_INTRRX); in omap2430_musb_interrupt()
177 if (musb->int_usb || musb->int_tx || musb->int_rx) in omap2430_musb_interrupt()
178 retval = musb_interrupt(musb); in omap2430_musb_interrupt()
180 spin_unlock_irqrestore(&musb->lock, flags); in omap2430_musb_interrupt()
185 static int omap2430_musb_init(struct musb *musb) in omap2430_musb_init() argument
189 struct device *dev = musb->controller; in omap2430_musb_init()
197 musb->phy = devm_phy_get(dev->parent, "usb2-phy"); in omap2430_musb_init()
205 musb->xceiv = devm_usb_get_phy_by_phandle(dev->parent, "usb-phy", 0); in omap2430_musb_init()
207 if (IS_ERR(musb->xceiv)) { in omap2430_musb_init()
208 status = PTR_ERR(musb->xceiv); in omap2430_musb_init()
217 if (IS_ERR(musb->phy)) { in omap2430_musb_init()
219 return PTR_ERR(musb->phy); in omap2430_musb_init()
221 musb->isr = omap2430_musb_interrupt; in omap2430_musb_init()
222 phy_init(musb->phy); in omap2430_musb_init()
223 phy_power_on(musb->phy); in omap2430_musb_init()
225 l = musb_readl(musb->mregs, OTG_INTERFSEL); in omap2430_musb_init()
235 musb_writel(musb->mregs, OTG_INTERFSEL, l); in omap2430_musb_init()
239 musb_readl(musb->mregs, OTG_REVISION), in omap2430_musb_init()
240 musb_readl(musb->mregs, OTG_SYSCONFIG), in omap2430_musb_init()
241 musb_readl(musb->mregs, OTG_SYSSTATUS), in omap2430_musb_init()
242 musb_readl(musb->mregs, OTG_INTERFSEL), in omap2430_musb_init()
243 musb_readl(musb->mregs, OTG_SIMENABLE)); in omap2430_musb_init()
248 static void omap2430_musb_enable(struct musb *musb) in omap2430_musb_enable() argument
250 struct device *dev = musb->controller; in omap2430_musb_enable()
258 static void omap2430_musb_disable(struct musb *musb) in omap2430_musb_disable() argument
260 struct device *dev = musb->controller; in omap2430_musb_disable()
268 static int omap2430_musb_exit(struct musb *musb) in omap2430_musb_exit() argument
270 struct device *dev = musb->controller; in omap2430_musb_exit()
273 omap2430_low_level_exit(musb); in omap2430_musb_exit()
274 phy_power_off(musb->phy); in omap2430_musb_exit()
275 phy_exit(musb->phy); in omap2430_musb_exit()
276 musb->phy = NULL; in omap2430_musb_exit()
304 struct platform_device *musb; in omap2430_probe() local
319 musb = platform_device_alloc("musb-hdrc", PLATFORM_DEVID_AUTO); in omap2430_probe()
320 if (!musb) { in omap2430_probe()
325 musb->dev.parent = &pdev->dev; in omap2430_probe()
326 musb->dev.dma_mask = &omap2430_dmamask; in omap2430_probe()
327 musb->dev.coherent_dma_mask = omap2430_dmamask; in omap2430_probe()
330 glue->musb = musb; in omap2430_probe()
402 ret = platform_device_add_resources(musb, musb_resources, in omap2430_probe()
409 ret = platform_device_add_data(musb, pdata, sizeof(*pdata)); in omap2430_probe()
417 ret = platform_device_add(musb); in omap2430_probe()
429 platform_device_put(musb); in omap2430_probe()
439 platform_device_unregister(glue->musb); in omap2430_remove()
450 struct musb *musb = glue_to_musb(glue); in omap2430_runtime_suspend() local
452 if (!musb) in omap2430_runtime_suspend()
455 musb->context.otg_interfsel = musb_readl(musb->mregs, in omap2430_runtime_suspend()
458 omap2430_low_level_exit(musb); in omap2430_runtime_suspend()
460 phy_power_off(musb->phy); in omap2430_runtime_suspend()
461 phy_exit(musb->phy); in omap2430_runtime_suspend()
469 struct musb *musb = glue_to_musb(glue); in omap2430_runtime_resume() local
471 if (!musb) in omap2430_runtime_resume()
474 phy_init(musb->phy); in omap2430_runtime_resume()
475 phy_power_on(musb->phy); in omap2430_runtime_resume()
477 omap2430_low_level_init(musb); in omap2430_runtime_resume()
478 musb_writel(musb->mregs, OTG_INTERFSEL, in omap2430_runtime_resume()
479 musb->context.otg_interfsel); in omap2430_runtime_resume()