Lines Matching refs:glue

92 	struct sunxi_glue *glue = container_of(work, struct sunxi_glue, work);
95 if (!test_bit(SUNXI_MUSB_FL_ENABLED, &glue->flags))
98 if (test_and_clear_bit(SUNXI_MUSB_FL_HOSTMODE_PEND, &glue->flags)) {
99 struct musb *musb = glue->musb;
106 if (test_bit(SUNXI_MUSB_FL_HOSTMODE, &glue->flags)) {
107 set_bit(SUNXI_MUSB_FL_VBUS_ON, &glue->flags);
112 clear_bit(SUNXI_MUSB_FL_VBUS_ON, &glue->flags);
122 vbus_on = test_bit(SUNXI_MUSB_FL_VBUS_ON, &glue->flags);
123 phy_on = test_bit(SUNXI_MUSB_FL_PHY_ON, &glue->flags);
127 phy_power_on(glue->phy);
128 set_bit(SUNXI_MUSB_FL_PHY_ON, &glue->flags);
130 phy_power_off(glue->phy);
131 clear_bit(SUNXI_MUSB_FL_PHY_ON, &glue->flags);
135 if (test_and_clear_bit(SUNXI_MUSB_FL_PHY_MODE_PEND, &glue->flags))
136 phy_set_mode(glue->phy, glue->phy_mode);
141 struct sunxi_glue *glue = dev_get_drvdata(musb->controller->parent);
144 set_bit(SUNXI_MUSB_FL_VBUS_ON, &glue->flags);
147 clear_bit(SUNXI_MUSB_FL_VBUS_ON, &glue->flags);
150 schedule_work(&glue->work);
155 struct sunxi_glue *glue = dev_get_drvdata(musb->controller->parent);
157 sun4i_usb_phy_set_squelch_detect(glue->phy, false);
162 struct sunxi_glue *glue = dev_get_drvdata(musb->controller->parent);
164 sun4i_usb_phy_set_squelch_detect(glue->phy, true);
202 struct sunxi_glue *glue = container_of(nb, struct sunxi_glue, host_nb);
205 set_bit(SUNXI_MUSB_FL_HOSTMODE, &glue->flags);
207 clear_bit(SUNXI_MUSB_FL_HOSTMODE, &glue->flags);
209 set_bit(SUNXI_MUSB_FL_HOSTMODE_PEND, &glue->flags);
210 schedule_work(&glue->work);
217 struct sunxi_glue *glue = dev_get_drvdata(musb->controller->parent);
221 musb->phy = glue->phy;
222 musb->xceiv = glue->xceiv;
224 if (test_bit(SUNXI_MUSB_FL_HAS_SRAM, &glue->flags)) {
230 ret = clk_prepare_enable(glue->clk);
234 if (test_bit(SUNXI_MUSB_FL_HAS_RESET, &glue->flags)) {
235 ret = reset_control_deassert(glue->rst);
243 ret = devm_extcon_register_notifier(glue->dev, glue->extcon,
244 EXTCON_USB_HOST, &glue->host_nb);
248 ret = phy_init(glue->phy);
260 if (test_bit(SUNXI_MUSB_FL_HAS_RESET, &glue->flags))
261 reset_control_assert(glue->rst);
263 clk_disable_unprepare(glue->clk);
265 if (test_bit(SUNXI_MUSB_FL_HAS_SRAM, &glue->flags))
272 struct sunxi_glue *glue = dev_get_drvdata(musb->controller->parent);
276 cancel_work_sync(&glue->work);
277 if (test_bit(SUNXI_MUSB_FL_PHY_ON, &glue->flags))
278 phy_power_off(glue->phy);
280 phy_exit(glue->phy);
282 if (test_bit(SUNXI_MUSB_FL_HAS_RESET, &glue->flags))
283 reset_control_assert(glue->rst);
285 clk_disable_unprepare(glue->clk);
286 if (test_bit(SUNXI_MUSB_FL_HAS_SRAM, &glue->flags))
289 devm_usb_put_phy(glue->dev, glue->xceiv);
296 struct sunxi_glue *glue = dev_get_drvdata(musb->controller->parent);
298 glue->musb = musb;
301 if (test_and_set_bit(SUNXI_MUSB_FL_ENABLED, &glue->flags))
304 schedule_work(&glue->work);
309 struct sunxi_glue *glue = dev_get_drvdata(musb->controller->parent);
311 clear_bit(SUNXI_MUSB_FL_ENABLED, &glue->flags);
326 struct sunxi_glue *glue = dev_get_drvdata(musb->controller->parent);
345 if (glue->phy_mode == new_mode)
361 glue->phy_mode = new_mode;
362 set_bit(SUNXI_MUSB_FL_PHY_MODE_PEND, &glue->flags);
363 schedule_work(&glue->work);
370 struct sunxi_glue *glue = dev_get_drvdata(musb->controller->parent);
373 * Schedule a phy_set_mode with the current glue->phy_mode value,
376 set_bit(SUNXI_MUSB_FL_PHY_MODE_PEND, &glue->flags);
377 schedule_work(&glue->work);
412 struct sunxi_glue *glue;
436 glue = dev_get_drvdata(sunxi_musb->controller->parent);
439 &glue->flags))
670 struct sunxi_glue *glue;
679 glue = devm_kzalloc(&pdev->dev, sizeof(*glue), GFP_KERNEL);
680 if (!glue)
688 glue->phy_mode = PHY_MODE_USB_HOST;
694 glue->phy_mode = PHY_MODE_USB_DEVICE;
700 glue->phy_mode = PHY_MODE_USB_OTG;
713 glue->dev = &pdev->dev;
714 INIT_WORK(&glue->work, sunxi_musb_work);
715 glue->host_nb.notifier_call = sunxi_musb_host_notifier;
718 set_bit(SUNXI_MUSB_FL_HAS_SRAM, &glue->flags);
721 set_bit(SUNXI_MUSB_FL_HAS_RESET, &glue->flags);
725 set_bit(SUNXI_MUSB_FL_HAS_RESET, &glue->flags);
726 set_bit(SUNXI_MUSB_FL_NO_CONFIGDATA, &glue->flags);
729 glue->clk = devm_clk_get(&pdev->dev, NULL);
730 if (IS_ERR(glue->clk)) {
732 PTR_ERR(glue->clk));
733 return PTR_ERR(glue->clk);
736 if (test_bit(SUNXI_MUSB_FL_HAS_RESET, &glue->flags)) {
737 glue->rst = devm_reset_control_get(&pdev->dev, NULL);
738 if (IS_ERR(glue->rst)) {
739 if (PTR_ERR(glue->rst) == -EPROBE_DEFER)
742 PTR_ERR(glue->rst));
743 return PTR_ERR(glue->rst);
747 glue->extcon = extcon_get_edev_by_phandle(&pdev->dev, 0);
748 if (IS_ERR(glue->extcon)) {
749 if (PTR_ERR(glue->extcon) == -EPROBE_DEFER)
752 return PTR_ERR(glue->extcon);
755 glue->phy = devm_phy_get(&pdev->dev, "usb");
756 if (IS_ERR(glue->phy)) {
757 if (PTR_ERR(glue->phy) == -EPROBE_DEFER)
760 PTR_ERR(glue->phy));
761 return PTR_ERR(glue->phy);
764 glue->usb_phy = usb_phy_generic_register();
765 if (IS_ERR(glue->usb_phy)) {
767 PTR_ERR(glue->usb_phy));
768 return PTR_ERR(glue->usb_phy);
771 glue->xceiv = devm_usb_get_phy(&pdev->dev, USB_PHY_TYPE_USB2);
772 if (IS_ERR(glue->xceiv)) {
773 ret = PTR_ERR(glue->xceiv);
778 platform_set_drvdata(pdev, glue);
791 glue->musb_pdev = platform_device_register_full(&pinfo);
792 if (IS_ERR(glue->musb_pdev)) {
793 ret = PTR_ERR(glue->musb_pdev);
801 usb_phy_generic_unregister(glue->usb_phy);
807 struct sunxi_glue *glue = platform_get_drvdata(pdev);
808 struct platform_device *usb_phy = glue->usb_phy;
810 platform_device_unregister(glue->musb_pdev);