| From 168764db129d318b7399d8756d85c59b259b14ed Mon Sep 17 00:00:00 2001 |
| From: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> |
| Date: Wed, 11 Dec 2013 15:13:54 +0100 |
| Subject: ARM: shmobile: lager-reference: Instantiate clkdevs for SCIF and CMT |
| |
| Now that the common clock framework is supported, the clock lookup |
| entries in clock-r8a7790.c are not registered anymore. Devices must |
| instead reference their clocks in the device tree. However, SCIF and CMT |
| devices are still instantiated through platform code, and thus need a |
| clock lookup entry. |
| |
| Retrieve the SCIF and CMT clock entries by name and register clkdevs for |
| the corresponding devices. This will be removed when the SCIF and CMT |
| devices will be instantiated from the device tree. |
| |
| Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| (cherry picked from commit 4a606af20d930dc1a8b62b0f753cdc018914e5de) |
| (Queued by Simon Horman for v3.14 but not yet in Linus's tree) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| --- |
| arch/arm/mach-shmobile/board-lager-reference.c | 31 +++++++++++++++++++++++++- |
| 1 file changed, 30 insertions(+), 1 deletion(-) |
| |
| diff --git a/arch/arm/mach-shmobile/board-lager-reference.c b/arch/arm/mach-shmobile/board-lager-reference.c |
| index fc43f7ce6577..7e3fe377e381 100644 |
| --- a/arch/arm/mach-shmobile/board-lager-reference.c |
| +++ b/arch/arm/mach-shmobile/board-lager-reference.c |
| @@ -18,6 +18,8 @@ |
| * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
| */ |
| |
| +#include <linux/clk.h> |
| +#include <linux/clkdev.h> |
| #include <linux/init.h> |
| #include <linux/of_platform.h> |
| #include <mach/common.h> |
| @@ -27,9 +29,36 @@ |
| |
| static void __init lager_add_standard_devices(void) |
| { |
| -#ifndef CONFIG_COMMON_CLK |
| +#ifdef CONFIG_COMMON_CLK |
| + /* |
| + * This is a really crude hack to provide clkdev support to the SCIF |
| + * and CMT devices until they get moved to DT. |
| + */ |
| + static const char * const scif_names[] = { |
| + "scifa0", "scifa1", "scifb0", "scifb1", |
| + "scifb2", "scifa2", "scif0", "scif1", |
| + "hscif0", "hscif1", |
| + }; |
| + struct clk *clk; |
| + unsigned int i; |
| + |
| + for (i = 0; i < ARRAY_SIZE(scif_names); ++i) { |
| + clk = clk_get(NULL, scif_names[i]); |
| + if (clk) { |
| + clk_register_clkdev(clk, NULL, "sh-sci.%u", i); |
| + clk_put(clk); |
| + } |
| + } |
| + |
| + clk = clk_get(NULL, "cmt0"); |
| + if (clk) { |
| + clk_register_clkdev(clk, NULL, "sh_cmt.0"); |
| + clk_put(clk); |
| + } |
| +#else |
| r8a7790_clock_init(); |
| #endif |
| + |
| r8a7790_add_dt_devices(); |
| of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); |
| } |
| -- |
| 1.8.5.rc3 |
| |