|
@@ -107,6 +107,28 @@ static inline void clk_unprepare(struct clk *clk)
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
+/* clk_prepare_enable helps cases using clk_enable in non-atomic context. */
|
|
|
+static inline int clk_prepare_enable(struct clk *clk)
|
|
|
+{
|
|
|
+ int ret;
|
|
|
+
|
|
|
+ ret = clk_prepare(clk);
|
|
|
+ if (ret)
|
|
|
+ return ret;
|
|
|
+ ret = clk_enable(clk);
|
|
|
+ if (ret)
|
|
|
+ clk_unprepare(clk);
|
|
|
+
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+
|
|
|
+/* clk_disable_unprepare helps cases using clk_disable in non-atomic context. */
|
|
|
+static inline void clk_disable_unprepare(struct clk *clk)
|
|
|
+{
|
|
|
+ clk_disable(clk);
|
|
|
+ clk_unprepare(clk);
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* clk_get_rate - obtain the current clock rate (in Hz) for a clock source.
|
|
|
* This is only valid once the clock source has been enabled.
|