usb_phy_set_suspend(dwc->usb3_phy, 1);
        phy_power_off(dwc->usb2_generic_phy);
        phy_power_off(dwc->usb3_generic_phy);
-       clk_bulk_disable(dwc->num_clks, dwc->clks);
-       clk_bulk_unprepare(dwc->num_clks, dwc->clks);
+       clk_bulk_disable_unprepare(dwc->num_clks, dwc->clks);
        reset_control_assert(dwc->reset);
 }
 
        if (ret)
                return ret;
 
-       ret = clk_bulk_prepare(dwc->num_clks, dwc->clks);
+       ret = clk_bulk_prepare_enable(dwc->num_clks, dwc->clks);
        if (ret)
                goto assert_reset;
 
-       ret = clk_bulk_enable(dwc->num_clks, dwc->clks);
-       if (ret)
-               goto unprepare_clks;
-
        if (!dwc3_core_is_valid(dwc)) {
                dev_err(dwc->dev, "this is not a DesignWare USB3 DRD Core\n");
                ret = -ENODEV;
        pm_runtime_disable(&pdev->dev);
 
 disable_clks:
-       clk_bulk_disable(dwc->num_clks, dwc->clks);
-unprepare_clks:
-       clk_bulk_unprepare(dwc->num_clks, dwc->clks);
+       clk_bulk_disable_unprepare(dwc->num_clks, dwc->clks);
 assert_reset:
        reset_control_assert(dwc->reset);
 
        if (ret)
                return ret;
 
-       ret = clk_bulk_prepare(dwc->num_clks, dwc->clks);
+       ret = clk_bulk_prepare_enable(dwc->num_clks, dwc->clks);
        if (ret)
                goto assert_reset;
 
-       ret = clk_bulk_enable(dwc->num_clks, dwc->clks);
-       if (ret)
-               goto unprepare_clks;
-
        ret = dwc3_core_init(dwc);
        if (ret)
                goto disable_clks;
        return 0;
 
 disable_clks:
-       clk_bulk_disable(dwc->num_clks, dwc->clks);
-unprepare_clks:
-       clk_bulk_unprepare(dwc->num_clks, dwc->clks);
+       clk_bulk_disable_unprepare(dwc->num_clks, dwc->clks);
 assert_reset:
        reset_control_assert(dwc->reset);