Lines Matching refs:musb

33 	struct platform_device	*musb;  member
41 #define glue_to_musb(g) platform_get_drvdata(g->musb)
45 static inline void omap2430_low_level_exit(struct musb *musb) in omap2430_low_level_exit() argument
50 l = musb_readl(musb->mregs, OTG_FORCESTDBY); in omap2430_low_level_exit()
52 musb_writel(musb->mregs, OTG_FORCESTDBY, l); in omap2430_low_level_exit()
55 static inline void omap2430_low_level_init(struct musb *musb) in omap2430_low_level_init() argument
59 l = musb_readl(musb->mregs, OTG_FORCESTDBY); in omap2430_low_level_init()
61 musb_writel(musb->mregs, OTG_FORCESTDBY, l); in omap2430_low_level_init()
93 struct musb *musb = glue_to_musb(glue); in omap_musb_set_mailbox() local
96 pm_runtime_get_sync(musb->controller); in omap_musb_set_mailbox()
98 dev_dbg(musb->controller, "VBUS %s, devctl %02x\n", in omap_musb_set_mailbox()
99 usb_otg_state_string(musb->xceiv->otg->state), in omap_musb_set_mailbox()
100 musb_readb(musb->mregs, MUSB_DEVCTL)); in omap_musb_set_mailbox()
104 dev_dbg(musb->controller, "ID GND\n"); in omap_musb_set_mailbox()
105 switch (musb->xceiv->otg->state) { in omap_musb_set_mailbox()
107 error = musb_set_host(musb); in omap_musb_set_mailbox()
110 musb->xceiv->otg->state = OTG_STATE_A_WAIT_VRISE; in omap_musb_set_mailbox()
119 otg_set_vbus(musb->xceiv->otg, 1); in omap_musb_set_mailbox()
122 musb->xceiv->otg->state = OTG_STATE_A_IDLE; in omap_musb_set_mailbox()
123 musb->xceiv->last_event = USB_EVENT_ID; in omap_musb_set_mailbox()
124 if (musb->gadget_driver) { in omap_musb_set_mailbox()
127 otg_set_vbus(musb->xceiv->otg, 1); in omap_musb_set_mailbox()
134 dev_dbg(musb->controller, "VBUS Connect\n"); in omap_musb_set_mailbox()
136 musb->xceiv->otg->state = OTG_STATE_B_IDLE; in omap_musb_set_mailbox()
137 musb->xceiv->last_event = USB_EVENT_VBUS; in omap_musb_set_mailbox()
143 dev_dbg(musb->controller, "VBUS Disconnect\n"); in omap_musb_set_mailbox()
145 musb->xceiv->last_event = USB_EVENT_NONE; in omap_musb_set_mailbox()
146 musb_set_peripheral(musb); in omap_musb_set_mailbox()
147 otg_set_vbus(musb->xceiv->otg, 0); in omap_musb_set_mailbox()
152 dev_dbg(musb->controller, "ID float\n"); in omap_musb_set_mailbox()
154 pm_runtime_mark_last_busy(musb->controller); in omap_musb_set_mailbox()
155 pm_runtime_put_autosuspend(musb->controller); in omap_musb_set_mailbox()
156 atomic_notifier_call_chain(&musb->xceiv->notifier, in omap_musb_set_mailbox()
157 musb->xceiv->last_event, NULL); in omap_musb_set_mailbox()
173 struct musb *musb = __hci; in omap2430_musb_interrupt() local
175 spin_lock_irqsave(&musb->lock, flags); in omap2430_musb_interrupt()
177 musb->int_usb = musb_readb(musb->mregs, MUSB_INTRUSB); in omap2430_musb_interrupt()
178 musb->int_tx = musb_readw(musb->mregs, MUSB_INTRTX); in omap2430_musb_interrupt()
179 musb->int_rx = musb_readw(musb->mregs, MUSB_INTRRX); in omap2430_musb_interrupt()
181 if (musb->int_usb || musb->int_tx || musb->int_rx) in omap2430_musb_interrupt()
182 retval = musb_interrupt(musb); in omap2430_musb_interrupt()
184 spin_unlock_irqrestore(&musb->lock, flags); in omap2430_musb_interrupt()
189 static int omap2430_musb_init(struct musb *musb) in omap2430_musb_init() argument
193 struct device *dev = musb->controller; in omap2430_musb_init()
201 musb->phy = devm_phy_get(dev->parent, "usb2-phy"); in omap2430_musb_init()
209 musb->xceiv = devm_usb_get_phy_by_phandle(dev->parent, "usb-phy", 0); in omap2430_musb_init()
211 if (IS_ERR(musb->xceiv)) { in omap2430_musb_init()
212 status = PTR_ERR(musb->xceiv); in omap2430_musb_init()
221 if (IS_ERR(musb->phy)) { in omap2430_musb_init()
223 return PTR_ERR(musb->phy); in omap2430_musb_init()
225 musb->isr = omap2430_musb_interrupt; in omap2430_musb_init()
226 phy_init(musb->phy); in omap2430_musb_init()
227 phy_power_on(musb->phy); in omap2430_musb_init()
229 l = musb_readl(musb->mregs, OTG_INTERFSEL); in omap2430_musb_init()
239 musb_writel(musb->mregs, OTG_INTERFSEL, l); in omap2430_musb_init()
243 musb_readl(musb->mregs, OTG_REVISION), in omap2430_musb_init()
244 musb_readl(musb->mregs, OTG_SYSCONFIG), in omap2430_musb_init()
245 musb_readl(musb->mregs, OTG_SYSSTATUS), in omap2430_musb_init()
246 musb_readl(musb->mregs, OTG_INTERFSEL), in omap2430_musb_init()
247 musb_readl(musb->mregs, OTG_SIMENABLE)); in omap2430_musb_init()
252 static void omap2430_musb_enable(struct musb *musb) in omap2430_musb_enable() argument
254 struct device *dev = musb->controller; in omap2430_musb_enable()
262 static void omap2430_musb_disable(struct musb *musb) in omap2430_musb_disable() argument
264 struct device *dev = musb->controller; in omap2430_musb_disable()
272 static int omap2430_musb_exit(struct musb *musb) in omap2430_musb_exit() argument
274 struct device *dev = musb->controller; in omap2430_musb_exit()
277 omap2430_low_level_exit(musb); in omap2430_musb_exit()
278 phy_power_off(musb->phy); in omap2430_musb_exit()
279 phy_exit(musb->phy); in omap2430_musb_exit()
280 musb->phy = NULL; in omap2430_musb_exit()
307 struct platform_device *musb; in omap2430_probe() local
323 musb = platform_device_alloc("musb-hdrc", PLATFORM_DEVID_AUTO); in omap2430_probe()
324 if (!musb) { in omap2430_probe()
329 musb->dev.parent = &pdev->dev; in omap2430_probe()
330 musb->dev.dma_mask = &omap2430_dmamask; in omap2430_probe()
331 musb->dev.coherent_dma_mask = omap2430_dmamask; in omap2430_probe()
341 device_set_of_node_from_dev(&musb->dev, &pdev->dev); in omap2430_probe()
346 glue->musb = musb; in omap2430_probe()
400 ret = platform_device_add_resources(musb, pdev->resource, pdev->num_resources); in omap2430_probe()
441 ret = platform_device_add_resources(musb, musb_res, i); in omap2430_probe()
448 ret = platform_device_add_data(musb, pdata, sizeof(*pdata)); in omap2430_probe()
456 ret = platform_device_add(musb); in omap2430_probe()
468 platform_device_put(musb); in omap2430_probe()
478 platform_device_unregister(glue->musb); in omap2430_remove()
487 struct musb *musb = glue_to_musb(glue); in omap2430_runtime_suspend() local
489 if (!musb) in omap2430_runtime_suspend()
492 musb->context.otg_interfsel = musb_readl(musb->mregs, in omap2430_runtime_suspend()
495 omap2430_low_level_exit(musb); in omap2430_runtime_suspend()
498 phy_power_off(musb->phy); in omap2430_runtime_suspend()
499 phy_exit(musb->phy); in omap2430_runtime_suspend()
510 struct musb *musb = glue_to_musb(glue); in omap2430_runtime_resume() local
512 if (!musb) in omap2430_runtime_resume()
516 phy_init(musb->phy); in omap2430_runtime_resume()
517 phy_power_on(musb->phy); in omap2430_runtime_resume()
520 omap2430_low_level_init(musb); in omap2430_runtime_resume()
521 musb_writel(musb->mregs, OTG_INTERFSEL, in omap2430_runtime_resume()
522 musb->context.otg_interfsel); in omap2430_runtime_resume()
536 struct musb *musb = glue_to_musb(glue); in omap2430_suspend() local
538 phy_power_off(musb->phy); in omap2430_suspend()
539 phy_exit(musb->phy); in omap2430_suspend()
573 struct musb *musb = glue_to_musb(glue); in omap2430_resume() local
575 phy_init(musb->phy); in omap2430_resume()
576 phy_power_on(musb->phy); in omap2430_resume()