Lines Matching full:glue
3 * Texas Instruments DSPS platforms "glue layer"
7 * Based on the am35x "glue layer" code.
100 * DSPS glue structure.
134 static void dsps_mod_timer(struct dsps_glue *glue, int wait_ms) in dsps_mod_timer() argument
136 struct musb *musb = platform_get_drvdata(glue->musb); in dsps_mod_timer()
140 wait = msecs_to_jiffies(glue->wrp->poll_timeout); in dsps_mod_timer()
150 static void dsps_mod_timer_optional(struct dsps_glue *glue) in dsps_mod_timer_optional() argument
152 if (glue->vbus_irq) in dsps_mod_timer_optional()
155 dsps_mod_timer(glue, -1); in dsps_mod_timer_optional()
172 struct dsps_glue *glue = platform_get_drvdata(pdev); in dsps_musb_enable() local
173 const struct dsps_musb_wrapper *wrp = glue->wrp; in dsps_musb_enable()
189 dsps_mod_timer(glue, -1); in dsps_musb_enable()
199 struct dsps_glue *glue = platform_get_drvdata(pdev); in dsps_musb_disable() local
200 const struct dsps_musb_wrapper *wrp = glue->wrp; in dsps_musb_disable()
214 struct dsps_glue *glue = dev_get_drvdata(dev->parent); in dsps_check_status() local
215 const struct dsps_musb_wrapper *wrp = glue->wrp; in dsps_check_status()
219 if (glue->vbus_irq) in dsps_check_status()
234 dsps_mod_timer_optional(glue); in dsps_check_status()
242 dsps_mod_timer_optional(glue); in dsps_check_status()
251 if (!glue->vbus_irq) { in dsps_check_status()
267 dsps_mod_timer_optional(glue); in dsps_check_status()
308 struct dsps_glue *glue = dev_get_drvdata(musb->controller->parent); in dsps_musb_clear_ep_rxintr() local
309 const struct dsps_musb_wrapper *wrp = glue->wrp; in dsps_musb_clear_ep_rxintr()
321 struct dsps_glue *glue = dev_get_drvdata(dev->parent); in dsps_interrupt() local
322 const struct dsps_musb_wrapper *wrp = glue->wrp; in dsps_interrupt()
370 dsps_mod_timer_optional(glue); in dsps_interrupt()
375 dsps_mod_timer_optional(glue); in dsps_interrupt()
398 dsps_mod_timer_optional(glue); in dsps_interrupt()
410 static int dsps_musb_dbg_init(struct musb *musb, struct dsps_glue *glue) in dsps_musb_dbg_init() argument
417 glue->dbgfs_root = root; in dsps_musb_dbg_init()
419 glue->regset.regs = dsps_musb_regs; in dsps_musb_dbg_init()
420 glue->regset.nregs = ARRAY_SIZE(dsps_musb_regs); in dsps_musb_dbg_init()
421 glue->regset.base = musb->ctrl_base; in dsps_musb_dbg_init()
423 debugfs_create_regset32("regdump", S_IRUGO, root, &glue->regset); in dsps_musb_dbg_init()
430 struct dsps_glue *glue = dev_get_drvdata(dev->parent); in dsps_musb_init() local
432 const struct dsps_musb_wrapper *wrp = glue->wrp; in dsps_musb_init()
489 glue->sw_babble_enabled = true; in dsps_musb_init()
494 dsps_mod_timer(glue, -1); in dsps_musb_init()
496 return dsps_musb_dbg_init(musb, glue); in dsps_musb_init()
502 struct dsps_glue *glue = dev_get_drvdata(dev->parent); in dsps_musb_exit() local
507 debugfs_remove_recursive(glue->dbgfs_root); in dsps_musb_exit()
515 struct dsps_glue *glue = dev_get_drvdata(dev->parent); in dsps_musb_set_mode() local
516 const struct dsps_musb_wrapper *wrp = glue->wrp; in dsps_musb_set_mode()
552 dev_err(glue->dev, "unsupported mode %d\n", mode); in dsps_musb_set_mode()
613 struct dsps_glue *glue = dev_get_drvdata(dev->parent); in dsps_musb_recover() local
616 if (glue->sw_babble_enabled) in dsps_musb_recover()
646 struct dsps_glue *glue = dev_get_drvdata(musb->controller->parent); in dsps_dma_controller_callback() local
647 void __iomem *usbss_base = glue->usbss_base; in dsps_dma_controller_callback()
659 struct dsps_glue *glue = dev_get_drvdata(musb->controller->parent); in dsps_dma_controller_create() local
660 void __iomem *usbss_base = glue->usbss_base; in dsps_dma_controller_create()
673 static void dsps_dma_controller_suspend(struct dsps_glue *glue) in dsps_dma_controller_suspend() argument
675 void __iomem *usbss_base = glue->usbss_base; in dsps_dma_controller_suspend()
680 static void dsps_dma_controller_resume(struct dsps_glue *glue) in dsps_dma_controller_resume() argument
682 void __iomem *usbss_base = glue->usbss_base; in dsps_dma_controller_resume()
689 static void dsps_dma_controller_suspend(struct dsps_glue *glue) {} in dsps_dma_controller_suspend() argument
690 static void dsps_dma_controller_resume(struct dsps_glue *glue) {} in dsps_dma_controller_resume() argument
724 static int dsps_create_musb_pdev(struct dsps_glue *glue, in dsps_create_musb_pdev() argument
764 glue->musb = musb; in dsps_create_musb_pdev()
825 struct dsps_glue *glue = priv; in dsps_vbus_threaded_irq() local
826 struct musb *musb = platform_get_drvdata(glue->musb); in dsps_vbus_threaded_irq()
831 dev_dbg(glue->dev, "VBUS interrupt\n"); in dsps_vbus_threaded_irq()
832 dsps_mod_timer(glue, 0); in dsps_vbus_threaded_irq()
838 struct dsps_glue *glue) in dsps_setup_optional_vbus_irq() argument
842 glue->vbus_irq = platform_get_irq_byname(pdev, "vbus"); in dsps_setup_optional_vbus_irq()
843 if (glue->vbus_irq == -EPROBE_DEFER) in dsps_setup_optional_vbus_irq()
846 if (glue->vbus_irq <= 0) { in dsps_setup_optional_vbus_irq()
847 glue->vbus_irq = 0; in dsps_setup_optional_vbus_irq()
851 error = devm_request_threaded_irq(glue->dev, glue->vbus_irq, in dsps_setup_optional_vbus_irq()
854 "vbus", glue); in dsps_setup_optional_vbus_irq()
856 glue->vbus_irq = 0; in dsps_setup_optional_vbus_irq()
859 dev_dbg(glue->dev, "VBUS irq %i configured\n", glue->vbus_irq); in dsps_setup_optional_vbus_irq()
868 struct dsps_glue *glue; in dsps_probe() local
884 /* allocate glue */ in dsps_probe()
885 glue = devm_kzalloc(&pdev->dev, sizeof(*glue), GFP_KERNEL); in dsps_probe()
886 if (!glue) in dsps_probe()
889 glue->dev = &pdev->dev; in dsps_probe()
890 glue->wrp = wrp; in dsps_probe()
891 glue->usbss_base = of_iomap(pdev->dev.parent->of_node, 0); in dsps_probe()
892 if (!glue->usbss_base) in dsps_probe()
896 ret = dsps_setup_optional_vbus_irq(pdev, glue); in dsps_probe()
901 platform_set_drvdata(pdev, glue); in dsps_probe()
903 ret = dsps_create_musb_pdev(glue, pdev); in dsps_probe()
912 iounmap(glue->usbss_base); in dsps_probe()
918 struct dsps_glue *glue = platform_get_drvdata(pdev); in dsps_remove() local
920 platform_device_unregister(glue->musb); in dsps_remove()
923 iounmap(glue->usbss_base); in dsps_remove()
971 struct dsps_glue *glue = dev_get_drvdata(dev); in dsps_suspend() local
972 const struct dsps_musb_wrapper *wrp = glue->wrp; in dsps_suspend()
973 struct musb *musb = platform_get_drvdata(glue->musb); in dsps_suspend()
990 glue->context.control = musb_readl(mbase, wrp->control); in dsps_suspend()
991 glue->context.epintr = musb_readl(mbase, wrp->epintr_set); in dsps_suspend()
992 glue->context.coreintr = musb_readl(mbase, wrp->coreintr_set); in dsps_suspend()
993 glue->context.phy_utmi = musb_readl(mbase, wrp->phy_utmi); in dsps_suspend()
994 glue->context.mode = musb_readl(mbase, wrp->mode); in dsps_suspend()
995 glue->context.tx_mode = musb_readl(mbase, wrp->tx_mode); in dsps_suspend()
996 glue->context.rx_mode = musb_readl(mbase, wrp->rx_mode); in dsps_suspend()
998 dsps_dma_controller_suspend(glue); in dsps_suspend()
1005 struct dsps_glue *glue = dev_get_drvdata(dev); in dsps_resume() local
1006 const struct dsps_musb_wrapper *wrp = glue->wrp; in dsps_resume()
1007 struct musb *musb = platform_get_drvdata(glue->musb); in dsps_resume()
1013 dsps_dma_controller_resume(glue); in dsps_resume()
1016 musb_writel(mbase, wrp->control, glue->context.control); in dsps_resume()
1017 musb_writel(mbase, wrp->epintr_set, glue->context.epintr); in dsps_resume()
1018 musb_writel(mbase, wrp->coreintr_set, glue->context.coreintr); in dsps_resume()
1019 musb_writel(mbase, wrp->phy_utmi, glue->context.phy_utmi); in dsps_resume()
1020 musb_writel(mbase, wrp->mode, glue->context.mode); in dsps_resume()
1021 musb_writel(mbase, wrp->tx_mode, glue->context.tx_mode); in dsps_resume()
1022 musb_writel(mbase, wrp->rx_mode, glue->context.rx_mode); in dsps_resume()
1025 dsps_mod_timer(glue, -1); in dsps_resume()
1045 MODULE_DESCRIPTION("TI DSPS MUSB Glue Layer");