aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/sunxi/patches-3.12/117-clk-sunxi-declare-OF-provider.patch
diff options
context:
space:
mode:
authorZoltan HERPAI <wigyori@uid0.hu>2014-01-04 09:47:50 +0000
committerZoltan HERPAI <wigyori@uid0.hu>2014-01-04 09:47:50 +0000
commitf645600f01b691daad6119bd6c1211c981998ab1 (patch)
treef9c170557d310d8bb94364a6fd24eabcd178a77d /target/linux/sunxi/patches-3.12/117-clk-sunxi-declare-OF-provider.patch
parent3494713f4d06aada91622bcf9c21c2ea4eed69cf (diff)
downloadupstream-f645600f01b691daad6119bd6c1211c981998ab1.tar.gz
upstream-f645600f01b691daad6119bd6c1211c981998ab1.tar.bz2
upstream-f645600f01b691daad6119bd6c1211c981998ab1.zip
sunxi: refresh clock framework
Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@39186 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/sunxi/patches-3.12/117-clk-sunxi-declare-OF-provider.patch')
-rw-r--r--target/linux/sunxi/patches-3.12/117-clk-sunxi-declare-OF-provider.patch108
1 files changed, 108 insertions, 0 deletions
diff --git a/target/linux/sunxi/patches-3.12/117-clk-sunxi-declare-OF-provider.patch b/target/linux/sunxi/patches-3.12/117-clk-sunxi-declare-OF-provider.patch
new file mode 100644
index 0000000000..296e0e478d
--- /dev/null
+++ b/target/linux/sunxi/patches-3.12/117-clk-sunxi-declare-OF-provider.patch
@@ -0,0 +1,108 @@
+From be0804513a506de96925f9ed1aa8dc1facd4c180 Mon Sep 17 00:00:00 2001
+From: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
+Date: Fri, 6 Sep 2013 14:59:57 +0200
+Subject: [PATCH] clk: sunxi: declare OF clock provider
+
+Common clock framework allows to register clock providers to get called
+on of_clk_init() by using CLK_OF_DECLARE. This converts sunxi clock
+providers to make use of it and get rid of the mach specific clk init
+call. As sunxi has a bunch of independent clk provider nodes, we hook
+current clock init to board compatible to make it called once.
+
+Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
+Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
+Acked-by: Mike Turquette <mturquette@linaro.org>
+---
+ arch/arm/mach-sunxi/sunxi.c | 4 +---
+ drivers/clk/sunxi/clk-sunxi.c | 11 ++++++-----
+ include/linux/clk/sunxi.h | 22 ----------------------
+ 3 files changed, 7 insertions(+), 30 deletions(-)
+ delete mode 100644 include/linux/clk/sunxi.h
+
+diff --git a/arch/arm/mach-sunxi/sunxi.c b/arch/arm/mach-sunxi/sunxi.c
+index e79fb34..e5a6975 100644
+--- a/arch/arm/mach-sunxi/sunxi.c
++++ b/arch/arm/mach-sunxi/sunxi.c
+@@ -20,8 +20,6 @@
+ #include <linux/io.h>
+ #include <linux/reboot.h>
+
+-#include <linux/clk/sunxi.h>
+-
+ #include <asm/mach/arch.h>
+ #include <asm/mach/map.h>
+ #include <asm/system_misc.h>
+@@ -118,7 +116,7 @@ static void sunxi_setup_restart(void)
+
+ static void __init sunxi_timer_init(void)
+ {
+- sunxi_init_clocks();
++ of_clk_init(NULL);
+ clocksource_of_init();
+ }
+
+diff --git a/drivers/clk/sunxi/clk-sunxi.c b/drivers/clk/sunxi/clk-sunxi.c
+index 34ee69f..9bbd035 100644
+--- a/drivers/clk/sunxi/clk-sunxi.c
++++ b/drivers/clk/sunxi/clk-sunxi.c
+@@ -16,7 +16,6 @@
+
+ #include <linux/clk-provider.h>
+ #include <linux/clkdev.h>
+-#include <linux/clk/sunxi.h>
+ #include <linux/of.h>
+ #include <linux/of_address.h>
+
+@@ -617,11 +616,8 @@ static void __init of_sunxi_table_clock_setup(const struct of_device_id *clk_mat
+ }
+ }
+
+-void __init sunxi_init_clocks(void)
++static void __init sunxi_init_clocks(struct device_node *np)
+ {
+- /* Register all the simple and basic clocks on DT */
+- of_clk_init(NULL);
+-
+ /* Register factor clocks */
+ of_sunxi_table_clock_setup(clk_factors_match, sunxi_factors_clk_setup);
+
+@@ -634,3 +630,8 @@ void __init sunxi_init_clocks(void)
+ /* Register gate clocks */
+ of_sunxi_table_clock_setup(clk_gates_match, sunxi_gates_clk_setup);
+ }
++CLK_OF_DECLARE(sun4i_a10_clk_init, "allwinner,sun4i-a10", sunxi_init_clocks);
++CLK_OF_DECLARE(sun5i_a10s_clk_init, "allwinner,sun5i-a10s", sunxi_init_clocks);
++CLK_OF_DECLARE(sun5i_a13_clk_init, "allwinner,sun5i-a13", sunxi_init_clocks);
++CLK_OF_DECLARE(sun6i_a31_clk_init, "allwinner,sun6i-a31", sunxi_init_clocks);
++CLK_OF_DECLARE(sun7i_a20_clk_init, "allwinner,sun7i-a20", sunxi_init_clocks);
+diff --git a/include/linux/clk/sunxi.h b/include/linux/clk/sunxi.h
+deleted file mode 100644
+index e074fdd..0000000
+--- a/include/linux/clk/sunxi.h
++++ /dev/null
+@@ -1,22 +0,0 @@
+-/*
+- * Copyright 2012 Maxime Ripard
+- *
+- * Maxime Ripard <maxime.ripard@free-electrons.com>
+- *
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 2 of the License, or
+- * (at your option) any later version.
+- *
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- * GNU General Public License for more details.
+- */
+-
+-#ifndef __LINUX_CLK_SUNXI_H_
+-#define __LINUX_CLK_SUNXI_H_
+-
+-void __init sunxi_init_clocks(void);
+-
+-#endif
+--
+1.8.5.1
+