summaryrefslogtreecommitdiff
path: root/drivers/clk/samsung/clk.c
diff options
context:
space:
mode:
authorTomasz Figa <t.figa@samsung.com>2013-04-04 04:35:35 (GMT)
committerKukjin Kim <kgene.kim@samsung.com>2013-04-04 06:51:22 (GMT)
commit6b5756e8bd19f8f1f23386d41997d0309e7a82a6 (patch)
treedb0b29a9071e7f079079ace3b2fa358c757374da /drivers/clk/samsung/clk.c
parentfb948f74ce05c5540f9ad7e92242e1c931f7c2f6 (diff)
downloadlinux-fsl-qoriq-6b5756e8bd19f8f1f23386d41997d0309e7a82a6.tar.xz
clk: exynos4: Add support for SoC-specific register save list
This patch extends suspend/resume support for SoC-specific registers to handle differences in register sets on particular SoCs. Signed-off-by: Tomasz Figa <t.figa@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Reviewed-by: Thomas Abraham <thomas.abraham@linaro.org> Acked-by: Mike Turquette <mturquette@linaro.org> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
Diffstat (limited to 'drivers/clk/samsung/clk.c')
-rw-r--r--drivers/clk/samsung/clk.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/clk/samsung/clk.c b/drivers/clk/samsung/clk.c
index 82f27f6..3a50d4f 100644
--- a/drivers/clk/samsung/clk.c
+++ b/drivers/clk/samsung/clk.c
@@ -54,7 +54,8 @@ static struct syscore_ops samsung_clk_syscore_ops = {
/* setup the essentials required to support clock lookup using ccf */
void __init samsung_clk_init(struct device_node *np, void __iomem *base,
unsigned long nr_clks, unsigned long *rdump,
- unsigned long nr_rdump)
+ unsigned long nr_rdump, unsigned long *soc_rdump,
+ unsigned long nr_soc_rdump)
{
reg_base = base;
@@ -62,7 +63,7 @@ void __init samsung_clk_init(struct device_node *np, void __iomem *base,
if (rdump && nr_rdump) {
unsigned int idx;
reg_dump = kzalloc(sizeof(struct samsung_clk_reg_dump)
- * nr_rdump, GFP_KERNEL);
+ * (nr_rdump + nr_soc_rdump), GFP_KERNEL);
if (!reg_dump) {
pr_err("%s: memory alloc for register dump failed\n",
__func__);
@@ -71,7 +72,9 @@ void __init samsung_clk_init(struct device_node *np, void __iomem *base,
for (idx = 0; idx < nr_rdump; idx++)
reg_dump[idx].offset = rdump[idx];
- nr_reg_dump = nr_rdump;
+ for (idx = 0; idx < nr_soc_rdump; idx++)
+ reg_dump[nr_rdump + idx].offset = soc_rdump[idx];
+ nr_reg_dump = nr_rdump + nr_soc_rdump;
register_syscore_ops(&samsung_clk_syscore_ops);
}
#endif