if (!rev)
                return -ENODEV;
 
-       usb_phy_generic_register();
        musb->xceiv = usb_get_phy(USB_PHY_TYPE_USB2);
        if (IS_ERR_OR_NULL(musb->xceiv))
                return -EPROBE_DEFER;
                data->set_phy_power(0);
 
        usb_put_phy(musb->xceiv);
-       usb_phy_generic_unregister();
 
        return 0;
 }
 
        pdata->platform_ops             = &am35x_ops;
 
+       usb_phy_generic_register();
        platform_set_drvdata(pdev, glue);
 
        pinfo = am35x_dev_info;
        struct am35x_glue       *glue = platform_get_drvdata(pdev);
 
        platform_device_unregister(glue->musb);
+       usb_phy_generic_unregister();
        clk_disable(glue->clk);
        clk_disable(glue->phy_clk);
        clk_put(glue->clk);
 
        }
        gpio_direction_output(musb->config->gpio_vrsel, 0);
 
-       usb_phy_generic_register();
        musb->xceiv = usb_get_phy(USB_PHY_TYPE_USB2);
        if (IS_ERR_OR_NULL(musb->xceiv)) {
                gpio_free(musb->config->gpio_vrsel);
 static int bfin_musb_exit(struct musb *musb)
 {
        gpio_free(musb->config->gpio_vrsel);
-
        usb_put_phy(musb->xceiv);
-       usb_phy_generic_unregister();
+
        return 0;
 }
 
 
        pdata->platform_ops             = &bfin_ops;
 
+       usb_phy_generic_register();
        platform_set_drvdata(pdev, glue);
 
        memset(musb_resources, 0x00, sizeof(*musb_resources) *
        struct bfin_glue                *glue = platform_get_drvdata(pdev);
 
        platform_device_unregister(glue->musb);
+       usb_phy_generic_unregister();
        kfree(glue);
 
        return 0;
 
        if (!rev)
                goto fail;
 
-       usb_phy_generic_register();
        musb->xceiv = usb_get_phy(USB_PHY_TYPE_USB2);
        if (IS_ERR_OR_NULL(musb->xceiv)) {
                ret = -EPROBE_DEFER;
        phy_off();
 
        usb_put_phy(musb->xceiv);
-       usb_phy_generic_unregister();
 
        return 0;
 }
 
        pdata->platform_ops             = &da8xx_ops;
 
+       usb_phy_generic_register();
        platform_set_drvdata(pdev, glue);
 
        memset(musb_resources, 0x00, sizeof(*musb_resources) *
        struct da8xx_glue               *glue = platform_get_drvdata(pdev);
 
        platform_device_unregister(glue->musb);
+       usb_phy_generic_unregister();
        clk_disable(glue->clk);
        clk_put(glue->clk);
        kfree(glue);
 
        u32             revision;
        int             ret = -ENODEV;
 
-       usb_phy_generic_register();
        musb->xceiv = usb_get_phy(USB_PHY_TYPE_USB2);
        if (IS_ERR_OR_NULL(musb->xceiv)) {
                ret = -EPROBE_DEFER;
        phy_off();
 
        usb_put_phy(musb->xceiv);
-       usb_phy_generic_unregister();
 
        return 0;
 }
 
        pdata->platform_ops             = &davinci_ops;
 
+       usb_phy_generic_register();
        platform_set_drvdata(pdev, glue);
 
        memset(musb_resources, 0x00, sizeof(*musb_resources) *
        struct davinci_glue             *glue = platform_get_drvdata(pdev);
 
        platform_device_unregister(glue->musb);
+       usb_phy_generic_unregister();
        clk_disable(glue->clk);
        clk_put(glue->clk);
        kfree(glue);
 
        void __iomem            *sync = NULL;
        int                     ret;
 
-       usb_phy_generic_register();
        musb->xceiv = usb_get_phy(USB_PHY_TYPE_USB2);
        if (IS_ERR_OR_NULL(musb->xceiv))
                return -EPROBE_DEFER;
                        iounmap(sync);
 
                usb_put_phy(musb->xceiv);
-               usb_phy_generic_unregister();
        }
        return ret;
 }
        iounmap(musb->sync_va);
 
        usb_put_phy(musb->xceiv);
-       usb_phy_generic_unregister();
        return 0;
 }
 
 
        pdata->platform_ops             = &tusb_ops;
 
+       usb_phy_generic_register();
        platform_set_drvdata(pdev, glue);
 
        memset(musb_resources, 0x00, sizeof(*musb_resources) *
        struct tusb6010_glue            *glue = platform_get_drvdata(pdev);
 
        platform_device_unregister(glue->musb);
+       usb_phy_generic_unregister();
        kfree(glue);
 
        return 0;