Lines Matching refs:musb

31 	struct platform_device	*musb;  member
34 #define glue_to_musb(g) platform_get_drvdata(g->musb)
76 struct musb *musb = hw_ep->musb; in bfin_write_fifo() local
85 dev_dbg(musb->controller, "TX ep%d fifo %p count %d buf %p, epio %p\n", in bfin_write_fifo()
140 struct musb *musb = hw_ep->musb; in bfin_read_fifo() local
197 dev_dbg(musb->controller, "%cX ep%d fifo %p count %d buf %p\n", in bfin_read_fifo()
207 struct musb *musb = __hci; in blackfin_interrupt() local
209 spin_lock_irqsave(&musb->lock, flags); in blackfin_interrupt()
211 musb->int_usb = musb_readb(musb->mregs, MUSB_INTRUSB); in blackfin_interrupt()
212 musb->int_tx = musb_readw(musb->mregs, MUSB_INTRTX); in blackfin_interrupt()
213 musb->int_rx = musb_readw(musb->mregs, MUSB_INTRRX); in blackfin_interrupt()
215 if (musb->int_usb || musb->int_tx || musb->int_rx) { in blackfin_interrupt()
216 musb_writeb(musb->mregs, MUSB_INTRUSB, musb->int_usb); in blackfin_interrupt()
217 musb_writew(musb->mregs, MUSB_INTRTX, musb->int_tx); in blackfin_interrupt()
218 musb_writew(musb->mregs, MUSB_INTRRX, musb->int_rx); in blackfin_interrupt()
219 retval = musb_interrupt(musb); in blackfin_interrupt()
223 if ((musb->xceiv->otg->state == OTG_STATE_B_IDLE in blackfin_interrupt()
224 || musb->xceiv->otg->state == OTG_STATE_A_WAIT_BCON) || in blackfin_interrupt()
225 (musb->int_usb & MUSB_INTR_DISCONNECT && is_host_active(musb))) { in blackfin_interrupt()
227 musb->a_wait_bcon = TIMER_DELAY; in blackfin_interrupt()
230 spin_unlock_irqrestore(&musb->lock, flags); in blackfin_interrupt()
237 struct musb *musb = (void *)_musb; in musb_conn_timer_handler() local
242 spin_lock_irqsave(&musb->lock, flags); in musb_conn_timer_handler()
243 switch (musb->xceiv->otg->state) { in musb_conn_timer_handler()
247 val = musb_readw(musb->mregs, MUSB_DEVCTL); in musb_conn_timer_handler()
249 musb_writew(musb->mregs, MUSB_DEVCTL, val); in musb_conn_timer_handler()
251 musb_writew(musb->mregs, MUSB_DEVCTL, val); in musb_conn_timer_handler()
253 val = musb_readw(musb->mregs, MUSB_DEVCTL); in musb_conn_timer_handler()
256 gpio_set_value(musb->config->gpio_vrsel, 1); in musb_conn_timer_handler()
257 musb->xceiv->otg->state = OTG_STATE_A_WAIT_BCON; in musb_conn_timer_handler()
259 gpio_set_value(musb->config->gpio_vrsel, 0); in musb_conn_timer_handler()
261 val = musb_readb(musb->mregs, MUSB_INTRUSBE); in musb_conn_timer_handler()
263 musb_writeb(musb->mregs, MUSB_INTRUSBE, val); in musb_conn_timer_handler()
266 musb_writeb(musb->mregs, MUSB_INTRUSB, val); in musb_conn_timer_handler()
267 musb->xceiv->otg->state = OTG_STATE_B_IDLE; in musb_conn_timer_handler()
276 val = musb_readw(musb->mregs, MUSB_DEVCTL); in musb_conn_timer_handler()
278 musb_writew(musb->mregs, MUSB_DEVCTL, val); in musb_conn_timer_handler()
279 val = musb_readw(musb->mregs, MUSB_DEVCTL); in musb_conn_timer_handler()
282 gpio_set_value(musb->config->gpio_vrsel, 1); in musb_conn_timer_handler()
283 musb->xceiv->otg->state = OTG_STATE_A_WAIT_BCON; in musb_conn_timer_handler()
285 gpio_set_value(musb->config->gpio_vrsel, 0); in musb_conn_timer_handler()
288 val = musb_readb(musb->mregs, MUSB_INTRUSBE); in musb_conn_timer_handler()
290 musb_writeb(musb->mregs, MUSB_INTRUSBE, val); in musb_conn_timer_handler()
293 musb_writeb(musb->mregs, MUSB_INTRUSB, val); in musb_conn_timer_handler()
299 val = musb_readb(musb->mregs, MUSB_POWER); in musb_conn_timer_handler()
301 musb_writeb(musb->mregs, MUSB_POWER, val); in musb_conn_timer_handler()
304 val = musb_readb(musb->mregs, MUSB_POWER); in musb_conn_timer_handler()
306 musb_writeb(musb->mregs, MUSB_POWER, val); in musb_conn_timer_handler()
317 dev_dbg(musb->controller, "%s state not handled\n", in musb_conn_timer_handler()
318 usb_otg_state_string(musb->xceiv->otg->state)); in musb_conn_timer_handler()
321 spin_unlock_irqrestore(&musb->lock, flags); in musb_conn_timer_handler()
323 dev_dbg(musb->controller, "state is %s\n", in musb_conn_timer_handler()
324 usb_otg_state_string(musb->xceiv->otg->state)); in musb_conn_timer_handler()
327 static void bfin_musb_enable(struct musb *musb) in bfin_musb_enable() argument
332 static void bfin_musb_disable(struct musb *musb) in bfin_musb_disable() argument
336 static void bfin_musb_set_vbus(struct musb *musb, int is_on) in bfin_musb_set_vbus() argument
338 int value = musb->config->gpio_vrsel_active; in bfin_musb_set_vbus()
341 gpio_set_value(musb->config->gpio_vrsel, value); in bfin_musb_set_vbus()
343 dev_dbg(musb->controller, "VBUS %s, devctl %02x " in bfin_musb_set_vbus()
345 usb_otg_state_string(musb->xceiv->otg->state), in bfin_musb_set_vbus()
346 musb_readb(musb->mregs, MUSB_DEVCTL)); in bfin_musb_set_vbus()
354 static int bfin_musb_vbus_status(struct musb *musb) in bfin_musb_vbus_status() argument
359 static int bfin_musb_set_mode(struct musb *musb, u8 musb_mode) in bfin_musb_set_mode() argument
385 static void bfin_musb_reg_init(struct musb *musb) in bfin_musb_reg_init() argument
399 ((480/musb->config->clkin) << 1)); in bfin_musb_reg_init()
423 static int bfin_musb_init(struct musb *musb) in bfin_musb_init() argument
433 if (gpio_request(musb->config->gpio_vrsel, "USB_VRSEL")) { in bfin_musb_init()
435 musb->config->gpio_vrsel); in bfin_musb_init()
438 gpio_direction_output(musb->config->gpio_vrsel, 0); in bfin_musb_init()
440 musb->xceiv = usb_get_phy(USB_PHY_TYPE_USB2); in bfin_musb_init()
441 if (IS_ERR_OR_NULL(musb->xceiv)) { in bfin_musb_init()
442 gpio_free(musb->config->gpio_vrsel); in bfin_musb_init()
446 bfin_musb_reg_init(musb); in bfin_musb_init()
449 (unsigned long) musb); in bfin_musb_init()
451 musb->xceiv->set_power = bfin_musb_set_power; in bfin_musb_init()
453 musb->isr = blackfin_interrupt; in bfin_musb_init()
454 musb->double_buffer_not_ok = true; in bfin_musb_init()
459 static int bfin_musb_exit(struct musb *musb) in bfin_musb_exit() argument
461 gpio_free(musb->config->gpio_vrsel); in bfin_musb_exit()
462 usb_put_phy(musb->xceiv); in bfin_musb_exit()
502 struct platform_device *musb; in bfin_probe() local
511 musb = platform_device_alloc("musb-hdrc", PLATFORM_DEVID_AUTO); in bfin_probe()
512 if (!musb) in bfin_probe()
515 musb->dev.parent = &pdev->dev; in bfin_probe()
516 musb->dev.dma_mask = &bfin_dmamask; in bfin_probe()
517 musb->dev.coherent_dma_mask = bfin_dmamask; in bfin_probe()
520 glue->musb = musb; in bfin_probe()
542 ret = platform_device_add_resources(musb, musb_resources, in bfin_probe()
549 ret = platform_device_add_data(musb, pdata, sizeof(*pdata)); in bfin_probe()
555 ret = platform_device_add(musb); in bfin_probe()
567 platform_device_put(musb); in bfin_probe()
577 platform_device_unregister(glue->musb); in bfin_remove()
587 struct musb *musb = glue_to_musb(glue); in bfin_suspend() local
589 if (is_host_active(musb)) in bfin_suspend()
596 gpio_set_value(musb->config->gpio_vrsel, 0); in bfin_suspend()
604 struct musb *musb = glue_to_musb(glue); in bfin_resume() local
606 bfin_musb_reg_init(musb); in bfin_resume()