Split clock.c for am335x and ti814x and add the ti814x include file.

Signed-off-by: Matt Porter <mpor...@ti.com>
---
 arch/arm/cpu/armv7/am33xx/Makefile               |    3 +-
 arch/arm/cpu/armv7/am33xx/clock-am335x.c         |  374 ++++++++++++++++++++++
 arch/arm/cpu/armv7/am33xx/clock-ti814x.c         |  234 ++++++++++++++
 arch/arm/cpu/armv7/am33xx/clock.c                |  374 ----------------------
 arch/arm/include/asm/arch-am33xx/clock.h         |    4 +
 arch/arm/include/asm/arch-am33xx/clocks_ti814x.h |  112 +++++++
 6 files changed, 726 insertions(+), 375 deletions(-)
 create mode 100644 arch/arm/cpu/armv7/am33xx/clock-am335x.c
 create mode 100644 arch/arm/cpu/armv7/am33xx/clock-ti814x.c
 delete mode 100644 arch/arm/cpu/armv7/am33xx/clock.c
 create mode 100644 arch/arm/include/asm/arch-am33xx/clocks_ti814x.h

diff --git a/arch/arm/cpu/armv7/am33xx/Makefile 
b/arch/arm/cpu/armv7/am33xx/Makefile
index 70c443e..7051029 100644
--- a/arch/arm/cpu/armv7/am33xx/Makefile
+++ b/arch/arm/cpu/armv7/am33xx/Makefile
@@ -16,7 +16,8 @@ include $(TOPDIR)/config.mk
 
 LIB    = $(obj)lib$(SOC).o
 
-COBJS  += clock.o
+COBJS-$(CONFIG_AM33XX) += clock-am335x.o
+COBJS-$(CONFIG_TI814X) += clock-ti814x.o
 COBJS  += sys_info.o
 COBJS  += mem.o
 COBJS  += ddr.o
diff --git a/arch/arm/cpu/armv7/am33xx/clock-am335x.c 
b/arch/arm/cpu/armv7/am33xx/clock-am335x.c
new file mode 100644
index 0000000..d7d98d1
--- /dev/null
+++ b/arch/arm/cpu/armv7/am33xx/clock-am335x.c
@@ -0,0 +1,374 @@
+/*
+ * clock.c
+ *
+ * clocks for AM33XX based boards
+ *
+ * Copyright (C) 2011, Texas Instruments, Incorporated - http://www.ti.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.
+ */
+
+#include <common.h>
+#include <asm/arch/cpu.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/hardware.h>
+#include <asm/io.h>
+
+#define PRCM_MOD_EN            0x2
+#define PRCM_FORCE_WAKEUP      0x2
+#define PRCM_FUNCTL            0x0
+
+#define PRCM_EMIF_CLK_ACTIVITY BIT(2)
+#define PRCM_L3_GCLK_ACTIVITY  BIT(4)
+
+#define PLL_BYPASS_MODE                0x4
+#define ST_MN_BYPASS           0x00000100
+#define ST_DPLL_CLK            0x00000001
+#define CLK_SEL_MASK           0x7ffff
+#define CLK_DIV_MASK           0x1f
+#define CLK_DIV2_MASK          0x7f
+#define CLK_SEL_SHIFT          0x8
+#define CLK_MODE_SEL           0x7
+#define CLK_MODE_MASK          0xfffffff8
+#define CLK_DIV_SEL            0xFFFFFFE0
+#define CPGMAC0_IDLE           0x30000
+#define DPLL_CLKDCOLDO_GATE_CTRL        0x300
+
+const struct cm_perpll *cmper = (struct cm_perpll *)CM_PER;
+const struct cm_wkuppll *cmwkup = (struct cm_wkuppll *)CM_WKUP;
+const struct cm_dpll *cmdpll = (struct cm_dpll *)CM_DPLL;
+const struct cm_rtc *cmrtc = (struct cm_rtc *)CM_RTC;
+
+static void enable_interface_clocks(void)
+{
+       /* Enable all the Interconnect Modules */
+       writel(PRCM_MOD_EN, &cmper->l3clkctrl);
+       while (readl(&cmper->l3clkctrl) != PRCM_MOD_EN)
+               ;
+
+       writel(PRCM_MOD_EN, &cmper->l4lsclkctrl);
+       while (readl(&cmper->l4lsclkctrl) != PRCM_MOD_EN)
+               ;
+
+       writel(PRCM_MOD_EN, &cmper->l4fwclkctrl);
+       while (readl(&cmper->l4fwclkctrl) != PRCM_MOD_EN)
+               ;
+
+       writel(PRCM_MOD_EN, &cmwkup->wkl4wkclkctrl);
+       while (readl(&cmwkup->wkl4wkclkctrl) != PRCM_MOD_EN)
+               ;
+
+       writel(PRCM_MOD_EN, &cmper->l3instrclkctrl);
+       while (readl(&cmper->l3instrclkctrl) != PRCM_MOD_EN)
+               ;
+
+       writel(PRCM_MOD_EN, &cmper->l4hsclkctrl);
+       while (readl(&cmper->l4hsclkctrl) != PRCM_MOD_EN)
+               ;
+
+       writel(PRCM_MOD_EN, &cmwkup->wkgpio0clkctrl);
+       while (readl(&cmwkup->wkgpio0clkctrl) != PRCM_MOD_EN)
+               ;
+}
+
+/*
+ * Force power domain wake up transition
+ * Ensure that the corresponding interface clock is active before
+ * using the peripheral
+ */
+static void power_domain_wkup_transition(void)
+{
+       writel(PRCM_FORCE_WAKEUP, &cmper->l3clkstctrl);
+       writel(PRCM_FORCE_WAKEUP, &cmper->l4lsclkstctrl);
+       writel(PRCM_FORCE_WAKEUP, &cmwkup->wkclkstctrl);
+       writel(PRCM_FORCE_WAKEUP, &cmper->l4fwclkstctrl);
+       writel(PRCM_FORCE_WAKEUP, &cmper->l3sclkstctrl);
+}
+
+/*
+ * Enable the peripheral clock for required peripherals
+ */
+static void enable_per_clocks(void)
+{
+       /* Enable the control module though RBL would have done it*/
+       writel(PRCM_MOD_EN, &cmwkup->wkctrlclkctrl);
+       while (readl(&cmwkup->wkctrlclkctrl) != PRCM_MOD_EN)
+               ;
+
+       /* Enable the module clock */
+       writel(PRCM_MOD_EN, &cmper->timer2clkctrl);
+       while (readl(&cmper->timer2clkctrl) != PRCM_MOD_EN)
+               ;
+
+       /* Select the Master osc 24 MHZ as Timer2 clock source */
+       writel(0x1, &cmdpll->clktimer2clk);
+
+       /* UART0 */
+       writel(PRCM_MOD_EN, &cmwkup->wkup_uart0ctrl);
+       while (readl(&cmwkup->wkup_uart0ctrl) != PRCM_MOD_EN)
+               ;
+
+       /* UART1 */
+#ifdef CONFIG_SERIAL2
+       writel(PRCM_MOD_EN, &cmper->uart1clkctrl);
+       while (readl(&cmper->uart1clkctrl) != PRCM_MOD_EN)
+               ;
+#endif /* CONFIG_SERIAL2 */
+
+       /* UART2 */
+#ifdef CONFIG_SERIAL3
+       writel(PRCM_MOD_EN, &cmper->uart2clkctrl);
+       while (readl(&cmper->uart2clkctrl) != PRCM_MOD_EN)
+               ;
+#endif /* CONFIG_SERIAL3 */
+
+       /* UART3 */
+#ifdef CONFIG_SERIAL4
+       writel(PRCM_MOD_EN, &cmper->uart3clkctrl);
+       while (readl(&cmper->uart3clkctrl) != PRCM_MOD_EN)
+               ;
+#endif /* CONFIG_SERIAL4 */
+
+       /* UART4 */
+#ifdef CONFIG_SERIAL5
+       writel(PRCM_MOD_EN, &cmper->uart4clkctrl);
+       while (readl(&cmper->uart4clkctrl) != PRCM_MOD_EN)
+               ;
+#endif /* CONFIG_SERIAL5 */
+
+       /* UART5 */
+#ifdef CONFIG_SERIAL6
+       writel(PRCM_MOD_EN, &cmper->uart5clkctrl);
+       while (readl(&cmper->uart5clkctrl) != PRCM_MOD_EN)
+               ;
+#endif /* CONFIG_SERIAL6 */
+
+       /* GPMC */
+       writel(PRCM_MOD_EN, &cmper->gpmcclkctrl);
+       while (readl(&cmper->gpmcclkctrl) != PRCM_MOD_EN)
+               ;
+
+       /* ELM */
+       writel(PRCM_MOD_EN, &cmper->elmclkctrl);
+       while (readl(&cmper->elmclkctrl) != PRCM_MOD_EN)
+               ;
+
+       /* MMC0*/
+       writel(PRCM_MOD_EN, &cmper->mmc0clkctrl);
+       while (readl(&cmper->mmc0clkctrl) != PRCM_MOD_EN)
+               ;
+
+       /* i2c0 */
+       writel(PRCM_MOD_EN, &cmwkup->wkup_i2c0ctrl);
+       while (readl(&cmwkup->wkup_i2c0ctrl) != PRCM_MOD_EN)
+               ;
+
+       /* gpio1 module */
+       writel(PRCM_MOD_EN, &cmper->gpio1clkctrl);
+       while (readl(&cmper->gpio1clkctrl) != PRCM_MOD_EN)
+               ;
+
+       /* gpio2 module */
+       writel(PRCM_MOD_EN, &cmper->gpio2clkctrl);
+       while (readl(&cmper->gpio2clkctrl) != PRCM_MOD_EN)
+               ;
+
+       /* gpio3 module */
+       writel(PRCM_MOD_EN, &cmper->gpio3clkctrl);
+       while (readl(&cmper->gpio3clkctrl) != PRCM_MOD_EN)
+               ;
+
+       /* i2c1 */
+       writel(PRCM_MOD_EN, &cmper->i2c1clkctrl);
+       while (readl(&cmper->i2c1clkctrl) != PRCM_MOD_EN)
+               ;
+
+       /* Ethernet */
+       writel(PRCM_MOD_EN, &cmper->cpgmac0clkctrl);
+       while ((readl(&cmper->cpgmac0clkctrl) & CPGMAC0_IDLE) != PRCM_FUNCTL)
+               ;
+
+       /* spi0 */
+       writel(PRCM_MOD_EN, &cmper->spi0clkctrl);
+       while (readl(&cmper->spi0clkctrl) != PRCM_MOD_EN)
+               ;
+
+       /* RTC */
+       writel(PRCM_MOD_EN, &cmrtc->rtcclkctrl);
+       while (readl(&cmrtc->rtcclkctrl) != PRCM_MOD_EN)
+               ;
+
+       /* MUSB */
+       writel(PRCM_MOD_EN, &cmper->usb0clkctrl);
+       while (readl(&cmper->usb0clkctrl) != PRCM_MOD_EN)
+               ;
+}
+
+static void mpu_pll_config(void)
+{
+       u32 clkmode, clksel, div_m2;
+
+       clkmode = readl(&cmwkup->clkmoddpllmpu);
+       clksel = readl(&cmwkup->clkseldpllmpu);
+       div_m2 = readl(&cmwkup->divm2dpllmpu);
+
+       /* Set the PLL to bypass Mode */
+       writel(PLL_BYPASS_MODE, &cmwkup->clkmoddpllmpu);
+       while (readl(&cmwkup->idlestdpllmpu) != ST_MN_BYPASS)
+               ;
+
+       clksel = clksel & (~CLK_SEL_MASK);
+       clksel = clksel | ((MPUPLL_M << CLK_SEL_SHIFT) | MPUPLL_N);
+       writel(clksel, &cmwkup->clkseldpllmpu);
+
+       div_m2 = div_m2 & ~CLK_DIV_MASK;
+       div_m2 = div_m2 | MPUPLL_M2;
+       writel(div_m2, &cmwkup->divm2dpllmpu);
+
+       clkmode = clkmode | CLK_MODE_SEL;
+       writel(clkmode, &cmwkup->clkmoddpllmpu);
+
+       while (readl(&cmwkup->idlestdpllmpu) != ST_DPLL_CLK)
+               ;
+}
+
+static void core_pll_config(void)
+{
+       u32 clkmode, clksel, div_m4, div_m5, div_m6;
+
+       clkmode = readl(&cmwkup->clkmoddpllcore);
+       clksel = readl(&cmwkup->clkseldpllcore);
+       div_m4 = readl(&cmwkup->divm4dpllcore);
+       div_m5 = readl(&cmwkup->divm5dpllcore);
+       div_m6 = readl(&cmwkup->divm6dpllcore);
+
+       /* Set the PLL to bypass Mode */
+       writel(PLL_BYPASS_MODE, &cmwkup->clkmoddpllcore);
+
+       while (readl(&cmwkup->idlestdpllcore) != ST_MN_BYPASS)
+               ;
+
+       clksel = clksel & (~CLK_SEL_MASK);
+       clksel = clksel | ((COREPLL_M << CLK_SEL_SHIFT) | COREPLL_N);
+       writel(clksel, &cmwkup->clkseldpllcore);
+
+       div_m4 = div_m4 & ~CLK_DIV_MASK;
+       div_m4 = div_m4 | COREPLL_M4;
+       writel(div_m4, &cmwkup->divm4dpllcore);
+
+       div_m5 = div_m5 & ~CLK_DIV_MASK;
+       div_m5 = div_m5 | COREPLL_M5;
+       writel(div_m5, &cmwkup->divm5dpllcore);
+
+       div_m6 = div_m6 & ~CLK_DIV_MASK;
+       div_m6 = div_m6 | COREPLL_M6;
+       writel(div_m6, &cmwkup->divm6dpllcore);
+
+       clkmode = clkmode | CLK_MODE_SEL;
+       writel(clkmode, &cmwkup->clkmoddpllcore);
+
+       while (readl(&cmwkup->idlestdpllcore) != ST_DPLL_CLK)
+               ;
+}
+
+static void per_pll_config(void)
+{
+       u32 clkmode, clksel, div_m2;
+
+       clkmode = readl(&cmwkup->clkmoddpllper);
+       clksel = readl(&cmwkup->clkseldpllper);
+       div_m2 = readl(&cmwkup->divm2dpllper);
+
+       /* Set the PLL to bypass Mode */
+       writel(PLL_BYPASS_MODE, &cmwkup->clkmoddpllper);
+
+       while (readl(&cmwkup->idlestdpllper) != ST_MN_BYPASS)
+               ;
+
+       clksel = clksel & (~CLK_SEL_MASK);
+       clksel = clksel | ((PERPLL_M << CLK_SEL_SHIFT) | PERPLL_N);
+       writel(clksel, &cmwkup->clkseldpllper);
+
+       div_m2 = div_m2 & ~CLK_DIV2_MASK;
+       div_m2 = div_m2 | PERPLL_M2;
+       writel(div_m2, &cmwkup->divm2dpllper);
+
+       clkmode = clkmode | CLK_MODE_SEL;
+       writel(clkmode, &cmwkup->clkmoddpllper);
+
+       while (readl(&cmwkup->idlestdpllper) != ST_DPLL_CLK)
+               ;
+
+       writel(DPLL_CLKDCOLDO_GATE_CTRL, &cmwkup->clkdcoldodpllper);
+}
+
+void ddr_pll_config(unsigned int ddrpll_m)
+{
+       u32 clkmode, clksel, div_m2;
+
+       clkmode = readl(&cmwkup->clkmoddpllddr);
+       clksel = readl(&cmwkup->clkseldpllddr);
+       div_m2 = readl(&cmwkup->divm2dpllddr);
+
+       /* Set the PLL to bypass Mode */
+       clkmode = (clkmode & CLK_MODE_MASK) | PLL_BYPASS_MODE;
+       writel(clkmode, &cmwkup->clkmoddpllddr);
+
+       /* Wait till bypass mode is enabled */
+       while ((readl(&cmwkup->idlestdpllddr) & ST_MN_BYPASS)
+                               != ST_MN_BYPASS)
+               ;
+
+       clksel = clksel & (~CLK_SEL_MASK);
+       clksel = clksel | ((ddrpll_m << CLK_SEL_SHIFT) | DDRPLL_N);
+       writel(clksel, &cmwkup->clkseldpllddr);
+
+       div_m2 = div_m2 & CLK_DIV_SEL;
+       div_m2 = div_m2 | DDRPLL_M2;
+       writel(div_m2, &cmwkup->divm2dpllddr);
+
+       clkmode = (clkmode & CLK_MODE_MASK) | CLK_MODE_SEL;
+       writel(clkmode, &cmwkup->clkmoddpllddr);
+
+       /* Wait till dpll is locked */
+       while ((readl(&cmwkup->idlestdpllddr) & ST_DPLL_CLK) != ST_DPLL_CLK)
+               ;
+}
+
+void enable_emif_clocks(void)
+{
+       /* Enable the  EMIF_FW Functional clock */
+       writel(PRCM_MOD_EN, &cmper->emiffwclkctrl);
+       /* Enable EMIF0 Clock */
+       writel(PRCM_MOD_EN, &cmper->emifclkctrl);
+       /* Poll if module is functional */
+       while ((readl(&cmper->emifclkctrl)) != PRCM_MOD_EN)
+               ;
+}
+
+/*
+ * Configure the PLL/PRCM for necessary peripherals
+ */
+void pll_init()
+{
+       mpu_pll_config();
+       core_pll_config();
+       per_pll_config();
+
+       /* Enable the required interconnect clocks */
+       enable_interface_clocks();
+
+       /* Power domain wake up transition */
+       power_domain_wkup_transition();
+
+       /* Enable the required peripherals */
+       enable_per_clocks();
+}
diff --git a/arch/arm/cpu/armv7/am33xx/clock-ti814x.c 
b/arch/arm/cpu/armv7/am33xx/clock-ti814x.c
new file mode 100644
index 0000000..2b63e84
--- /dev/null
+++ b/arch/arm/cpu/armv7/am33xx/clock-ti814x.c
@@ -0,0 +1,234 @@
+/*
+ * clock.c
+ *
+ * clocks for TI814X based boards
+ *
+ * Copyright (C) 2011, Texas Instruments, Incorporated - http://www.ti.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.
+ */
+
+#include <common.h>
+#include <asm/arch/cpu.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/hardware.h>
+#include <asm/io.h>
+
+/*
+ * Enable the peripheral clock for required peripherals
+ */
+static void enable_per_clocks(void)
+{
+       u32 temp;
+
+       /* Selects OSC0 (20MHz) for DMTIMER1 */
+       temp = readl(DMTIMER_CLKSRC);
+       temp &= ~(0x7 << 3);
+       temp |= (0x4 << 3);
+       writel(temp, DMTIMER_CLKSRC);
+
+       writel(0x2, DM_TIMER1_BASE + 0x54);
+       while (readl(DM_TIMER1_BASE + 0x10) & 1)
+               ;
+
+       writel(0x1, DM_TIMER1_BASE + 0x38);
+
+       /* UARTs */
+       writel(0x2, CM_ALWON_UART_0_CLKCTRL);
+       while (readl(CM_ALWON_UART_0_CLKCTRL) != 0x2)
+               ;
+
+       /* HSMMC */
+       writel(0x2, CM_ALWON_HSMMC_CLKCTRL);
+       while (readl(CM_ALWON_HSMMC_CLKCTRL) != 0x2)
+               ;
+}
+
+/*
+ * select the HS1 or HS2 for DCO Freq
+ * return : CLKCTRL
+ */
+static u32 pll_dco_freq_sel(u32 clkout_dco)
+{
+       if (clkout_dco >= DCO_HS2_MIN && clkout_dco < DCO_HS2_MAX)
+               return SELFREQDCO_HS2;
+       else if (clkout_dco >= DCO_HS1_MIN && clkout_dco < DCO_HS1_MAX)
+               return SELFREQDCO_HS1;
+       else
+               return -1;
+
+}
+
+/*
+ * select the sigma delta config
+ * return: sigma delta val
+ */
+static u32 pll_sigma_delta_val(u32 clkout_dco)
+{
+       u32 sig_val = 0;
+       float frac_div;
+
+       frac_div = (float) clkout_dco / 250;
+       frac_div = frac_div + 0.90;
+       sig_val = (int)frac_div;
+       sig_val = sig_val << 24;
+
+       return sig_val;
+}
+
+/*
+ * configure individual ADPLLJ
+ */
+static void pll_config(u32 base, u32 n, u32 m, u32 m2,
+                      u32 clkctrl_val, int adpllj)
+{
+       u32 m2nval, mn2val, read_clkctrl = 0, clkout_dco = 0;
+       u32 sig_val = 0, hs_mod = 0;
+
+       m2nval = (m2 << 16) | n;
+       mn2val = m;
+
+       /* calculate clkout_dco */
+       clkout_dco = ((OSC_0_FREQ / (n+1)) * m);
+
+       /* sigma delta & Hs mode selection skip for ADPLLS*/
+       if (adpllj) {
+               sig_val = pll_sigma_delta_val(clkout_dco);
+               hs_mod = pll_dco_freq_sel(clkout_dco);
+       }
+
+       /* by-pass pll */
+       read_clkctrl = readl(base + ADPLLJ_CLKCTRL);
+       writel((read_clkctrl | 0x00800000), (base + ADPLLJ_CLKCTRL));
+       while ((readl(base + ADPLLJ_STATUS) & 0x101) != 0x101)
+               ;
+
+       /* Clear TINITZ */
+       read_clkctrl = readl(base + ADPLLJ_CLKCTRL);
+       writel((read_clkctrl & 0xfffffffe), (base + ADPLLJ_CLKCTRL));
+
+       /*
+        * ref_clk = 20/(n + 1);
+        * clkout_dco = ref_clk * m;
+        * clk_out = clkout_dco/m2;
+       */
+
+       read_clkctrl = readl(base + ADPLLJ_CLKCTRL) & 0xffffe3ff;
+       writel(m2nval, (base + ADPLLJ_M2NDIV));
+       writel(mn2val, (base + ADPLLJ_MN2DIV));
+
+       /* Skip for modena(ADPLLS) */
+       if (adpllj) {
+               writel(sig_val, (base + ADPLLJ_FRACDIV));
+               writel((read_clkctrl | hs_mod), (base + ADPLLJ_CLKCTRL));
+       }
+
+       /* Load M2, N2 dividers of ADPLL */
+       writel(0x1, (base + ADPLLJ_TENABLEDIV));
+       writel(0x0, (base + ADPLLJ_TENABLEDIV));
+
+       /* Load M, N dividers of ADPLL */
+       writel(0x1, (base + ADPLLJ_TENABLE));
+       writel(0x0, (base + ADPLLJ_TENABLE));
+
+       /* Configure CLKDCOLDOEN,CLKOUTLDOEN,CLKOUT Enable BITS */
+       read_clkctrl = readl(base + ADPLLJ_CLKCTRL) & 0xdfe5ffff;
+       if (adpllj)
+               writel((read_clkctrl | ADPLLJ_CLKCTRL_CLKDCO),
+                                               base + ADPLLJ_CLKCTRL);
+
+       /* Enable TINTZ and disable IDLE(PLL in Active & Locked Mode */
+       read_clkctrl = readl(base + ADPLLJ_CLKCTRL) & 0xff7fffff;
+       writel((read_clkctrl | 0x1), base + ADPLLJ_CLKCTRL);
+
+       /* Wait for phase and freq lock */
+       while ((readl(base + ADPLLJ_STATUS) & 0x600) != 0x600)
+               ;
+
+}
+
+static void unlock_pll_control_mmr(void)
+{
+       /* TRM 2.10.1.4 and 3.2.7-3.2.11 */
+       writel(0x1EDA4C3D, 0x481C5040);
+       writel(0x2FF1AC2B, 0x48140060);
+       writel(0xF757FDC0, 0x48140064);
+       writel(0xE2BC3A6D, 0x48140068);
+       writel(0x1EBF131D, 0x4814006c);
+       writel(0x6F361E05, 0x48140070);
+}
+
+static void mpu_pll_config(void)
+{
+       pll_config(MPU_PLL_BASE, MPU_N, MPU_M, MPU_M2, MPU_CLKCTRL, 0);
+}
+
+static void l3_pll_config(void)
+{
+       u32 l3_osc_src, rd_osc_src = 0;
+
+       l3_osc_src = L3_OSC_SRC;
+       rd_osc_src = readl(OSC_SRC_CTRL);
+
+       if (OSC_SRC0 == l3_osc_src)
+               writel((rd_osc_src & 0xfffffffe)|0x0, OSC_SRC_CTRL);
+       else
+               writel((rd_osc_src & 0xfffffffe)|0x1, OSC_SRC_CTRL);
+
+       pll_config(L3_PLL_BASE, L3_N, L3_M, L3_M2, L3_CLKCTRL, 1);
+}
+
+void ddr_pll_config(unsigned int ddrpll_m)
+{
+       pll_config(DDR_PLL_BASE, DDR_N, DDR_M, DDR_M2, DDR_CLKCTRL, 1);
+}
+
+void enable_dmm_clocks(void)
+{
+       writel(0x2, CM_DEFAULT_FW_CLKCTRL);
+       writel(0x2, CM_DEFAULT_L3_FAST_CLKSTCTRL);
+       while ((readl(CM_DEFAULT_L3_FAST_CLKSTCTRL) & 0x300) != 0x300)
+               ;
+       writel(0x2, CM_ALWON_L3_SLOW_CLKSTCTRL);
+       while ((readl(CM_ALWON_L3_SLOW_CLKSTCTRL) & 0x2100) != 0x2100)
+               ;
+       writel(0x2, CM_DEFAULT_DMM_CLKCTRL);
+       while ((readl(CM_DEFAULT_DMM_CLKCTRL)) != 0x2)
+               ;
+}
+
+void enable_emif_clocks(void)
+{
+       writel(0x2, CM_DEFAULT_EMIF_0_CLKCTRL);
+       while ((readl(CM_DEFAULT_EMIF_0_CLKCTRL)) != 0x2)
+               ;
+       writel(0x2, CM_DEFAULT_EMIF_1_CLKCTRL);
+       while ((readl(CM_DEFAULT_EMIF_1_CLKCTRL)) != 0x2)
+               ;
+}
+
+/*
+ * Configure the PLL/PRCM for necessary peripherals
+ */
+void pll_init()
+{
+       unlock_pll_control_mmr();
+
+       /* Enable the control module */
+       writel(0x2, CM_ALWON_CONTROL_CLKCTRL);
+
+       mpu_pll_config();
+
+       l3_pll_config();
+
+       /* Enable the required peripherals */
+       enable_per_clocks();
+}
diff --git a/arch/arm/cpu/armv7/am33xx/clock.c 
b/arch/arm/cpu/armv7/am33xx/clock.c
deleted file mode 100644
index d7d98d1..0000000
--- a/arch/arm/cpu/armv7/am33xx/clock.c
+++ /dev/null
@@ -1,374 +0,0 @@
-/*
- * clock.c
- *
- * clocks for AM33XX based boards
- *
- * Copyright (C) 2011, Texas Instruments, Incorporated - http://www.ti.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.
- */
-
-#include <common.h>
-#include <asm/arch/cpu.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/hardware.h>
-#include <asm/io.h>
-
-#define PRCM_MOD_EN            0x2
-#define PRCM_FORCE_WAKEUP      0x2
-#define PRCM_FUNCTL            0x0
-
-#define PRCM_EMIF_CLK_ACTIVITY BIT(2)
-#define PRCM_L3_GCLK_ACTIVITY  BIT(4)
-
-#define PLL_BYPASS_MODE                0x4
-#define ST_MN_BYPASS           0x00000100
-#define ST_DPLL_CLK            0x00000001
-#define CLK_SEL_MASK           0x7ffff
-#define CLK_DIV_MASK           0x1f
-#define CLK_DIV2_MASK          0x7f
-#define CLK_SEL_SHIFT          0x8
-#define CLK_MODE_SEL           0x7
-#define CLK_MODE_MASK          0xfffffff8
-#define CLK_DIV_SEL            0xFFFFFFE0
-#define CPGMAC0_IDLE           0x30000
-#define DPLL_CLKDCOLDO_GATE_CTRL        0x300
-
-const struct cm_perpll *cmper = (struct cm_perpll *)CM_PER;
-const struct cm_wkuppll *cmwkup = (struct cm_wkuppll *)CM_WKUP;
-const struct cm_dpll *cmdpll = (struct cm_dpll *)CM_DPLL;
-const struct cm_rtc *cmrtc = (struct cm_rtc *)CM_RTC;
-
-static void enable_interface_clocks(void)
-{
-       /* Enable all the Interconnect Modules */
-       writel(PRCM_MOD_EN, &cmper->l3clkctrl);
-       while (readl(&cmper->l3clkctrl) != PRCM_MOD_EN)
-               ;
-
-       writel(PRCM_MOD_EN, &cmper->l4lsclkctrl);
-       while (readl(&cmper->l4lsclkctrl) != PRCM_MOD_EN)
-               ;
-
-       writel(PRCM_MOD_EN, &cmper->l4fwclkctrl);
-       while (readl(&cmper->l4fwclkctrl) != PRCM_MOD_EN)
-               ;
-
-       writel(PRCM_MOD_EN, &cmwkup->wkl4wkclkctrl);
-       while (readl(&cmwkup->wkl4wkclkctrl) != PRCM_MOD_EN)
-               ;
-
-       writel(PRCM_MOD_EN, &cmper->l3instrclkctrl);
-       while (readl(&cmper->l3instrclkctrl) != PRCM_MOD_EN)
-               ;
-
-       writel(PRCM_MOD_EN, &cmper->l4hsclkctrl);
-       while (readl(&cmper->l4hsclkctrl) != PRCM_MOD_EN)
-               ;
-
-       writel(PRCM_MOD_EN, &cmwkup->wkgpio0clkctrl);
-       while (readl(&cmwkup->wkgpio0clkctrl) != PRCM_MOD_EN)
-               ;
-}
-
-/*
- * Force power domain wake up transition
- * Ensure that the corresponding interface clock is active before
- * using the peripheral
- */
-static void power_domain_wkup_transition(void)
-{
-       writel(PRCM_FORCE_WAKEUP, &cmper->l3clkstctrl);
-       writel(PRCM_FORCE_WAKEUP, &cmper->l4lsclkstctrl);
-       writel(PRCM_FORCE_WAKEUP, &cmwkup->wkclkstctrl);
-       writel(PRCM_FORCE_WAKEUP, &cmper->l4fwclkstctrl);
-       writel(PRCM_FORCE_WAKEUP, &cmper->l3sclkstctrl);
-}
-
-/*
- * Enable the peripheral clock for required peripherals
- */
-static void enable_per_clocks(void)
-{
-       /* Enable the control module though RBL would have done it*/
-       writel(PRCM_MOD_EN, &cmwkup->wkctrlclkctrl);
-       while (readl(&cmwkup->wkctrlclkctrl) != PRCM_MOD_EN)
-               ;
-
-       /* Enable the module clock */
-       writel(PRCM_MOD_EN, &cmper->timer2clkctrl);
-       while (readl(&cmper->timer2clkctrl) != PRCM_MOD_EN)
-               ;
-
-       /* Select the Master osc 24 MHZ as Timer2 clock source */
-       writel(0x1, &cmdpll->clktimer2clk);
-
-       /* UART0 */
-       writel(PRCM_MOD_EN, &cmwkup->wkup_uart0ctrl);
-       while (readl(&cmwkup->wkup_uart0ctrl) != PRCM_MOD_EN)
-               ;
-
-       /* UART1 */
-#ifdef CONFIG_SERIAL2
-       writel(PRCM_MOD_EN, &cmper->uart1clkctrl);
-       while (readl(&cmper->uart1clkctrl) != PRCM_MOD_EN)
-               ;
-#endif /* CONFIG_SERIAL2 */
-
-       /* UART2 */
-#ifdef CONFIG_SERIAL3
-       writel(PRCM_MOD_EN, &cmper->uart2clkctrl);
-       while (readl(&cmper->uart2clkctrl) != PRCM_MOD_EN)
-               ;
-#endif /* CONFIG_SERIAL3 */
-
-       /* UART3 */
-#ifdef CONFIG_SERIAL4
-       writel(PRCM_MOD_EN, &cmper->uart3clkctrl);
-       while (readl(&cmper->uart3clkctrl) != PRCM_MOD_EN)
-               ;
-#endif /* CONFIG_SERIAL4 */
-
-       /* UART4 */
-#ifdef CONFIG_SERIAL5
-       writel(PRCM_MOD_EN, &cmper->uart4clkctrl);
-       while (readl(&cmper->uart4clkctrl) != PRCM_MOD_EN)
-               ;
-#endif /* CONFIG_SERIAL5 */
-
-       /* UART5 */
-#ifdef CONFIG_SERIAL6
-       writel(PRCM_MOD_EN, &cmper->uart5clkctrl);
-       while (readl(&cmper->uart5clkctrl) != PRCM_MOD_EN)
-               ;
-#endif /* CONFIG_SERIAL6 */
-
-       /* GPMC */
-       writel(PRCM_MOD_EN, &cmper->gpmcclkctrl);
-       while (readl(&cmper->gpmcclkctrl) != PRCM_MOD_EN)
-               ;
-
-       /* ELM */
-       writel(PRCM_MOD_EN, &cmper->elmclkctrl);
-       while (readl(&cmper->elmclkctrl) != PRCM_MOD_EN)
-               ;
-
-       /* MMC0*/
-       writel(PRCM_MOD_EN, &cmper->mmc0clkctrl);
-       while (readl(&cmper->mmc0clkctrl) != PRCM_MOD_EN)
-               ;
-
-       /* i2c0 */
-       writel(PRCM_MOD_EN, &cmwkup->wkup_i2c0ctrl);
-       while (readl(&cmwkup->wkup_i2c0ctrl) != PRCM_MOD_EN)
-               ;
-
-       /* gpio1 module */
-       writel(PRCM_MOD_EN, &cmper->gpio1clkctrl);
-       while (readl(&cmper->gpio1clkctrl) != PRCM_MOD_EN)
-               ;
-
-       /* gpio2 module */
-       writel(PRCM_MOD_EN, &cmper->gpio2clkctrl);
-       while (readl(&cmper->gpio2clkctrl) != PRCM_MOD_EN)
-               ;
-
-       /* gpio3 module */
-       writel(PRCM_MOD_EN, &cmper->gpio3clkctrl);
-       while (readl(&cmper->gpio3clkctrl) != PRCM_MOD_EN)
-               ;
-
-       /* i2c1 */
-       writel(PRCM_MOD_EN, &cmper->i2c1clkctrl);
-       while (readl(&cmper->i2c1clkctrl) != PRCM_MOD_EN)
-               ;
-
-       /* Ethernet */
-       writel(PRCM_MOD_EN, &cmper->cpgmac0clkctrl);
-       while ((readl(&cmper->cpgmac0clkctrl) & CPGMAC0_IDLE) != PRCM_FUNCTL)
-               ;
-
-       /* spi0 */
-       writel(PRCM_MOD_EN, &cmper->spi0clkctrl);
-       while (readl(&cmper->spi0clkctrl) != PRCM_MOD_EN)
-               ;
-
-       /* RTC */
-       writel(PRCM_MOD_EN, &cmrtc->rtcclkctrl);
-       while (readl(&cmrtc->rtcclkctrl) != PRCM_MOD_EN)
-               ;
-
-       /* MUSB */
-       writel(PRCM_MOD_EN, &cmper->usb0clkctrl);
-       while (readl(&cmper->usb0clkctrl) != PRCM_MOD_EN)
-               ;
-}
-
-static void mpu_pll_config(void)
-{
-       u32 clkmode, clksel, div_m2;
-
-       clkmode = readl(&cmwkup->clkmoddpllmpu);
-       clksel = readl(&cmwkup->clkseldpllmpu);
-       div_m2 = readl(&cmwkup->divm2dpllmpu);
-
-       /* Set the PLL to bypass Mode */
-       writel(PLL_BYPASS_MODE, &cmwkup->clkmoddpllmpu);
-       while (readl(&cmwkup->idlestdpllmpu) != ST_MN_BYPASS)
-               ;
-
-       clksel = clksel & (~CLK_SEL_MASK);
-       clksel = clksel | ((MPUPLL_M << CLK_SEL_SHIFT) | MPUPLL_N);
-       writel(clksel, &cmwkup->clkseldpllmpu);
-
-       div_m2 = div_m2 & ~CLK_DIV_MASK;
-       div_m2 = div_m2 | MPUPLL_M2;
-       writel(div_m2, &cmwkup->divm2dpllmpu);
-
-       clkmode = clkmode | CLK_MODE_SEL;
-       writel(clkmode, &cmwkup->clkmoddpllmpu);
-
-       while (readl(&cmwkup->idlestdpllmpu) != ST_DPLL_CLK)
-               ;
-}
-
-static void core_pll_config(void)
-{
-       u32 clkmode, clksel, div_m4, div_m5, div_m6;
-
-       clkmode = readl(&cmwkup->clkmoddpllcore);
-       clksel = readl(&cmwkup->clkseldpllcore);
-       div_m4 = readl(&cmwkup->divm4dpllcore);
-       div_m5 = readl(&cmwkup->divm5dpllcore);
-       div_m6 = readl(&cmwkup->divm6dpllcore);
-
-       /* Set the PLL to bypass Mode */
-       writel(PLL_BYPASS_MODE, &cmwkup->clkmoddpllcore);
-
-       while (readl(&cmwkup->idlestdpllcore) != ST_MN_BYPASS)
-               ;
-
-       clksel = clksel & (~CLK_SEL_MASK);
-       clksel = clksel | ((COREPLL_M << CLK_SEL_SHIFT) | COREPLL_N);
-       writel(clksel, &cmwkup->clkseldpllcore);
-
-       div_m4 = div_m4 & ~CLK_DIV_MASK;
-       div_m4 = div_m4 | COREPLL_M4;
-       writel(div_m4, &cmwkup->divm4dpllcore);
-
-       div_m5 = div_m5 & ~CLK_DIV_MASK;
-       div_m5 = div_m5 | COREPLL_M5;
-       writel(div_m5, &cmwkup->divm5dpllcore);
-
-       div_m6 = div_m6 & ~CLK_DIV_MASK;
-       div_m6 = div_m6 | COREPLL_M6;
-       writel(div_m6, &cmwkup->divm6dpllcore);
-
-       clkmode = clkmode | CLK_MODE_SEL;
-       writel(clkmode, &cmwkup->clkmoddpllcore);
-
-       while (readl(&cmwkup->idlestdpllcore) != ST_DPLL_CLK)
-               ;
-}
-
-static void per_pll_config(void)
-{
-       u32 clkmode, clksel, div_m2;
-
-       clkmode = readl(&cmwkup->clkmoddpllper);
-       clksel = readl(&cmwkup->clkseldpllper);
-       div_m2 = readl(&cmwkup->divm2dpllper);
-
-       /* Set the PLL to bypass Mode */
-       writel(PLL_BYPASS_MODE, &cmwkup->clkmoddpllper);
-
-       while (readl(&cmwkup->idlestdpllper) != ST_MN_BYPASS)
-               ;
-
-       clksel = clksel & (~CLK_SEL_MASK);
-       clksel = clksel | ((PERPLL_M << CLK_SEL_SHIFT) | PERPLL_N);
-       writel(clksel, &cmwkup->clkseldpllper);
-
-       div_m2 = div_m2 & ~CLK_DIV2_MASK;
-       div_m2 = div_m2 | PERPLL_M2;
-       writel(div_m2, &cmwkup->divm2dpllper);
-
-       clkmode = clkmode | CLK_MODE_SEL;
-       writel(clkmode, &cmwkup->clkmoddpllper);
-
-       while (readl(&cmwkup->idlestdpllper) != ST_DPLL_CLK)
-               ;
-
-       writel(DPLL_CLKDCOLDO_GATE_CTRL, &cmwkup->clkdcoldodpllper);
-}
-
-void ddr_pll_config(unsigned int ddrpll_m)
-{
-       u32 clkmode, clksel, div_m2;
-
-       clkmode = readl(&cmwkup->clkmoddpllddr);
-       clksel = readl(&cmwkup->clkseldpllddr);
-       div_m2 = readl(&cmwkup->divm2dpllddr);
-
-       /* Set the PLL to bypass Mode */
-       clkmode = (clkmode & CLK_MODE_MASK) | PLL_BYPASS_MODE;
-       writel(clkmode, &cmwkup->clkmoddpllddr);
-
-       /* Wait till bypass mode is enabled */
-       while ((readl(&cmwkup->idlestdpllddr) & ST_MN_BYPASS)
-                               != ST_MN_BYPASS)
-               ;
-
-       clksel = clksel & (~CLK_SEL_MASK);
-       clksel = clksel | ((ddrpll_m << CLK_SEL_SHIFT) | DDRPLL_N);
-       writel(clksel, &cmwkup->clkseldpllddr);
-
-       div_m2 = div_m2 & CLK_DIV_SEL;
-       div_m2 = div_m2 | DDRPLL_M2;
-       writel(div_m2, &cmwkup->divm2dpllddr);
-
-       clkmode = (clkmode & CLK_MODE_MASK) | CLK_MODE_SEL;
-       writel(clkmode, &cmwkup->clkmoddpllddr);
-
-       /* Wait till dpll is locked */
-       while ((readl(&cmwkup->idlestdpllddr) & ST_DPLL_CLK) != ST_DPLL_CLK)
-               ;
-}
-
-void enable_emif_clocks(void)
-{
-       /* Enable the  EMIF_FW Functional clock */
-       writel(PRCM_MOD_EN, &cmper->emiffwclkctrl);
-       /* Enable EMIF0 Clock */
-       writel(PRCM_MOD_EN, &cmper->emifclkctrl);
-       /* Poll if module is functional */
-       while ((readl(&cmper->emifclkctrl)) != PRCM_MOD_EN)
-               ;
-}
-
-/*
- * Configure the PLL/PRCM for necessary peripherals
- */
-void pll_init()
-{
-       mpu_pll_config();
-       core_pll_config();
-       per_pll_config();
-
-       /* Enable the required interconnect clocks */
-       enable_interface_clocks();
-
-       /* Power domain wake up transition */
-       power_domain_wkup_transition();
-
-       /* Enable the required peripherals */
-       enable_per_clocks();
-}
diff --git a/arch/arm/include/asm/arch-am33xx/clock.h 
b/arch/arm/include/asm/arch-am33xx/clock.h
index 872ff82..786eecf 100644
--- a/arch/arm/include/asm/arch-am33xx/clock.h
+++ b/arch/arm/include/asm/arch-am33xx/clock.h
@@ -19,6 +19,10 @@
 #ifndef _CLOCKS_H_
 #define _CLOCKS_H_
 
+#ifdef CONFIG_AM33XX
 #include <asm/arch/clocks_am33xx.h>
+#elif defined(CONFIG_TI814X)
+#include <asm/arch/clocks_ti814x.h>
+#endif
 
 #endif
diff --git a/arch/arm/include/asm/arch-am33xx/clocks_ti814x.h 
b/arch/arm/include/asm/arch-am33xx/clocks_ti814x.h
new file mode 100644
index 0000000..4d37470
--- /dev/null
+++ b/arch/arm/include/asm/arch-am33xx/clocks_ti814x.h
@@ -0,0 +1,112 @@
+/*
+ * (C) Copyright 2006-2008
+ * Texas Instruments, <www.ti.com>
+ * Richard Woodruff <r-woodru...@ti.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.
+ *
+ * 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
+ */
+#ifndef _CLOCKS_TI814X_H_
+#define _CLOCKS_TI814X_H_
+
+#define DDR_PLL_400            /* Values supported 400,533 */
+
+/* CLK_SRC */
+#define OSC_SRC0               0
+#define OSC_SRC1               1
+
+#define L3_OSC_SRC             OSC_SRC0
+
+#define OSC_0_FREQ             20
+
+#define DCO_HS2_MIN            500
+#define DCO_HS2_MAX            1000
+#define DCO_HS1_MIN            1000
+#define DCO_HS1_MAX            2000
+
+#define SELFREQDCO_HS2         0x00000801
+#define SELFREQDCO_HS1         0x00001001
+
+#define MPU_N                  0x1
+#define MPU_M                  0x3C
+#define MPU_M2                 1
+#define MPU_CLKCTRL            0x1
+
+#define L3_N                   19
+#define L3_M                   880
+#define L3_M2                  4
+#define L3_CLKCTRL             0x801
+
+#define DDR_N                  19
+#define DDR_M                  666
+#define DDR_M2                 2
+#define DDR_CLKCTRL            0x801
+
+/* Clocks are derived from ADPLLJ */
+#define ADPLLJ_CLKCTRL         0x4
+#define ADPLLJ_TENABLE         0x8
+#define ADPLLJ_TENABLEDIV      0xC
+#define ADPLLJ_M2NDIV          0x10
+#define ADPLLJ_MN2DIV          0x14
+#define ADPLLJ_FRACDIV         0x18
+#define ADPLLJ_STATUS          0x24
+
+/* ADPLLJ register values */
+#define ADPLLJ_CLKCTRL_HS2     0x00000801 /* HS2 mode, TINT2 = 1 */
+#define ADPLLJ_CLKCTRL_HS1     0x00001001 /* HS1 mode, TINT2 = 1 */
+#define ADPLLJ_CLKCTRL_CLKDCO  0x201A0000
+
+#define MPU_PLL_BASE                   (PLL_SUBSYS_BASE + 0x048)
+#define L3_PLL_BASE                    (PLL_SUBSYS_BASE + 0x110)
+#define USB_PLL_BASE                   (PLL_SUBSYS_BASE + 0x260)
+#define DDR_PLL_BASE                   (PLL_SUBSYS_BASE + 0x290)
+
+#define OSC_SRC_CTRL                   (PLL_SUBSYS_BASE + 0x2C0)
+#define OSC_SRC                                (PLL_SUBSYS_BASE + 0x2C0)
+#define ARM_CLKSRC                     (PLL_SUBSYS_BASE + 0x2C4)
+#define MLB_ATL_CLKSRC                 (PLL_SUBSYS_BASE + 0x2CC)
+#define DMTIMER_CLKSRC                 (PLL_SUBSYS_BASE + 0x2E0)
+#define CLKOUT_MUX                     (PLL_SUBSYS_BASE + 0x2E4)
+#define SYSCLK18_SRC                   (PLL_SUBSYS_BASE + 0x2F0)
+#define WDT0_CLKSRC                    (PLL_SUBSYS_BASE + 0x2F4)
+
+/* PRCM */
+#define CM_DPLL_OFFSET                 (PRCM_BASE + 0x0300)
+
+/*EMIF4 PRCM Defintion*/
+#define CM_DEFAULT_L3_FAST_CLKSTCTRL   (PRCM_BASE + 0x0508)
+#define CM_DEFAULT_EMIF_0_CLKCTRL      (PRCM_BASE + 0x0520)
+#define CM_DEFAULT_EMIF_1_CLKCTRL      (PRCM_BASE + 0x0524)
+#define CM_DEFAULT_DMM_CLKCTRL         (PRCM_BASE + 0x0528)
+#define CM_DEFAULT_FW_CLKCTRL          (PRCM_BASE + 0x052C)
+
+#define CM_ALWON_L3_SLOW_CLKSTCTRL     (PRCM_BASE + 0x1400)
+#define CM_ALWON_UART_0_CLKCTRL                (PRCM_BASE + 0x1550)
+#define CM_ALWON_UART_1_CLKCTRL                (PRCM_BASE + 0x1554)
+#define CM_ALWON_UART_2_CLKCTRL                (PRCM_BASE + 0x1558)
+#define CM_ALWON_GPIO_0_CLKCTRL                (PRCM_BASE + 0x155c)
+#define CM_ALWON_GPIO_0_OPTFCLKEN_DBCLK (PRCM_BASE + 0x155c)
+#define CM_ALWON_WDTIMER_CLKCTRL       (PRCM_BASE + 0x158C)
+#define CM_ALWON_SPI_CLKCTRL           (PRCM_BASE + 0x1590)
+#define CM_ALWON_CONTROL_CLKCTRL       (PRCM_BASE + 0x15C4)
+#define CM_ALWON_HSMMC_CLKCTRL         (PRCM_BASE + 0x1620)
+
+#define CM_DLL_CTRL_NO_OVERRIDE                0
+
+extern void pll_init(void);
+extern void enable_emif_clocks(void);
+extern void enable_dmm_clocks(void);
+
+#endif /* endif _CLOCKS_TI814X_H_ */
-- 
1.7.9.5

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to