summaryrefslogtreecommitdiffstats
path: root/drivers/clk/samsung/clk-exynos5-subcmu.h
diff options
context:
space:
mode:
authorMarek Szyprowski2018-03-06 15:33:08 +0100
committerSylwester Nawrocki2018-03-06 17:38:46 +0100
commitb06a532bf1fa99af0d9364e5dfb8654fa78d490b (patch)
tree3576eb91b9e2a042095c82dbc34e134e7e95aa1c /drivers/clk/samsung/clk-exynos5-subcmu.h
parentMerge branch 'for-v4.17/power_domains' into for-v4.17/next (diff)
downloadkernel-qcow2-linux-b06a532bf1fa99af0d9364e5dfb8654fa78d490b.tar.gz
kernel-qcow2-linux-b06a532bf1fa99af0d9364e5dfb8654fa78d490b.tar.xz
kernel-qcow2-linux-b06a532bf1fa99af0d9364e5dfb8654fa78d490b.zip
clk: samsung: Add Exynos5 sub-CMU clock driver
Exynos5250/5420/5800 have only one clock controller, but some of their clock depends on respective power domains. Handling integration of clock controller and power domain can be done using runtime PM feature of CCF framework. This however needs a separate struct device for each power domain. This patch adds such separate driver for a group of such clocks, which can be instantiated more than once, each time for a different power domain. Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org> Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Diffstat (limited to 'drivers/clk/samsung/clk-exynos5-subcmu.h')
-rw-r--r--drivers/clk/samsung/clk-exynos5-subcmu.h26
1 files changed, 26 insertions, 0 deletions
diff --git a/drivers/clk/samsung/clk-exynos5-subcmu.h b/drivers/clk/samsung/clk-exynos5-subcmu.h
new file mode 100644
index 000000000000..755ee8aaa3de
--- /dev/null
+++ b/drivers/clk/samsung/clk-exynos5-subcmu.h
@@ -0,0 +1,26 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+
+#ifndef __CLK_EXYNOS5_SUBCMU_H
+#define __CLK_EXYNOS5_SUBCMU_H
+
+struct exynos5_subcmu_reg_dump {
+ u32 offset;
+ u32 value;
+ u32 mask;
+ u32 save;
+};
+
+struct exynos5_subcmu_info {
+ const struct samsung_div_clock *div_clks;
+ unsigned int nr_div_clks;
+ const struct samsung_gate_clock *gate_clks;
+ unsigned int nr_gate_clks;
+ struct exynos5_subcmu_reg_dump *suspend_regs;
+ unsigned int nr_suspend_regs;
+ const char *pd_name;
+};
+
+void exynos5_subcmus_init(struct samsung_clk_provider *ctx, int nr_cmus,
+ const struct exynos5_subcmu_info *cmu);
+
+#endif