Lines Matching +full:jz4770 +full:- +full:phy

1 // SPDX-License-Identifier: GPL-2.0+
9 #include <linux/dma-mapping.h>
33 if (IS_ENABLED(CONFIG_USB_INVENTRA_DMA) && musb->dma_controller) in jz4740_musb_interrupt()
34 retval_dma = dma_controller_irq(irq, musb->dma_controller); in jz4740_musb_interrupt()
36 spin_lock_irqsave(&musb->lock, flags); in jz4740_musb_interrupt()
38 musb->int_usb = musb_readb(musb->mregs, MUSB_INTRUSB); in jz4740_musb_interrupt()
39 musb->int_tx = musb_readw(musb->mregs, MUSB_INTRTX); in jz4740_musb_interrupt()
40 musb->int_rx = musb_readw(musb->mregs, MUSB_INTRRX); in jz4740_musb_interrupt()
47 musb->int_usb &= MUSB_INTR_SUSPEND | MUSB_INTR_RESUME | in jz4740_musb_interrupt()
50 if (musb->int_usb || musb->int_tx || musb->int_rx) in jz4740_musb_interrupt()
53 spin_unlock_irqrestore(&musb->lock, flags); in jz4740_musb_interrupt()
82 struct usb_phy *phy = glue->musb->xceiv; in jz4740_musb_role_switch_set() local
86 atomic_notifier_call_chain(&phy->notifier, USB_EVENT_NONE, phy); in jz4740_musb_role_switch_set()
89 atomic_notifier_call_chain(&phy->notifier, USB_EVENT_VBUS, phy); in jz4740_musb_role_switch_set()
92 atomic_notifier_call_chain(&phy->notifier, USB_EVENT_ID, phy); in jz4740_musb_role_switch_set()
101 struct device *dev = musb->controller->parent; in jz4740_musb_init()
109 glue->musb = musb; in jz4740_musb_init()
111 if (dev->of_node) in jz4740_musb_init()
112 musb->xceiv = devm_usb_get_phy_by_phandle(dev, "phys", 0); in jz4740_musb_init()
114 musb->xceiv = devm_usb_get_phy(dev, USB_PHY_TYPE_USB2); in jz4740_musb_init()
115 if (IS_ERR(musb->xceiv)) in jz4740_musb_init()
116 return dev_err_probe(dev, PTR_ERR(musb->xceiv), in jz4740_musb_init()
119 glue->role_sw = usb_role_switch_register(dev, &role_sw_desc); in jz4740_musb_init()
120 if (IS_ERR(glue->role_sw)) { in jz4740_musb_init()
122 return PTR_ERR(glue->role_sw); in jz4740_musb_init()
129 musb->dyn_fifo = true; in jz4740_musb_init()
131 musb->isr = jz4740_musb_interrupt; in jz4740_musb_init()
138 struct jz4740_glue *glue = dev_get_drvdata(musb->controller->parent); in jz4740_musb_exit()
140 usb_role_switch_unregister(glue->role_sw); in jz4740_musb_exit()
191 struct device *dev = &pdev->dev; in jz4740_probe()
200 return -ENOMEM; in jz4740_probe()
205 return -EINVAL; in jz4740_probe()
208 musb = platform_device_alloc("musb-hdrc", PLATFORM_DEVID_AUTO); in jz4740_probe()
211 return -ENOMEM; in jz4740_probe()
227 musb->dev.parent = dev; in jz4740_probe()
228 musb->dev.dma_mask = &musb->dev.coherent_dma_mask; in jz4740_probe()
229 musb->dev.coherent_dma_mask = DMA_BIT_MASK(32); in jz4740_probe()
230 device_set_of_node_from_dev(&musb->dev, dev); in jz4740_probe()
232 glue->pdev = musb; in jz4740_probe()
233 glue->clk = clk; in jz4740_probe()
237 ret = platform_device_add_resources(musb, pdev->resource, in jz4740_probe()
238 pdev->num_resources); in jz4740_probe()
269 platform_device_unregister(glue->pdev); in jz4740_remove()
270 clk_disable_unprepare(glue->clk); in jz4740_remove()
276 { .compatible = "ingenic,jz4740-musb", .data = &jz4740_musb_pdata },
277 { .compatible = "ingenic,jz4770-musb", .data = &jz4770_musb_pdata },
286 .name = "musb-jz4740",