return 0;
 }
 
-static int ov5645_set_power_off(struct device *dev)
+static void __ov5645_set_power_off(struct device *dev)
 {
        struct v4l2_subdev *sd = dev_get_drvdata(dev);
        struct ov5645 *ov5645 = to_ov5645(sd);
        ov5645_write_reg(ov5645, OV5645_IO_MIPI_CTRL00, 0x58);
        gpiod_set_value_cansleep(ov5645->rst_gpio, 1);
        gpiod_set_value_cansleep(ov5645->enable_gpio, 0);
-       clk_disable_unprepare(ov5645->xclk);
        regulator_bulk_disable(OV5645_NUM_SUPPLIES, ov5645->supplies);
+}
+
+static int ov5645_set_power_off(struct device *dev)
+{
+       struct v4l2_subdev *sd = dev_get_drvdata(dev);
+       struct ov5645 *ov5645 = to_ov5645(sd);
+
+       __ov5645_set_power_off(dev);
+       clk_disable_unprepare(ov5645->xclk);
 
        return 0;
 }
        return 0;
 
 exit:
-       ov5645_set_power_off(dev);
+       __ov5645_set_power_off(dev);
+       clk_disable_unprepare(ov5645->xclk);
        return ret;
 }