clk: hisilicon: add hisi_clk_unregister_* functions
authorJiancheng Xue <xuejiancheng@hisilicon.com>
Wed, 15 Jun 2016 06:26:37 +0000 (14:26 +0800)
committerStephen Boyd <sboyd@codeaurora.org>
Thu, 30 Jun 2016 19:35:18 +0000 (12:35 -0700)
Add hisi_clk_unregister_* functions.

Signed-off-by: Jiancheng Xue <xuejiancheng@hisilicon.com>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
drivers/clk/hisilicon/clk.h

index 2575329..4e1d1af 100644 (file)
@@ -128,4 +128,25 @@ void hisi_clk_register_gate_sep(const struct hisi_gate_clock *,
                                int, struct hisi_clock_data *);
 void hi6220_clk_register_divider(const struct hi6220_divider_clock *,
                                int, struct hisi_clock_data *);
+
+#define hisi_clk_unregister(type) \
+static inline \
+void hisi_clk_unregister_##type(const struct hisi_##type##_clock *clks, \
+                               int nums, struct hisi_clock_data *data) \
+{ \
+       struct clk **clocks = data->clk_data.clks; \
+       int i; \
+       for (i = 0; i < nums; i++) { \
+               int id = clks[i].id; \
+               if (clocks[id])  \
+                       clk_unregister_##type(clocks[id]); \
+       } \
+}
+
+hisi_clk_unregister(fixed_rate)
+hisi_clk_unregister(fixed_factor)
+hisi_clk_unregister(mux)
+hisi_clk_unregister(divider)
+hisi_clk_unregister(gate)
+
 #endif /* __HISI_CLK_H */