summaryrefslogtreecommitdiffstats
path: root/drivers/clk/socfpga/clk.c
diff options
context:
space:
mode:
authorSteffen Trumtrar <s.trumtrar@pengutronix.de>2017-04-28 16:41:42 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2017-05-03 13:51:22 +0200
commit2f7ca3ab16be2035e54bc905bc6052d98c61094a (patch)
treed80532791a1d0974f1d999317c663671bd00c37a /drivers/clk/socfpga/clk.c
parentd5c8bc3ff1a795cb9ef44abd518f5dae6f9000fa (diff)
downloadbarebox-2f7ca3ab16be2035e54bc905bc6052d98c61094a.tar.gz
barebox-2f7ca3ab16be2035e54bc905bc6052d98c61094a.tar.xz
clk: socfpga: add arria10 clk drivers
Arria10 has a (slightly) different clock controller than the Cyclone5. Add new drivers for it. This driver only reads out the setup and builds the clocktree, it does not setup any clocks. Signed-off-by: Steffen Trumtrar <s.trumtrar@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/clk/socfpga/clk.c')
-rw-r--r--drivers/clk/socfpga/clk.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/clk/socfpga/clk.c b/drivers/clk/socfpga/clk.c
index 6af0632caf..ade608ffe3 100644
--- a/drivers/clk/socfpga/clk.c
+++ b/drivers/clk/socfpga/clk.c
@@ -12,6 +12,7 @@
*/
#include <common.h>
+#include <debug_ll.h>
#include <init.h>
#include <driver.h>
#include <linux/clk.h>
@@ -20,6 +21,8 @@
#include <linux/clkdev.h>
#include <linux/err.h>
+#include "clk.h"
+
/* Clock Manager offsets */
#define CLKMGR_CTRL 0x0
#define CLKMGR_BYPASS 0x4
@@ -52,7 +55,7 @@
#define div_mask(width) ((1 << (width)) - 1)
#define streq(a, b) (strcmp((a), (b)) == 0)
-static void __iomem *clk_mgr_base_addr;
+void __iomem *clk_mgr_base_addr;
struct clk_pll {
struct clk clk;
@@ -385,6 +388,12 @@ static void socfpga_register_clocks(struct device_d *dev, struct device_node *no
clk = socfpga_periph_clk(node);
else if (of_device_is_compatible(node, "altr,socfpga-gate-clk"))
clk = socfpga_gate_clk(node);
+ else if (of_device_is_compatible(node, "altr,socfpga-a10-pll-clock"))
+ clk = socfpga_a10_pll_init(node);
+ else if (of_device_is_compatible(node, "altr,socfpga-a10-perip-clk"))
+ clk = socfpga_a10_periph_init(node);
+ else if (of_device_is_compatible(node, "altr,socfpga-a10-gate-clk"))
+ clk = socfpga_a10_gate_init(node);
else
return;