Commit cf1e0449 authored by Mian Yousaf Kaukab's avatar Mian Yousaf Kaukab Committed by Viresh Kumar

clk: qoriq: add cpufreq platform device

Add a platform device for qoirq-cpufreq driver for the compatible
clockgen blocks.
Reviewed-by: default avatarYuantian Tang <andy.tang@nxp.com>
Acked-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: default avatarMian Yousaf Kaukab <ykaukab@suse.de>
Acked-by: default avatarStephen Boyd <sboyd@kernel.org>
Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
parent 157f5276
...@@ -95,6 +95,7 @@ struct clockgen { ...@@ -95,6 +95,7 @@ struct clockgen {
}; };
static struct clockgen clockgen; static struct clockgen clockgen;
static bool add_cpufreq_dev __initdata;
static void cg_out(struct clockgen *cg, u32 val, u32 __iomem *reg) static void cg_out(struct clockgen *cg, u32 val, u32 __iomem *reg)
{ {
...@@ -1019,7 +1020,7 @@ static void __init create_muxes(struct clockgen *cg) ...@@ -1019,7 +1020,7 @@ static void __init create_muxes(struct clockgen *cg)
} }
} }
static void __init clockgen_init(struct device_node *np); static void __init _clockgen_init(struct device_node *np, bool legacy);
/* /*
* Legacy nodes may get probed before the parent clockgen node. * Legacy nodes may get probed before the parent clockgen node.
...@@ -1030,7 +1031,7 @@ static void __init clockgen_init(struct device_node *np); ...@@ -1030,7 +1031,7 @@ static void __init clockgen_init(struct device_node *np);
static void __init legacy_init_clockgen(struct device_node *np) static void __init legacy_init_clockgen(struct device_node *np)
{ {
if (!clockgen.node) if (!clockgen.node)
clockgen_init(of_get_parent(np)); _clockgen_init(of_get_parent(np), true);
} }
/* Legacy node */ /* Legacy node */
...@@ -1447,7 +1448,7 @@ static bool __init has_erratum_a4510(void) ...@@ -1447,7 +1448,7 @@ static bool __init has_erratum_a4510(void)
} }
#endif #endif
static void __init clockgen_init(struct device_node *np) static void __init _clockgen_init(struct device_node *np, bool legacy)
{ {
int i, ret; int i, ret;
bool is_old_ls1021a = false; bool is_old_ls1021a = false;
...@@ -1516,12 +1517,35 @@ static void __init clockgen_init(struct device_node *np) ...@@ -1516,12 +1517,35 @@ static void __init clockgen_init(struct device_node *np)
__func__, np, ret); __func__, np, ret);
} }
/* Don't create cpufreq device for legacy clockgen blocks */
add_cpufreq_dev = !legacy;
return; return;
err: err:
iounmap(clockgen.regs); iounmap(clockgen.regs);
clockgen.regs = NULL; clockgen.regs = NULL;
} }
static void __init clockgen_init(struct device_node *np)
{
_clockgen_init(np, false);
}
static int __init clockgen_cpufreq_init(void)
{
struct platform_device *pdev;
if (add_cpufreq_dev) {
pdev = platform_device_register_simple("qoriq-cpufreq", -1,
NULL, 0);
if (IS_ERR(pdev))
pr_err("Couldn't register qoriq-cpufreq err=%ld\n",
PTR_ERR(pdev));
}
return 0;
}
device_initcall(clockgen_cpufreq_init);
CLK_OF_DECLARE(qoriq_clockgen_1, "fsl,qoriq-clockgen-1.0", clockgen_init); CLK_OF_DECLARE(qoriq_clockgen_1, "fsl,qoriq-clockgen-1.0", clockgen_init);
CLK_OF_DECLARE(qoriq_clockgen_2, "fsl,qoriq-clockgen-2.0", clockgen_init); CLK_OF_DECLARE(qoriq_clockgen_2, "fsl,qoriq-clockgen-2.0", clockgen_init);
CLK_OF_DECLARE(qoriq_clockgen_b4420, "fsl,b4420-clockgen", clockgen_init); CLK_OF_DECLARE(qoriq_clockgen_b4420, "fsl,b4420-clockgen", clockgen_init);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment