Lines Matching full:rockchip
2 * dwc3-rockchip-inno.c - Rockchip DWC3 Specific Glue layer with INNO PHY
3 * Copyright (C) Fuzhou Rockchip Electronics Co.Ltd
52 struct dwc3_rockchip *rockchip = in u3phy_disconnect_det_notifier() local
55 schedule_work(&rockchip->u3_work); in u3phy_disconnect_det_notifier()
62 struct dwc3_rockchip *rockchip = in u3phy_disconnect_det_work() local
64 struct usb_hcd *hcd = dev_get_drvdata(&rockchip->dwc->xhci->dev); in u3phy_disconnect_det_work()
67 mutex_lock(&rockchip->lock); in u3phy_disconnect_det_work()
70 dwc3_host_exit(rockchip->dwc); in u3phy_disconnect_det_work()
72 if (rockchip->phy) in u3phy_disconnect_det_work()
73 usb_phy_shutdown(rockchip->phy); in u3phy_disconnect_det_work()
77 dev_err(rockchip->dev, in u3phy_disconnect_det_work()
85 dwc3_host_init(rockchip->dwc); in u3phy_disconnect_det_work()
87 if (rockchip->phy) in u3phy_disconnect_det_work()
88 usb_phy_init(rockchip->phy); in u3phy_disconnect_det_work()
90 mutex_unlock(&rockchip->lock); in u3phy_disconnect_det_work()
95 struct dwc3_rockchip *rockchip; in dwc3_rockchip_probe() local
104 rockchip = devm_kzalloc(dev, sizeof(*rockchip), GFP_KERNEL); in dwc3_rockchip_probe()
105 if (!rockchip) in dwc3_rockchip_probe()
118 rockchip->num_clocks = count; in dwc3_rockchip_probe()
120 rockchip->clks = devm_kcalloc(dev, rockchip->num_clocks, in dwc3_rockchip_probe()
122 if (!rockchip->clks) in dwc3_rockchip_probe()
125 platform_set_drvdata(pdev, rockchip); in dwc3_rockchip_probe()
126 rockchip->dev = dev; in dwc3_rockchip_probe()
128 for (i = 0; i < rockchip->num_clocks; i++) { in dwc3_rockchip_probe()
143 rockchip->clks[i] = clk; in dwc3_rockchip_probe()
165 rockchip->dwc = platform_get_drvdata(child_pdev); in dwc3_rockchip_probe()
166 if (!rockchip->dwc || !rockchip->dwc->xhci) { in dwc3_rockchip_probe()
172 mutex_init(&rockchip->lock); in dwc3_rockchip_probe()
174 rockchip->phy = devm_usb_get_phy(dev, USB_PHY_TYPE_USB3); in dwc3_rockchip_probe()
175 if (rockchip->phy) { in dwc3_rockchip_probe()
176 INIT_WORK(&rockchip->u3_work, u3phy_disconnect_det_work); in dwc3_rockchip_probe()
177 rockchip->u3phy_nb.notifier_call = in dwc3_rockchip_probe()
179 usb_register_notifier(rockchip->phy, &rockchip->u3phy_nb); in dwc3_rockchip_probe()
190 for (i = 0; i < rockchip->num_clocks && rockchip->clks[i]; i++) { in dwc3_rockchip_probe()
192 clk_disable(rockchip->clks[i]); in dwc3_rockchip_probe()
193 clk_unprepare(rockchip->clks[i]); in dwc3_rockchip_probe()
194 clk_put(rockchip->clks[i]); in dwc3_rockchip_probe()
202 struct dwc3_rockchip *rockchip = platform_get_drvdata(pdev); in dwc3_rockchip_remove() local
211 for (i = 0; i < rockchip->num_clocks; i++) { in dwc3_rockchip_remove()
213 clk_disable(rockchip->clks[i]); in dwc3_rockchip_remove()
214 clk_unprepare(rockchip->clks[i]); in dwc3_rockchip_remove()
215 clk_put(rockchip->clks[i]); in dwc3_rockchip_remove()
224 struct dwc3_rockchip *rockchip = dev_get_drvdata(dev); in dwc3_rockchip_runtime_suspend() local
227 for (i = 0; i < rockchip->num_clocks; i++) in dwc3_rockchip_runtime_suspend()
228 clk_disable(rockchip->clks[i]); in dwc3_rockchip_runtime_suspend()
235 struct dwc3_rockchip *rockchip = dev_get_drvdata(dev); in dwc3_rockchip_runtime_resume() local
239 for (i = 0; i < rockchip->num_clocks; i++) { in dwc3_rockchip_runtime_resume()
240 ret = clk_enable(rockchip->clks[i]); in dwc3_rockchip_runtime_resume()
243 clk_disable(rockchip->clks[i]); in dwc3_rockchip_runtime_resume()
262 { .compatible = "rockchip,rk3328-dwc3" },
271 .name = "rockchip-inno-dwc3",
279 MODULE_ALIAS("platform:rockchip-inno-dwc3");
282 MODULE_DESCRIPTION("DesignWare USB3 rockchip-inno Glue Layer");