Lines Matching refs:glue
99 struct sunxi_glue *glue = container_of(work, struct sunxi_glue, work);
102 if (!test_bit(SUNXI_MUSB_FL_ENABLED, &glue->flags))
105 if (test_and_clear_bit(SUNXI_MUSB_FL_HOSTMODE_PEND, &glue->flags)) {
106 struct musb *musb = glue->musb;
113 if (test_bit(SUNXI_MUSB_FL_HOSTMODE, &glue->flags)) {
114 set_bit(SUNXI_MUSB_FL_VBUS_ON, &glue->flags);
119 clear_bit(SUNXI_MUSB_FL_VBUS_ON, &glue->flags);
129 vbus_on = test_bit(SUNXI_MUSB_FL_VBUS_ON, &glue->flags);
130 phy_on = test_bit(SUNXI_MUSB_FL_PHY_ON, &glue->flags);
134 phy_power_on(glue->phy);
135 set_bit(SUNXI_MUSB_FL_PHY_ON, &glue->flags);
137 phy_power_off(glue->phy);
138 clear_bit(SUNXI_MUSB_FL_PHY_ON, &glue->flags);
142 if (test_and_clear_bit(SUNXI_MUSB_FL_PHY_MODE_PEND, &glue->flags))
143 phy_set_mode(glue->phy, glue->phy_mode);
148 struct sunxi_glue *glue = dev_get_drvdata(musb->controller->parent);
151 set_bit(SUNXI_MUSB_FL_VBUS_ON, &glue->flags);
154 clear_bit(SUNXI_MUSB_FL_VBUS_ON, &glue->flags);
157 schedule_work(&glue->work);
162 struct sunxi_glue *glue = dev_get_drvdata(musb->controller->parent);
164 sun4i_usb_phy_set_squelch_detect(glue->phy, false);
169 struct sunxi_glue *glue = dev_get_drvdata(musb->controller->parent);
171 sun4i_usb_phy_set_squelch_detect(glue->phy, true);
209 struct sunxi_glue *glue = container_of(nb, struct sunxi_glue, host_nb);
212 set_bit(SUNXI_MUSB_FL_HOSTMODE, &glue->flags);
214 clear_bit(SUNXI_MUSB_FL_HOSTMODE, &glue->flags);
216 set_bit(SUNXI_MUSB_FL_HOSTMODE_PEND, &glue->flags);
217 schedule_work(&glue->work);
224 struct sunxi_glue *glue = dev_get_drvdata(musb->controller->parent);
228 musb->phy = glue->phy;
229 musb->xceiv = glue->xceiv;
231 if (test_bit(SUNXI_MUSB_FL_HAS_SRAM, &glue->flags)) {
237 ret = clk_prepare_enable(glue->clk);
241 if (test_bit(SUNXI_MUSB_FL_HAS_RESET, &glue->flags)) {
242 ret = reset_control_deassert(glue->rst);
250 ret = devm_extcon_register_notifier(glue->dev, glue->extcon,
251 EXTCON_USB_HOST, &glue->host_nb);
255 ret = phy_init(glue->phy);
267 if (test_bit(SUNXI_MUSB_FL_HAS_RESET, &glue->flags))
268 reset_control_assert(glue->rst);
270 clk_disable_unprepare(glue->clk);
272 if (test_bit(SUNXI_MUSB_FL_HAS_SRAM, &glue->flags))
279 struct sunxi_glue *glue = dev_get_drvdata(musb->controller->parent);
283 cancel_work_sync(&glue->work);
284 if (test_bit(SUNXI_MUSB_FL_PHY_ON, &glue->flags))
285 phy_power_off(glue->phy);
287 phy_exit(glue->phy);
289 if (test_bit(SUNXI_MUSB_FL_HAS_RESET, &glue->flags))
290 reset_control_assert(glue->rst);
292 clk_disable_unprepare(glue->clk);
293 if (test_bit(SUNXI_MUSB_FL_HAS_SRAM, &glue->flags))
296 devm_usb_put_phy(glue->dev, glue->xceiv);
303 struct sunxi_glue *glue = dev_get_drvdata(musb->controller->parent);
305 glue->musb = musb;
308 if (test_and_set_bit(SUNXI_MUSB_FL_ENABLED, &glue->flags))
311 schedule_work(&glue->work);
316 struct sunxi_glue *glue = dev_get_drvdata(musb->controller->parent);
318 clear_bit(SUNXI_MUSB_FL_ENABLED, &glue->flags);
333 struct sunxi_glue *glue = dev_get_drvdata(musb->controller->parent);
352 if (glue->phy_mode == new_mode)
368 glue->phy_mode = new_mode;
369 set_bit(SUNXI_MUSB_FL_PHY_MODE_PEND, &glue->flags);
370 schedule_work(&glue->work);
377 struct sunxi_glue *glue = dev_get_drvdata(musb->controller->parent);
380 * Schedule a phy_set_mode with the current glue->phy_mode value,
383 set_bit(SUNXI_MUSB_FL_PHY_MODE_PEND, &glue->flags);
384 schedule_work(&glue->work);
419 struct sunxi_glue *glue;
443 glue = dev_get_drvdata(sunxi_musb->controller->parent);
446 &glue->flags))
683 struct sunxi_glue *glue;
693 glue = devm_kzalloc(&pdev->dev, sizeof(*glue), GFP_KERNEL);
694 if (!glue)
702 glue->phy_mode = PHY_MODE_USB_HOST;
708 glue->phy_mode = PHY_MODE_USB_DEVICE;
714 glue->phy_mode = PHY_MODE_USB_OTG;
729 glue->dev = &pdev->dev;
730 INIT_WORK(&glue->work, sunxi_musb_work);
731 glue->host_nb.notifier_call = sunxi_musb_host_notifier;
734 set_bit(SUNXI_MUSB_FL_HAS_SRAM, &glue->flags);
737 set_bit(SUNXI_MUSB_FL_HAS_RESET, &glue->flags);
740 set_bit(SUNXI_MUSB_FL_NO_CONFIGDATA, &glue->flags);
742 glue->clk = devm_clk_get(&pdev->dev, NULL);
743 if (IS_ERR(glue->clk)) {
745 PTR_ERR(glue->clk));
746 return PTR_ERR(glue->clk);
749 if (test_bit(SUNXI_MUSB_FL_HAS_RESET, &glue->flags)) {
750 glue->rst = devm_reset_control_get(&pdev->dev, NULL);
751 if (IS_ERR(glue->rst))
752 return dev_err_probe(&pdev->dev, PTR_ERR(glue->rst),
756 glue->extcon = extcon_get_edev_by_phandle(&pdev->dev, 0);
757 if (IS_ERR(glue->extcon))
758 return dev_err_probe(&pdev->dev, PTR_ERR(glue->extcon),
761 glue->phy = devm_phy_get(&pdev->dev, "usb");
762 if (IS_ERR(glue->phy))
763 return dev_err_probe(&pdev->dev, PTR_ERR(glue->phy),
766 glue->usb_phy = usb_phy_generic_register();
767 if (IS_ERR(glue->usb_phy)) {
769 PTR_ERR(glue->usb_phy));
770 return PTR_ERR(glue->usb_phy);
773 glue->xceiv = devm_usb_get_phy(&pdev->dev, USB_PHY_TYPE_USB2);
774 if (IS_ERR(glue->xceiv)) {
775 ret = PTR_ERR(glue->xceiv);
780 platform_set_drvdata(pdev, glue);
793 glue->musb_pdev = platform_device_register_full(&pinfo);
794 if (IS_ERR(glue->musb_pdev)) {
795 ret = PTR_ERR(glue->musb_pdev);
803 usb_phy_generic_unregister(glue->usb_phy);
809 struct sunxi_glue *glue = platform_get_drvdata(pdev);
810 struct platform_device *usb_phy = glue->usb_phy;
812 platform_device_unregister(glue->musb_pdev);