summaryrefslogtreecommitdiff
path: root/cpu
diff options
context:
space:
mode:
authorMichael Brandt <michael.brandt@stericsson.com>2010-11-25 09:59:49 +0100
committerMichael BRANDT <michael.brandt@stericsson.com>2010-11-29 10:28:23 +0100
commit2c04f3663422f56daf88b643e1a3eded854860d0 (patch)
tree2f38f236aa0ec488c04d14a6493a4463984308ec /cpu
parenteb434f72d1f7deb13d3e5aacf6517897de7f95e4 (diff)
U8500: Move clock.c into SoC directory
clock.c is SoC specific, not board specific. Other db8500 based boards need it as well, therefore move it into the SoC directory. Change-Id: Ib23d44988628e8bb6a8cb89c56941cf2a815892d Signed-off-by: Michael Brandt <michael.brandt@stericsson.com> Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/9399 Reviewed-by: Joakim AXELSSON <joakim.axelsson@stericsson.com> Reviewed-by: Markus HELGESSON <markus.helgesson@stericsson.com> Reviewed-by: Robert ROSENGREN <robert.rosengren@stericsson.com>
Diffstat (limited to 'cpu')
-rwxr-xr-xcpu/arm_cortexa9/stw8500/Makefile1
-rwxr-xr-xcpu/arm_cortexa9/stw8500/clock.c56
2 files changed, 57 insertions, 0 deletions
diff --git a/cpu/arm_cortexa9/stw8500/Makefile b/cpu/arm_cortexa9/stw8500/Makefile
index a8367ec61..180da3026 100755
--- a/cpu/arm_cortexa9/stw8500/Makefile
+++ b/cpu/arm_cortexa9/stw8500/Makefile
@@ -26,6 +26,7 @@ include $(TOPDIR)/config.mk
LIB = $(obj)lib$(SOC).a
COBJS = timer.o interrupts.o
+COBJS += clock.o
COBJS += prcmu.o
SRCS := $(START:.o=.S) $(COBJS:.o=.c)
diff --git a/cpu/arm_cortexa9/stw8500/clock.c b/cpu/arm_cortexa9/stw8500/clock.c
new file mode 100755
index 000000000..41f1bb254
--- /dev/null
+++ b/cpu/arm_cortexa9/stw8500/clock.c
@@ -0,0 +1,56 @@
+/*
+ * (C) Copyright 2009 ST-Ericsson
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * 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.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/hardware.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+struct clkrst {
+ unsigned int pcken;
+ unsigned int pckdis;
+ unsigned int kcken;
+ unsigned int kckdis;
+};
+
+static unsigned int clkrst_base[] = {
+ U8500_CLKRST1_BASE,
+ U8500_CLKRST2_BASE,
+ U8500_CLKRST3_BASE,
+ NULL,
+ U8500_CLKRST5_BASE,
+ U8500_CLKRST6_BASE,
+ U8500_CLKRST7_BASE, /* ED only */
+};
+
+/* Turn on peripheral clock at PRCC level */
+void u8500_clock_enable(int periph, int cluster, int kern)
+{
+ struct clkrst *clkrst = (struct clkrst *) clkrst_base[periph - 1];
+
+ if (kern != -1)
+ writel(1 << kern, &clkrst->kcken);
+
+ if (cluster != -1)
+ writel(1 << cluster, &clkrst->pcken);
+}