* [PATCH V3 1/4] cpufreq: dt: Include types.h from cpufreq-dt.h
[not found] <cover.1459325515.git.viresh.kumar@linaro.org>
@ 2016-03-30 8:15 ` Viresh Kumar
2016-03-30 8:15 ` [PATCH V3 2/4] cpufreq: dt: Add generic platform-device creation support Viresh Kumar
` (2 subsequent siblings)
3 siblings, 0 replies; 6+ messages in thread
From: Viresh Kumar @ 2016-03-30 8:15 UTC (permalink / raw)
To: Rafael Wysocki, arnd.bergmann
Cc: linaro-kernel, linux-pm, kgene.kim, xf, heiko, mmcclint,
k.kozlowski, Viresh Kumar, linux-kernel
cpufreq-dt.h uses 'bool' data type but doesn't include types.h. It works
fine for now as the files that include cpufreq-dt.h, also include
types.h directly or indirectly.
But, when a file includes cpufreq-dt.h without including types.h, we get
a build error. Avoid such errors by including types.h in cpufreq-dt
itself.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
include/linux/cpufreq-dt.h | 2 ++
1 file changed, 2 insertions(+)
diff --git a/include/linux/cpufreq-dt.h b/include/linux/cpufreq-dt.h
index 0414009e2c30..a87335a1660c 100644
--- a/include/linux/cpufreq-dt.h
+++ b/include/linux/cpufreq-dt.h
@@ -10,6 +10,8 @@
#ifndef __CPUFREQ_DT_H__
#define __CPUFREQ_DT_H__
+#include <linux/types.h>
+
struct cpufreq_dt_platform_data {
/*
* True when each CPU has its own clock to control its
--
2.7.1.410.g6faf27b
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH V3 2/4] cpufreq: dt: Add generic platform-device creation support
[not found] <cover.1459325515.git.viresh.kumar@linaro.org>
2016-03-30 8:15 ` [PATCH V3 1/4] cpufreq: dt: Include types.h from cpufreq-dt.h Viresh Kumar
@ 2016-03-30 8:15 ` Viresh Kumar
2016-04-13 19:46 ` Matthew McClintock
2016-03-30 8:15 ` [PATCH V3 3/4] ARM: exynos: exynos-cpufreq platform device isn't supported anymore Viresh Kumar
2016-03-30 8:15 ` [PATCH V3 4/4] cpufreq: exynos: Use generic platdev driver Viresh Kumar
3 siblings, 1 reply; 6+ messages in thread
From: Viresh Kumar @ 2016-03-30 8:15 UTC (permalink / raw)
To: Rafael Wysocki, arnd.bergmann, Viresh Kumar
Cc: linaro-kernel, linux-pm, kgene.kim, xf, heiko, mmcclint,
k.kozlowski, linux-kernel
Multiple platforms are using the generic cpufreq-dt driver now, and all
of them are required to create a platform device with name "cpufreq-dt",
in order to get the cpufreq-dt probed.
Many of them do it from platform code, others have special drivers just
to do that.
It would be more sensible to do this at a generic place, where all such
platform can mark their entries.
This patch adds a separate file to get this device created. Currently
the compat list of platforms that we support is empty, and will be
filled in as and when we move platforms to use it.
It always compiles as part of the kernel and so doesn't need a
module-exit operation.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
---
drivers/cpufreq/Kconfig | 10 ++++++++++
drivers/cpufreq/Makefile | 1 +
drivers/cpufreq/cpufreq-dt-platdev.c | 32 ++++++++++++++++++++++++++++++++
3 files changed, 43 insertions(+)
create mode 100644 drivers/cpufreq/cpufreq-dt-platdev.c
diff --git a/drivers/cpufreq/Kconfig b/drivers/cpufreq/Kconfig
index a7f45853c103..8c26e3c53498 100644
--- a/drivers/cpufreq/Kconfig
+++ b/drivers/cpufreq/Kconfig
@@ -191,6 +191,7 @@ config CPUFREQ_DT
depends on HAVE_CLK && OF
# if CPU_THERMAL is on and THERMAL=m, CPUFREQ_DT cannot be =y:
depends on !CPU_THERMAL || THERMAL
+ select CPUFREQ_DT_PLATDEV
select PM_OPP
help
This adds a generic DT based cpufreq driver for frequency management.
@@ -199,6 +200,15 @@ config CPUFREQ_DT
If in doubt, say N.
+config CPUFREQ_DT_PLATDEV
+ bool
+ help
+ This adds a generic DT based cpufreq platdev driver for frequency
+ management. This creates a 'cpufreq-dt' platform device, on the
+ supported platforms.
+
+ If in doubt, say N.
+
if X86
source "drivers/cpufreq/Kconfig.x86"
endif
diff --git a/drivers/cpufreq/Makefile b/drivers/cpufreq/Makefile
index 9e63fb1b09f8..b9224fdb8322 100644
--- a/drivers/cpufreq/Makefile
+++ b/drivers/cpufreq/Makefile
@@ -13,6 +13,7 @@ obj-$(CONFIG_CPU_FREQ_GOV_CONSERVATIVE) += cpufreq_conservative.o
obj-$(CONFIG_CPU_FREQ_GOV_COMMON) += cpufreq_governor.o
obj-$(CONFIG_CPUFREQ_DT) += cpufreq-dt.o
+obj-$(CONFIG_CPUFREQ_DT_PLATDEV) += cpufreq-dt-platdev.o
##################################################################################
# x86 drivers.
diff --git a/drivers/cpufreq/cpufreq-dt-platdev.c b/drivers/cpufreq/cpufreq-dt-platdev.c
new file mode 100644
index 000000000000..2a3532427ecf
--- /dev/null
+++ b/drivers/cpufreq/cpufreq-dt-platdev.c
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2016 Linaro.
+ * Viresh Kumar <viresh.kumar@linaro.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/err.h>
+#include <linux/of.h>
+#include <linux/platform_device.h>
+
+static const struct of_device_id machines[] = {
+};
+
+static int __init cpufreq_dt_platdev_init(void)
+{
+ struct device_node *np = of_find_node_by_path("/");
+
+ if (!np)
+ return -ENODEV;
+
+ if (!of_match_node(machines, np))
+ return -ENODEV;
+
+ of_node_put(of_root);
+
+ return PTR_ERR_OR_ZERO(platform_device_register_simple("cpufreq-dt", -1,
+ NULL, 0));
+}
+device_initcall(cpufreq_dt_platdev_init);
--
2.7.1.410.g6faf27b
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH V3 2/4] cpufreq: dt: Add generic platform-device creation support
2016-03-30 8:15 ` [PATCH V3 2/4] cpufreq: dt: Add generic platform-device creation support Viresh Kumar
@ 2016-04-13 19:46 ` Matthew McClintock
0 siblings, 0 replies; 6+ messages in thread
From: Matthew McClintock @ 2016-04-13 19:46 UTC (permalink / raw)
To: Viresh Kumar
Cc: Rafael Wysocki, arnd.bergmann, linaro-kernel, linux-pm, kgene.kim,
xf, heiko, k.kozlowski, linux-kernel
On Mar 30, 2016, at 3:15 AM, Viresh Kumar <viresh.kumar@linaro.org> wrote:
>
> Multiple platforms are using the generic cpufreq-dt driver now, and all
> of them are required to create a platform device with name "cpufreq-dt",
> in order to get the cpufreq-dt probed.
>
> Many of them do it from platform code, others have special drivers just
> to do that.
>
> It would be more sensible to do this at a generic place, where all such
> platform can mark their entries.
>
> This patch adds a separate file to get this device created. Currently
> the compat list of platforms that we support is empty, and will be
> filled in as and when we move platforms to use it.
>
> It always compiles as part of the kernel and so doesn't need a
> module-exit operation.
>
> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
> Reviewed-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Test on ipq4019.
Tested-by: Matthew McClintock <mmcclint@codeaurora.org>
-M
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH V3 3/4] ARM: exynos: exynos-cpufreq platform device isn't supported anymore
[not found] <cover.1459325515.git.viresh.kumar@linaro.org>
2016-03-30 8:15 ` [PATCH V3 1/4] cpufreq: dt: Include types.h from cpufreq-dt.h Viresh Kumar
2016-03-30 8:15 ` [PATCH V3 2/4] cpufreq: dt: Add generic platform-device creation support Viresh Kumar
@ 2016-03-30 8:15 ` Viresh Kumar
2016-03-30 8:30 ` Krzysztof Kozlowski
2016-03-30 8:15 ` [PATCH V3 4/4] cpufreq: exynos: Use generic platdev driver Viresh Kumar
3 siblings, 1 reply; 6+ messages in thread
From: Viresh Kumar @ 2016-03-30 8:15 UTC (permalink / raw)
To: Rafael Wysocki, arnd.bergmann, Kukjin Kim, Krzysztof Kozlowski
Cc: linaro-kernel, linux-pm, kgene.kim, xf, heiko, mmcclint,
Viresh Kumar, linux-arm-kernel, linux-samsung-soc, linux-kernel
The driver is removed long back and we don't support this device
anymore. Stop adding it.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
arch/arm/mach-exynos/exynos.c | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/arch/arm/mach-exynos/exynos.c b/arch/arm/mach-exynos/exynos.c
index bbf51a46f772..4dfce1069406 100644
--- a/arch/arm/mach-exynos/exynos.c
+++ b/arch/arm/mach-exynos/exynos.c
@@ -232,12 +232,8 @@ static void __init exynos_cpufreq_init(void)
const struct of_device_id *match;
match = of_match_node(exynos_cpufreq_matches, root);
- if (!match) {
- platform_device_register_simple("exynos-cpufreq", -1, NULL, 0);
- return;
- }
-
- platform_device_register_simple(match->data, -1, NULL, 0);
+ if (match)
+ platform_device_register_simple(match->data, -1, NULL, 0);
}
static void __init exynos_dt_machine_init(void)
--
2.7.1.410.g6faf27b
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH V3 3/4] ARM: exynos: exynos-cpufreq platform device isn't supported anymore
2016-03-30 8:15 ` [PATCH V3 3/4] ARM: exynos: exynos-cpufreq platform device isn't supported anymore Viresh Kumar
@ 2016-03-30 8:30 ` Krzysztof Kozlowski
0 siblings, 0 replies; 6+ messages in thread
From: Krzysztof Kozlowski @ 2016-03-30 8:30 UTC (permalink / raw)
To: Viresh Kumar, Rafael Wysocki, arnd.bergmann, Kukjin Kim
Cc: linaro-kernel, linux-pm, kgene.kim, xf, heiko, mmcclint,
linux-arm-kernel, linux-samsung-soc, linux-kernel
On 30.03.2016 17:15, Viresh Kumar wrote:
> The driver is removed long back and we don't support this device
> anymore. Stop adding it.
>
> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
> ---
> arch/arm/mach-exynos/exynos.c | 8 ++------
> 1 file changed, 2 insertions(+), 6 deletions(-)
Reviewed-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH V3 4/4] cpufreq: exynos: Use generic platdev driver
[not found] <cover.1459325515.git.viresh.kumar@linaro.org>
` (2 preceding siblings ...)
2016-03-30 8:15 ` [PATCH V3 3/4] ARM: exynos: exynos-cpufreq platform device isn't supported anymore Viresh Kumar
@ 2016-03-30 8:15 ` Viresh Kumar
3 siblings, 0 replies; 6+ messages in thread
From: Viresh Kumar @ 2016-03-30 8:15 UTC (permalink / raw)
To: Rafael Wysocki, arnd.bergmann, Kukjin Kim, Krzysztof Kozlowski,
Viresh Kumar
Cc: linaro-kernel, linux-pm, kgene.kim, xf, heiko, mmcclint,
linux-arm-kernel, linux-samsung-soc, linux-kernel
The cpufreq-dt-platdev driver supports creation of cpufreq-dt platform
device now, reuse that and remove similar code from platform code.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
---
arch/arm/mach-exynos/exynos.c | 25 -------------------------
drivers/cpufreq/cpufreq-dt-platdev.c | 9 +++++++++
2 files changed, 9 insertions(+), 25 deletions(-)
diff --git a/arch/arm/mach-exynos/exynos.c b/arch/arm/mach-exynos/exynos.c
index 4dfce1069406..4d3b056fd786 100644
--- a/arch/arm/mach-exynos/exynos.c
+++ b/arch/arm/mach-exynos/exynos.c
@@ -213,29 +213,6 @@ static void __init exynos_init_irq(void)
exynos_map_pmu();
}
-static const struct of_device_id exynos_cpufreq_matches[] = {
- { .compatible = "samsung,exynos3250", .data = "cpufreq-dt" },
- { .compatible = "samsung,exynos4210", .data = "cpufreq-dt" },
- { .compatible = "samsung,exynos4212", .data = "cpufreq-dt" },
- { .compatible = "samsung,exynos4412", .data = "cpufreq-dt" },
- { .compatible = "samsung,exynos5250", .data = "cpufreq-dt" },
-#ifndef CONFIG_BL_SWITCHER
- { .compatible = "samsung,exynos5420", .data = "cpufreq-dt" },
- { .compatible = "samsung,exynos5800", .data = "cpufreq-dt" },
-#endif
- { /* sentinel */ }
-};
-
-static void __init exynos_cpufreq_init(void)
-{
- struct device_node *root = of_find_node_by_path("/");
- const struct of_device_id *match;
-
- match = of_match_node(exynos_cpufreq_matches, root);
- if (match)
- platform_device_register_simple(match->data, -1, NULL, 0);
-}
-
static void __init exynos_dt_machine_init(void)
{
/*
@@ -258,8 +235,6 @@ static void __init exynos_dt_machine_init(void)
of_machine_is_compatible("samsung,exynos5250"))
platform_device_register(&exynos_cpuidle);
- exynos_cpufreq_init();
-
of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
}
diff --git a/drivers/cpufreq/cpufreq-dt-platdev.c b/drivers/cpufreq/cpufreq-dt-platdev.c
index 2a3532427ecf..f2ae7ad99a3c 100644
--- a/drivers/cpufreq/cpufreq-dt-platdev.c
+++ b/drivers/cpufreq/cpufreq-dt-platdev.c
@@ -12,6 +12,15 @@
#include <linux/platform_device.h>
static const struct of_device_id machines[] = {
+ { .compatible = "samsung,exynos3250", },
+ { .compatible = "samsung,exynos4210", },
+ { .compatible = "samsung,exynos4212", },
+ { .compatible = "samsung,exynos4412", },
+ { .compatible = "samsung,exynos5250", },
+#ifndef CONFIG_BL_SWITCHER
+ { .compatible = "samsung,exynos5420", },
+ { .compatible = "samsung,exynos5800", },
+#endif
};
static int __init cpufreq_dt_platdev_init(void)
--
2.7.1.410.g6faf27b
^ permalink raw reply related [flat|nested] 6+ messages in thread