summaryrefslogtreecommitdiffstats
path: root/patches/barebox-2012.07.0/0001-WIP-beaglebone-add-support-for-AM335x-and-board.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/barebox-2012.07.0/0001-WIP-beaglebone-add-support-for-AM335x-and-board.patch')
-rw-r--r--patches/barebox-2012.07.0/0001-WIP-beaglebone-add-support-for-AM335x-and-board.patch3688
1 files changed, 0 insertions, 3688 deletions
diff --git a/patches/barebox-2012.07.0/0001-WIP-beaglebone-add-support-for-AM335x-and-board.patch b/patches/barebox-2012.07.0/0001-WIP-beaglebone-add-support-for-AM335x-and-board.patch
deleted file mode 100644
index 4959538..0000000
--- a/patches/barebox-2012.07.0/0001-WIP-beaglebone-add-support-for-AM335x-and-board.patch
+++ /dev/null
@@ -1,3688 +0,0 @@
-From 0513a2da4d48ed0c573384335f7f2ff71b44422d Mon Sep 17 00:00:00 2001
-From: Jan Luebbe <jluebbe@debian.org>
-Date: Sat, 23 Jun 2012 21:39:36 +0200
-Subject: [PATCH] WIP beaglebone: add support for AM335x and board
-
-Signed-off-by: Jan Luebbe <jluebbe@debian.org>
----
- Makefile | 5 +
- arch/arm/Makefile | 1 +
- arch/arm/boards/beaglebone/Makefile | 1 +
- arch/arm/boards/beaglebone/board.c | 509 ++++++++++++++
- arch/arm/boards/beaglebone/clock.h | 36 +
- arch/arm/boards/beaglebone/clocks_am335x.h | 65 ++
- arch/arm/boards/beaglebone/clocks_ti814x.h | 72 ++
- arch/arm/boards/beaglebone/clocks_ti816x.h | 162 +++++
- arch/arm/boards/beaglebone/common_def.h | 48 ++
- arch/arm/boards/beaglebone/config.h | 24 +
- arch/arm/boards/beaglebone/cpu.h | 726 ++++++++++++++++++++
- arch/arm/boards/beaglebone/ddr_defs.h | 362 ++++++++++
- arch/arm/boards/beaglebone/env/boot/sd | 16 +
- arch/arm/boards/beaglebone/env/init/bootargs-base | 8 +
- arch/arm/boards/beaglebone/env/init/general | 18 +
- arch/arm/boards/beaglebone/hardware.h | 117 ++++
- arch/arm/boards/beaglebone/mux.c | 707 +++++++++++++++++++
- arch/arm/boards/beaglebone/pll.c | 293 ++++++++
- arch/arm/configs/am335x_beaglebone_defconfig | 58 ++
- .../configs/am335x_beaglebone_mlo_large_defconfig | 50 ++
- .../configs/am335x_beaglebone_mlo_small_defconfig | 32 +
- arch/arm/cpu/start.c | 14 +-
- arch/arm/mach-omap/Kconfig | 11 +-
- arch/arm/mach-omap/omap3_generic.c | 2 +
- arch/arm/mach-omap/s32k_clksource.c | 5 +-
- arch/arm/mach-omap/xload.c | 5 +-
- common/startup.c | 5 +
- 27 files changed, 3348 insertions(+), 4 deletions(-)
- create mode 100644 arch/arm/boards/beaglebone/Makefile
- create mode 100644 arch/arm/boards/beaglebone/board.c
- create mode 100644 arch/arm/boards/beaglebone/clock.h
- create mode 100644 arch/arm/boards/beaglebone/clocks_am335x.h
- create mode 100644 arch/arm/boards/beaglebone/clocks_ti814x.h
- create mode 100644 arch/arm/boards/beaglebone/clocks_ti816x.h
- create mode 100644 arch/arm/boards/beaglebone/common_def.h
- create mode 100644 arch/arm/boards/beaglebone/config.h
- create mode 100644 arch/arm/boards/beaglebone/cpu.h
- create mode 100644 arch/arm/boards/beaglebone/ddr_defs.h
- create mode 100644 arch/arm/boards/beaglebone/env/boot/sd
- create mode 100644 arch/arm/boards/beaglebone/env/init/bootargs-base
- create mode 100644 arch/arm/boards/beaglebone/env/init/general
- create mode 100644 arch/arm/boards/beaglebone/hardware.h
- create mode 100644 arch/arm/boards/beaglebone/mux.c
- create mode 100644 arch/arm/boards/beaglebone/pll.c
- create mode 100644 arch/arm/configs/am335x_beaglebone_defconfig
- create mode 100644 arch/arm/configs/am335x_beaglebone_mlo_large_defconfig
- create mode 100644 arch/arm/configs/am335x_beaglebone_mlo_small_defconfig
-
-diff --git a/Makefile b/Makefile
-index ebcf9bf..8355da3 100644
---- a/Makefile
-+++ b/Makefile
-@@ -672,6 +672,11 @@ barebox.bin: barebox FORCE
- $(call if_changed,objcopy)
- $(call cmd,check_file_size,$(CONFIG_BAREBOX_MAX_IMAGE_SIZE))
-
-+barebox.img: barebox.bin
-+ $(srctree)/scripts/mkimage -A $(ARCH) -T firmware -C none \
-+ -O barebox -a $(CONFIG_TEXT_BASE) -e $(CONFIG_TEXT_BASE) \
-+ -n "barebox $(KERNELRELEASE)" -d $< $@
-+
- ifdef CONFIG_X86
- barebox.S: barebox
- ifdef CONFIG_X86_HDBOOT
-diff --git a/arch/arm/Makefile b/arch/arm/Makefile
-index 1225df7..92f5ef7 100644
---- a/arch/arm/Makefile
-+++ b/arch/arm/Makefile
-@@ -99,6 +99,7 @@ board-$(CONFIG_MACH_NOMADIK_8815NHK) := nhk8815
- board-$(CONFIG_MACH_NXDB500) := netx
- board-$(CONFIG_MACH_OMAP343xSDP) := omap343xdsp
- board-$(CONFIG_MACH_BEAGLE) := beagle
-+board-$(CONFIG_MACH_BEAGLEBONE) := beaglebone
- board-$(CONFIG_MACH_OMAP3EVM) := omap3evm
- board-$(CONFIG_MACH_PANDA) := panda
- board-$(CONFIG_MACH_PCM049) := pcm049
-diff --git a/arch/arm/boards/beaglebone/Makefile b/arch/arm/boards/beaglebone/Makefile
-new file mode 100644
-index 0000000..529eb26
---- /dev/null
-+++ b/arch/arm/boards/beaglebone/Makefile
-@@ -0,0 +1 @@
-+obj-y += board.o mux.o pll.o
-diff --git a/arch/arm/boards/beaglebone/board.c b/arch/arm/boards/beaglebone/board.c
-new file mode 100644
-index 0000000..ca94060
---- /dev/null
-+++ b/arch/arm/boards/beaglebone/board.c
-@@ -0,0 +1,509 @@
-+/*
-+ * (C) Copyright 2008
-+ * Texas Instruments, <www.ti.com>
-+ * Raghavendra KH <r-khandenahally@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
-+ */
-+
-+/**
-+ * @file
-+ * @brief Beagle Specific Board Initialization routines
-+ */
-+
-+/**
-+ * @page ti_beagle Texas Instruments Beagle Board
-+ *
-+ * FileName: arch/arm/boards/omap/board-beagle.c
-+ *
-+ * Beagle Board from Texas Instruments as described here:
-+ * http://www.beagleboard.org
-+ *
-+ * This board is based on OMAP3530.
-+ * More on OMAP3530 (including documentation can be found here):
-+ * http://focus.ti.com/docs/prod/folders/print/omap3530.html
-+ *
-+ * This file provides initialization in two stages:
-+ * @li boot time initialization - do basics required to get SDRAM working.
-+ * This is run from SRAM - so no case constructs and global vars can be used.
-+ * @li run time initialization - this is for the rest of the initializations
-+ * such as flash, uart etc.
-+ *
-+ * Boot time initialization includes:
-+ * @li SDRAM initialization.
-+ * @li Pin Muxing relevant for Beagle.
-+ *
-+ * Run time initialization includes
-+ * @li serial @ref serial_ns16550.c driver device definition
-+ *
-+ * Originally from arch/arm/boards/omap/board-sdp343x.c
-+ */
-+
-+#include <common.h>
-+#include <console.h>
-+#include <init.h>
-+#include <driver.h>
-+#include <fs.h>
-+#include <linux/stat.h>
-+#include <environment.h>
-+#include <sizes.h>
-+#include <io.h>
-+#include <ns16550.h>
-+#include <asm/armlinux.h>
-+#include <generated/mach-types.h>
-+#include <mach/silicon.h>
-+#include <mach/sdrc.h>
-+#include <mach/sys_info.h>
-+#include <mach/syslib.h>
-+#include <mach/control.h>
-+#include <mach/omap3-mux.h>
-+#include <mach/gpmc.h>
-+#include <mach/ehci.h>
-+#include <i2c/i2c.h>
-+#include <linux/err.h>
-+#include <usb/ehci.h>
-+#include <mach/xload.h>
-+
-+#include "config.h"
-+#include "common_def.h"
-+#include "cpu.h"
-+#include "ddr_defs.h"
-+
-+/* from U-Boot's board/ti/am335x/evm.c */
-+
-+/* UART Defines */
-+#define UART_SYSCFG_OFFSET (0x54)
-+#define UART_SYSSTS_OFFSET (0x58)
-+
-+#define UART_RESET (0x1 << 1)
-+#define UART_CLK_RUNNING_MASK 0x1
-+#define UART_SMART_IDLE_EN (0x1 << 0x3)
-+
-+static void Data_Macro_Config(int dataMacroNum)
-+{
-+ u32 BaseAddrOffset = 0x00;;
-+
-+ if (dataMacroNum == 1)
-+ BaseAddrOffset = 0xA4;
-+
-+ __raw_writel(((DDR2_RD_DQS<<30)|(DDR2_RD_DQS<<20)
-+ |(DDR2_RD_DQS<<10)|(DDR2_RD_DQS<<0)),
-+ (DATA0_RD_DQS_SLAVE_RATIO_0 + BaseAddrOffset));
-+ __raw_writel(DDR2_RD_DQS>>2,
-+ (DATA0_RD_DQS_SLAVE_RATIO_1 + BaseAddrOffset));
-+ __raw_writel(((DDR2_WR_DQS<<30)|(DDR2_WR_DQS<<20)
-+ |(DDR2_WR_DQS<<10)|(DDR2_WR_DQS<<0)),
-+ (DATA0_WR_DQS_SLAVE_RATIO_0 + BaseAddrOffset));
-+ __raw_writel(DDR2_WR_DQS>>2,
-+ (DATA0_WR_DQS_SLAVE_RATIO_1 + BaseAddrOffset));
-+ __raw_writel(((DDR2_PHY_WRLVL<<30)|(DDR2_PHY_WRLVL<<20)
-+ |(DDR2_PHY_WRLVL<<10)|(DDR2_PHY_WRLVL<<0)),
-+ (DATA0_WRLVL_INIT_RATIO_0 + BaseAddrOffset));
-+ __raw_writel(DDR2_PHY_WRLVL>>2,
-+ (DATA0_WRLVL_INIT_RATIO_1 + BaseAddrOffset));
-+ __raw_writel(((DDR2_PHY_GATELVL<<30)|(DDR2_PHY_GATELVL<<20)
-+ |(DDR2_PHY_GATELVL<<10)|(DDR2_PHY_GATELVL<<0)),
-+ (DATA0_GATELVL_INIT_RATIO_0 + BaseAddrOffset));
-+ __raw_writel(DDR2_PHY_GATELVL>>2,
-+ (DATA0_GATELVL_INIT_RATIO_1 + BaseAddrOffset));
-+ __raw_writel(((DDR2_PHY_FIFO_WE<<30)|(DDR2_PHY_FIFO_WE<<20)
-+ |(DDR2_PHY_FIFO_WE<<10)|(DDR2_PHY_FIFO_WE<<0)),
-+ (DATA0_FIFO_WE_SLAVE_RATIO_0 + BaseAddrOffset));
-+ __raw_writel(DDR2_PHY_FIFO_WE>>2,
-+ (DATA0_FIFO_WE_SLAVE_RATIO_1 + BaseAddrOffset));
-+ __raw_writel(((DDR2_PHY_WR_DATA<<30)|(DDR2_PHY_WR_DATA<<20)
-+ |(DDR2_PHY_WR_DATA<<10)|(DDR2_PHY_WR_DATA<<0)),
-+ (DATA0_WR_DATA_SLAVE_RATIO_0 + BaseAddrOffset));
-+ __raw_writel(DDR2_PHY_WR_DATA>>2,
-+ (DATA0_WR_DATA_SLAVE_RATIO_1 + BaseAddrOffset));
-+ __raw_writel(PHY_DLL_LOCK_DIFF,
-+ (DATA0_DLL_LOCK_DIFF_0 + BaseAddrOffset));
-+}
-+
-+static void Cmd_Macro_Config(void)
-+{
-+ __raw_writel(DDR2_RATIO, CMD0_CTRL_SLAVE_RATIO_0);
-+ __raw_writel(CMD_FORCE, CMD0_CTRL_SLAVE_FORCE_0);
-+ __raw_writel(CMD_DELAY, CMD0_CTRL_SLAVE_DELAY_0);
-+ __raw_writel(DDR2_DLL_LOCK_DIFF, CMD0_DLL_LOCK_DIFF_0);
-+ __raw_writel(DDR2_INVERT_CLKOUT, CMD0_INVERT_CLKOUT_0);
-+
-+ __raw_writel(DDR2_RATIO, CMD1_CTRL_SLAVE_RATIO_0);
-+ __raw_writel(CMD_FORCE, CMD1_CTRL_SLAVE_FORCE_0);
-+ __raw_writel(CMD_DELAY, CMD1_CTRL_SLAVE_DELAY_0);
-+ __raw_writel(DDR2_DLL_LOCK_DIFF, CMD1_DLL_LOCK_DIFF_0);
-+ __raw_writel(DDR2_INVERT_CLKOUT, CMD1_INVERT_CLKOUT_0);
-+
-+ __raw_writel(DDR2_RATIO, CMD2_CTRL_SLAVE_RATIO_0);
-+ __raw_writel(CMD_FORCE, CMD2_CTRL_SLAVE_FORCE_0);
-+ __raw_writel(CMD_DELAY, CMD2_CTRL_SLAVE_DELAY_0);
-+ __raw_writel(DDR2_DLL_LOCK_DIFF, CMD2_DLL_LOCK_DIFF_0);
-+ __raw_writel(DDR2_INVERT_CLKOUT, CMD2_INVERT_CLKOUT_0);
-+}
-+
-+static void config_vtp(void)
-+{
-+ __raw_writel(__raw_readl(VTP0_CTRL_REG) | VTP_CTRL_ENABLE,
-+ VTP0_CTRL_REG);
-+ __raw_writel(__raw_readl(VTP0_CTRL_REG) & (~VTP_CTRL_START_EN),
-+ VTP0_CTRL_REG);
-+ __raw_writel(__raw_readl(VTP0_CTRL_REG) | VTP_CTRL_START_EN,
-+ VTP0_CTRL_REG);
-+
-+ /* Poll for READY */
-+ while ((__raw_readl(VTP0_CTRL_REG) & VTP_CTRL_READY) != VTP_CTRL_READY);
-+}
-+
-+static void config_emif_ddr2(void)
-+{
-+ u32 i;
-+
-+ /*Program EMIF0 CFG Registers*/
-+ __raw_writel(EMIF_READ_LATENCY, EMIF4_0_DDR_PHY_CTRL_1);
-+ __raw_writel(EMIF_READ_LATENCY, EMIF4_0_DDR_PHY_CTRL_1_SHADOW);
-+ __raw_writel(EMIF_READ_LATENCY, EMIF4_0_DDR_PHY_CTRL_2);
-+ __raw_writel(EMIF_TIM1, EMIF4_0_SDRAM_TIM_1);
-+ __raw_writel(EMIF_TIM1, EMIF4_0_SDRAM_TIM_1_SHADOW);
-+ __raw_writel(EMIF_TIM2, EMIF4_0_SDRAM_TIM_2);
-+ __raw_writel(EMIF_TIM2, EMIF4_0_SDRAM_TIM_2_SHADOW);
-+ __raw_writel(EMIF_TIM3, EMIF4_0_SDRAM_TIM_3);
-+ __raw_writel(EMIF_TIM3, EMIF4_0_SDRAM_TIM_3_SHADOW);
-+
-+ __raw_writel(EMIF_SDCFG, EMIF4_0_SDRAM_CONFIG);
-+ __raw_writel(EMIF_SDCFG, EMIF4_0_SDRAM_CONFIG2);
-+
-+ /* __raw_writel(EMIF_SDMGT, EMIF0_0_SDRAM_MGMT_CTRL);
-+ __raw_writel(EMIF_SDMGT, EMIF0_0_SDRAM_MGMT_CTRL_SHD); */
-+ __raw_writel(0x00004650, EMIF4_0_SDRAM_REF_CTRL);
-+ __raw_writel(0x00004650, EMIF4_0_SDRAM_REF_CTRL_SHADOW);
-+
-+ for (i = 0; i < 5000; i++) {
-+
-+ }
-+
-+ /* __raw_writel(EMIF_SDMGT, EMIF0_0_SDRAM_MGMT_CTRL);
-+ __raw_writel(EMIF_SDMGT, EMIF0_0_SDRAM_MGMT_CTRL_SHD); */
-+ __raw_writel(EMIF_SDREF, EMIF4_0_SDRAM_REF_CTRL);
-+ __raw_writel(EMIF_SDREF, EMIF4_0_SDRAM_REF_CTRL_SHADOW);
-+
-+ __raw_writel(EMIF_SDCFG, EMIF4_0_SDRAM_CONFIG);
-+ __raw_writel(EMIF_SDCFG, EMIF4_0_SDRAM_CONFIG2);
-+}
-+
-+/* void DDR2_EMIF_Config(void); */
-+static void config_am335x_ddr(void)
-+{
-+ int data_macro_0 = 0;
-+ int data_macro_1 = 1;
-+
-+ enable_ddr_clocks();
-+
-+ config_vtp();
-+
-+ Cmd_Macro_Config();
-+
-+ Data_Macro_Config(data_macro_0);
-+ Data_Macro_Config(data_macro_1);
-+
-+ __raw_writel(PHY_RANK0_DELAY, DATA0_RANK0_DELAYS_0);
-+ __raw_writel(PHY_RANK0_DELAY, DATA1_RANK0_DELAYS_0);
-+
-+ __raw_writel(DDR_IOCTRL_VALUE, DDR_CMD0_IOCTRL);
-+ __raw_writel(DDR_IOCTRL_VALUE, DDR_CMD1_IOCTRL);
-+ __raw_writel(DDR_IOCTRL_VALUE, DDR_CMD2_IOCTRL);
-+ __raw_writel(DDR_IOCTRL_VALUE, DDR_DATA0_IOCTRL);
-+ __raw_writel(DDR_IOCTRL_VALUE, DDR_DATA1_IOCTRL);
-+
-+ __raw_writel(__raw_readl(DDR_IO_CTRL) & 0xefffffff, DDR_IO_CTRL);
-+ __raw_writel(__raw_readl(DDR_CKE_CTRL) | 0x00000001, DDR_CKE_CTRL);
-+
-+ config_emif_ddr2();
-+}
-+
-+/**
-+ * @brief Do the pin muxing required for Board operation.
-+ * We enable ONLY the pins we require to set. OMAP provides pins which do not
-+ * have alternate modes. Such pins done need to be set.
-+ *
-+ * See @ref MUX_VAL for description of the muxing mode.
-+ *
-+ * @return void
-+ */
-+static void mux_config(void)
-+{
-+ /* SDRC_D0 - SDRC_D31 default mux mode is mode0 */
-+
-+ /* GPMC */
-+ MUX_VAL(CP(GPMC_A1), (IDIS | PTD | DIS | M0));
-+ MUX_VAL(CP(GPMC_A2), (IDIS | PTD | DIS | M0));
-+ MUX_VAL(CP(GPMC_A3), (IDIS | PTD | DIS | M0));
-+ MUX_VAL(CP(GPMC_A4), (IDIS | PTD | DIS | M0));
-+ MUX_VAL(CP(GPMC_A5), (IDIS | PTD | DIS | M0));
-+ MUX_VAL(CP(GPMC_A6), (IDIS | PTD | DIS | M0));
-+ MUX_VAL(CP(GPMC_A7), (IDIS | PTD | DIS | M0));
-+ MUX_VAL(CP(GPMC_A8), (IDIS | PTD | DIS | M0));
-+ MUX_VAL(CP(GPMC_A9), (IDIS | PTD | DIS | M0));
-+ MUX_VAL(CP(GPMC_A10), (IDIS | PTD | DIS | M0));
-+
-+ /* D0-D7 default mux mode is mode0 */
-+ MUX_VAL(CP(GPMC_D8), (IEN | PTD | DIS | M0));
-+ MUX_VAL(CP(GPMC_D9), (IEN | PTD | DIS | M0));
-+ MUX_VAL(CP(GPMC_D10), (IEN | PTD | DIS | M0));
-+ MUX_VAL(CP(GPMC_D11), (IEN | PTD | DIS | M0));
-+ MUX_VAL(CP(GPMC_D12), (IEN | PTD | DIS | M0));
-+ MUX_VAL(CP(GPMC_D13), (IEN | PTD | DIS | M0));
-+ MUX_VAL(CP(GPMC_D14), (IEN | PTD | DIS | M0));
-+ MUX_VAL(CP(GPMC_D15), (IEN | PTD | DIS | M0));
-+ MUX_VAL(CP(GPMC_CLK), (IDIS | PTD | DIS | M0));
-+ /* GPMC_NADV_ALE default mux mode is mode0 */
-+ /* GPMC_NOE default mux mode is mode0 */
-+ /* GPMC_NWE default mux mode is mode0 */
-+ /* GPMC_NBE0_CLE default mux mode is mode0 */
-+ MUX_VAL(CP(GPMC_NBE0_CLE), (IDIS | PTD | DIS | M0));
-+ MUX_VAL(CP(GPMC_NBE1), (IEN | PTD | DIS | M0));
-+ MUX_VAL(CP(GPMC_NWP), (IEN | PTD | DIS | M0));
-+ /* GPMC_WAIT0 default mux mode is mode0 */
-+ MUX_VAL(CP(GPMC_WAIT1), (IEN | PTU | EN | M0));
-+
-+ /* SERIAL INTERFACE */
-+ MUX_VAL(CP(UART3_CTS_RCTX), (IEN | PTD | EN | M0));
-+ MUX_VAL(CP(UART3_RTS_SD), (IDIS | PTD | DIS | M0));
-+ MUX_VAL(CP(UART3_RX_IRRX), (IEN | PTD | DIS | M0));
-+ MUX_VAL(CP(UART3_TX_IRTX), (IDIS | PTD | DIS | M0));
-+ MUX_VAL(CP(HSUSB0_CLK), (IEN | PTD | DIS | M0));
-+ MUX_VAL(CP(HSUSB0_STP), (IDIS | PTU | EN | M0));
-+ MUX_VAL(CP(HSUSB0_DIR), (IEN | PTD | DIS | M0));
-+ MUX_VAL(CP(HSUSB0_NXT), (IEN | PTD | DIS | M0));
-+ MUX_VAL(CP(HSUSB0_DATA0), (IEN | PTD | DIS | M0));
-+ MUX_VAL(CP(HSUSB0_DATA1), (IEN | PTD | DIS | M0));
-+ MUX_VAL(CP(HSUSB0_DATA2), (IEN | PTD | DIS | M0));
-+ MUX_VAL(CP(HSUSB0_DATA3), (IEN | PTD | DIS | M0));
-+ MUX_VAL(CP(HSUSB0_DATA4), (IEN | PTD | DIS | M0));
-+ MUX_VAL(CP(HSUSB0_DATA5), (IEN | PTD | DIS | M0));
-+ MUX_VAL(CP(HSUSB0_DATA6), (IEN | PTD | DIS | M0));
-+ MUX_VAL(CP(HSUSB0_DATA7), (IEN | PTD | DIS | M0));
-+ /* I2C1_SCL default mux mode is mode0 */
-+ /* I2C1_SDA default mux mode is mode0 */
-+ /* USB EHCI (port 2) */
-+ MUX_VAL(CP(MCSPI1_CS3), (IEN | PTU | DIS | M3));
-+ MUX_VAL(CP(MCSPI2_CLK), (IEN | PTU | DIS | M3));
-+ MUX_VAL(CP(MCSPI2_SIMO), (IEN | PTU | DIS | M3));
-+ MUX_VAL(CP(MCSPI2_SOMI), (IEN | PTU | DIS | M3));
-+ MUX_VAL(CP(MCSPI2_CS0), (IEN | PTU | DIS | M3));
-+ MUX_VAL(CP(MCSPI2_CS1), (IEN | PTU | DIS | M3));
-+ MUX_VAL(CP(ETK_D10_ES2), (IDIS | PTU | DIS | M3));
-+ MUX_VAL(CP(ETK_D11_ES2), (IDIS | PTU | DIS | M3));
-+ MUX_VAL(CP(ETK_D12_ES2), (IEN | PTU | DIS | M3));
-+ MUX_VAL(CP(ETK_D13_ES2), (IEN | PTU | DIS | M3));
-+ MUX_VAL(CP(ETK_D14_ES2), (IEN | PTU | DIS | M3));
-+ MUX_VAL(CP(ETK_D15_ES2), (IEN | PTU | DIS | M3));
-+ MUX_VAL(CP(UART2_RX), (IEN | PTD | DIS | M4)) /*GPIO_147*/;
-+}
-+
-+
-+/*
-+ * early system init of muxing and clocks.
-+ */
-+void s_init(void)
-+{
-+ u32 regVal, uart_base;
-+
-+ /* Setup the PLLs and the clocks for the peripherals */
-+ pll_init();
-+
-+ /* UART softreset */
-+ uart_base = DEFAULT_UART_BASE;
-+
-+ enable_uart0_pin_mux();
-+
-+ regVal = __raw_readl(uart_base + UART_SYSCFG_OFFSET);
-+ regVal |= UART_RESET;
-+ __raw_writel(regVal, (uart_base + UART_SYSCFG_OFFSET) );
-+ while ((__raw_readl(uart_base + UART_SYSSTS_OFFSET) &
-+ UART_CLK_RUNNING_MASK) != UART_CLK_RUNNING_MASK);
-+
-+ /* Disable smart idle */
-+ regVal = __raw_readl((uart_base + UART_SYSCFG_OFFSET));
-+ regVal |= UART_SMART_IDLE_EN;
-+ __raw_writel(regVal, (uart_base + UART_SYSCFG_OFFSET));
-+
-+ /* Initialize the Timer */
-+ //init_timer();
-+
-+ //preloader_console_init();
-+
-+ config_am335x_ddr();
-+}
-+
-+
-+/**
-+ * @brief The basic entry point for board initialization.
-+ *
-+ * This is called as part of machine init (after arch init).
-+ * This is again called with stack in SRAM, so not too many
-+ * constructs possible here.
-+ *
-+ * @return void
-+ */
-+static int beagle_board_init(void)
-+{
-+ int in_sdram = running_in_sdram();
-+
-+ /* Can be removed as A8 comes up with L2 enabled */
-+ //l2_cache_enable();
-+
-+ /* WDT1 is already running when the bootloader gets control
-+ * Disable it to avoid "random" resets
-+ */
-+ writel(0xFEED0075, 0x4030b000);
-+ __raw_writel(0xAAAA, WDT_WSPR);
-+ while(__raw_readl(WDT_WWPS) != 0x0);
-+ __raw_writel(0x5555, WDT_WSPR);
-+ while(__raw_readl(WDT_WWPS) != 0x0);
-+
-+ //omap3_core_init();
-+ writel(in_sdram, 0x4030b004);
-+ writel(0xFEED0080, 0x4030b000);
-+
-+ //mux_config();
-+ enable_uart0_pin_mux();
-+ /* Dont reconfigure SDRAM while running in SDRAM! */
-+ if (!in_sdram)
-+ s_init();
-+
-+ writel(0xFEED0090, 0x4030b000);
-+ //writel(0xFEED03FF, 0x4030b000); while(1);
-+ return 0;
-+}
-+pure_initcall(beagle_board_init);
-+
-+/******************** Board Run Time *******************/
-+
-+#ifdef CONFIG_DRIVER_SERIAL_NS16550
-+
-+static struct NS16550_plat serial_plat = {
-+ .clock = 48000000, /* 48MHz (APLL96/2) */
-+ .shift = 2,
-+};
-+
-+/**
-+ * @brief UART serial port initialization - remember to enable COM clocks in
-+ * arch
-+ *
-+ * @return result of device registration
-+ */
-+static int beagle_console_init(void)
-+{
-+ /* Register the serial port */
-+ add_ns16550_device(-1, 0x44e09000, 1024, IORESOURCE_MEM_8BIT,
-+ &serial_plat);
-+
-+ return 0;
-+}
-+console_initcall(beagle_console_init);
-+#endif /* CONFIG_DRIVER_SERIAL_NS16550 */
-+
-+#ifdef CONFIG_USB_EHCI_OMAP
-+static struct omap_hcd omap_ehci_pdata = {
-+ .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY,
-+ .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY,
-+ .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN,
-+ .phy_reset = 1,
-+ .reset_gpio_port[0] = -EINVAL,
-+ .reset_gpio_port[1] = 147,
-+ .reset_gpio_port[2] = -EINVAL
-+};
-+
-+static struct ehci_platform_data ehci_pdata = {
-+ .flags = 0,
-+};
-+#endif /* CONFIG_USB_EHCI_OMAP */
-+
-+static struct i2c_board_info i2c_devices[] = {
-+ {
-+ I2C_BOARD_INFO("twl4030", 0x48),
-+ },
-+};
-+
-+static int beagle_mem_init(void)
-+{
-+ arm_add_mem_device("ram0", 0x80000000, 256 * 1024 * 1024);
-+
-+ return 0;
-+}
-+mem_initcall(beagle_mem_init);
-+
-+static int beagle_devices_init(void)
-+{
-+// i2c_register_board_info(0, i2c_devices, ARRAY_SIZE(i2c_devices));
-+// add_generic_device("i2c-omap", DEVICE_ID_DYNAMIC, NULL, OMAP_I2C1_BASE, SZ_4K,
-+// IORESOURCE_MEM, NULL);
-+
-+#ifdef CONFIG_USB_EHCI_OMAP
-+// if (ehci_omap_init(&omap_ehci_pdata) >= 0)
-+// add_usb_ehci_device(DEVICE_ID_DYNAMIC, OMAP_EHCI_BASE,
-+// OMAP_EHCI_BASE + 0x10, &ehci_pdata);
-+#endif /* CONFIG_USB_EHCI_OMAP */
-+#ifdef CONFIG_OMAP_GPMC
-+ /* WP is made high and WAIT1 active Low */
-+ //gpmc_generic_init(0x10);
-+#endif
-+
-+ add_generic_device("omap-hsmmc", DEVICE_ID_DYNAMIC, NULL, 0x48060100, SZ_4K,
-+ IORESOURCE_MEM, NULL);
-+
-+ armlinux_set_bootparams((void *)0x80000100);
-+ //armlinux_set_architecture(MACH_TYPE_OMAP_GENERIC);
-+ armlinux_set_architecture(3589);
-+
-+ return 0;
-+}
-+device_initcall(beagle_devices_init);
-+
-+#ifdef CONFIG_DEFAULT_ENVIRONMENT
-+static int beaglebone_env_init(void)
-+{
-+ struct stat s;
-+ char *diskdev = "/dev/disk0.0";
-+ int ret;
-+
-+ ret = stat(diskdev, &s);
-+ if (ret) {
-+ printf("device %s not found. Using default environment\n", diskdev);
-+ return 0;
-+ }
-+
-+ mkdir ("/boot", 0666);
-+ ret = mount(diskdev, "fat", "/boot");
-+ if (ret) {
-+ printf("failed to mount %s\n", diskdev);
-+ return 0;
-+ }
-+
-+ default_environment_path = "/boot/barebox.env";
-+
-+ return 0;
-+}
-+late_initcall(beaglebone_env_init);
-+#endif
-+
-+void __noreturn reset_cpu(unsigned long addr)
-+{
-+ writel(PRM_RSTCTRL_RESET, PRM_RSTCTRL);
-+
-+ while (1);
-+}
-+EXPORT_SYMBOL(reset_cpu);
-diff --git a/arch/arm/boards/beaglebone/clock.h b/arch/arm/boards/beaglebone/clock.h
-new file mode 100644
-index 0000000..0aeaa5f
---- /dev/null
-+++ b/arch/arm/boards/beaglebone/clock.h
-@@ -0,0 +1,36 @@
-+/*
-+ * (C) Copyright 2006-2008
-+ * Texas Instruments, <www.ti.com>
-+ * Richard Woodruff <r-woodruff2@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_H_
-+#define _CLOCKS_H_
-+
-+#ifdef CONFIG_TI816X
-+#include "clocks_ti816x.h"
-+#endif
-+
-+#ifdef CONFIG_TI814X
-+#include "clocks_ti814x.h"
-+#endif
-+
-+#ifdef CONFIG_AM335X
-+#include "clocks_am335x.h"
-+#endif
-+#endif
-+
-diff --git a/arch/arm/boards/beaglebone/clocks_am335x.h b/arch/arm/boards/beaglebone/clocks_am335x.h
-new file mode 100644
-index 0000000..b5fbc29
---- /dev/null
-+++ b/arch/arm/boards/beaglebone/clocks_am335x.h
-@@ -0,0 +1,65 @@
-+/*
-+ * clocks_am335x.h
-+ *
-+ * 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.
-+ *
-+ * 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_AM335X_H_
-+#define _CLOCKS_AM335X_H_
-+
-+/* Put the pll config values over here */
-+
-+#define OSC 24
-+
-+/* MAIN PLL Fdll = 1 GHZ, */
-+#define MPUPLL_M_500 500 /* 125 * n */
-+#define MPUPLL_M_550 550 /* 125 * n */
-+#define MPUPLL_M_600 600 /* 125 * n */
-+#define MPUPLL_M_720 720 /* 125 * n */
-+
-+#define MPUPLL_N 23 /* (n -1 ) */
-+#define MPUPLL_M2 1
-+
-+/* Core PLL Fdll = 1 GHZ, */
-+#define COREPLL_M 1000 /* 125 * n */
-+#define COREPLL_N 23 /* (n -1 ) */
-+
-+#define COREPLL_M4 10 /* CORE_CLKOUTM4 = 200 MHZ */
-+#define COREPLL_M5 8 /* CORE_CLKOUTM5 = 250 MHZ */
-+#define COREPLL_M6 4 /* CORE_CLKOUTM6 = 500 MHZ */
-+
-+/*
-+ * USB PHY clock is 960 MHZ. Since, this comes directly from Fdll, Fdll
-+ * frequency needs to be set to 960 MHZ. Hence,
-+ * For clkout = 192 MHZ, Fdll = 960 MHZ, divider values are given below
-+ */
-+#define PERPLL_M 960
-+#define PERPLL_N 23
-+#define PERPLL_M2 5
-+
-+/* DDR Freq is 166 MHZ for now*/
-+/* Set Fdll = 400 MHZ , Fdll = M * 2 * CLKINP/ N + 1; clkout = Fdll /(2 * M2) */
-+#if (CONFIG_AM335X_EVM_IS_13x13 == 1)
-+#define DDRPLL_M 166 /* M/N + 1 = 25/3 */
-+#else
-+#define DDRPLL_M 266
-+#endif
-+
-+#define DDRPLL_N 23
-+#define DDRPLL_M2 1
-+
-+#endif /* endif _CLOCKS_AM335X_H_ */
-diff --git a/arch/arm/boards/beaglebone/clocks_ti814x.h b/arch/arm/boards/beaglebone/clocks_ti814x.h
-new file mode 100644
-index 0000000..1b41c6f
---- /dev/null
-+++ b/arch/arm/boards/beaglebone/clocks_ti814x.h
-@@ -0,0 +1,72 @@
-+/*
-+ * (C) Copyright 2006-2008
-+ * Texas Instruments, <www.ti.com>
-+ * Richard Woodruff <r-woodruff2@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_
-+
-+/* CLK_SRC */
-+#define OSC_SRC0 0
-+#define OSC_SRC1 1
-+
-+#define L3_OSC_SRC OSC_SRC0
-+#define AUDIO_OSC_SRC OSC_SRC0
-+
-+/* Put the pll config values over here */
-+#define AUDIO_N 19
-+#define AUDIO_M 500
-+#define AUDIO_M2 2
-+#define AUDIO_CLKCTRL 0x801
-+
-+#define MODENA_N 0x10001
-+#define MODENA_M 0x3C
-+#define MODENA_M2 1
-+#define MODENA_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
-+
-+#define DSP_N 19
-+#define DSP_M 500
-+#define DSP_M2 1
-+#define DSP_CLKCTRL 0x801
-+
-+#define IVA_N 19
-+#define IVA_M 640
-+#define IVA_M2 2
-+#define IVA_CLKCTRL 0x801
-+
-+#define ISS_N 19
-+#define ISS_M 800
-+#define ISS_M2 2
-+#define ISS_CLKCTRL 0x801
-+
-+#define USB_N 19
-+#define USB_M 960
-+#define USB_M2 1
-+#define USB_CLKCTRL 0x200a0801
-+#endif /* endif _CLOCKS_TI814X_H_ */
-+
-diff --git a/arch/arm/boards/beaglebone/clocks_ti816x.h b/arch/arm/boards/beaglebone/clocks_ti816x.h
-new file mode 100644
-index 0000000..8590c2f
---- /dev/null
-+++ b/arch/arm/boards/beaglebone/clocks_ti816x.h
-@@ -0,0 +1,162 @@
-+/*
-+ * (C) Copyright 2006-2008
-+ * Texas Instruments, <www.ti.com>
-+ * Richard Woodruff <r-woodruff2@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_TI816X_H_
-+#define _CLOCKS_TI816X_H_
-+
-+/*
-+ * In TI816x the 27MHz crystal generates various root clks (main pll, audio pll, video pll and ddr pll)
-+ * From these root clks the SYSCLKs are generated by making use of dividers and multipliers
-+ */
-+
-+#define FAPLL_K 8
-+#define SYSCLK_2_DIV 1
-+#define OSC_FREQ 27
-+#define DDR_PLL_400 /* Values supported 400,531,675,796 */
-+
-+/* Main PLL */
-+#define MAIN_N 64
-+#define MAIN_P 0x1
-+#define MAIN_INTFREQ1 0x8
-+#define MAIN_FRACFREQ1 0x800000
-+#define MAIN_MDIV1 0x2
-+#define MAIN_INTFREQ2 0xE
-+#define MAIN_FRACFREQ2 0x0
-+#define MAIN_MDIV2 0x1
-+#define MAIN_INTFREQ3 0x8
-+#define MAIN_FRACFREQ3 0xAAAAB0
-+#define MAIN_MDIV3 0x3
-+#define MAIN_INTFREQ4 0x9
-+#define MAIN_FRACFREQ4 0x55554F
-+#define MAIN_MDIV4 0x3
-+#define MAIN_INTFREQ5 0x9
-+#define MAIN_FRACFREQ5 0x374BC6
-+#define MAIN_MDIV5 0xC
-+#define MAIN_MDIV6 0x48
-+#define MAIN_MDIV7 0x4
-+
-+/* DDR PLL */
-+/* For 400 MHz */
-+#if defined(DDR_PLL_400)
-+#define DDR_N 59
-+#define DDR_P 0x1
-+#define DDR_MDIV1 0x4
-+#define DDR_INTFREQ2 0x8
-+#define DDR_FRACFREQ2 0xD99999
-+#define DDR_MDIV2 0x1E
-+#define DDR_INTFREQ3 0x8
-+#define DDR_FRACFREQ3 0x0
-+#define DDR_MDIV3 0x4
-+#define DDR_INTFREQ4 0xE /* Expansion DDR clk */
-+#define DDR_FRACFREQ4 0x0
-+#define DDR_MDIV4 0x4
-+#define DDR_INTFREQ5 0xE /* Expansion DDR clk */
-+#define DDR_FRACFREQ5 0x0
-+#define DDR_MDIV5 0x4
-+#endif
-+
-+/* For 531 MHz */
-+#if defined(DDR_PLL_531)
-+#define DDR_N 59
-+#define DDR_P 0x1
-+#define DDR_MDIV1 0x3
-+#define DDR_INTFREQ2 0x8
-+#define DDR_FRACFREQ2 0xD99999
-+#define DDR_MDIV2 0x1E
-+#define DDR_INTFREQ3 0x8
-+#define DDR_FRACFREQ3 0x0
-+#define DDR_MDIV3 0x4
-+#define DDR_INTFREQ4 0xE /* Expansion DDR clk */
-+#define DDR_FRACFREQ4 0x0
-+#define DDR_MDIV4 0x4
-+#define DDR_INTFREQ5 0xE /* Expansion DDR clk */
-+#define DDR_FRACFREQ5 0x0
-+#define DDR_MDIV5 0x4
-+#endif
-+
-+/* For 675 MHz */
-+#if defined(DDR_PLL_675)
-+#define DDR_N 50
-+#define DDR_P 0x1
-+#define DDR_MDIV1 0x2
-+#define DDR_INTFREQ2 0x9
-+#define DDR_FRACFREQ2 0x0
-+#define DDR_MDIV2 0x19
-+#define DDR_INTFREQ3 0x13
-+#define DDR_FRACFREQ3 0x800000
-+#define DDR_MDIV3 0x2
-+#define DDR_INTFREQ4 0xE /* Expansion DDR clk */
-+#define DDR_FRACFREQ4 0x0
-+#define DDR_MDIV4 0x4
-+#define DDR_INTFREQ5 0xE /* Expansion DDR clk */
-+#define DDR_FRACFREQ5 0x0
-+#define DDR_MDIV5 0x4
-+#endif
-+
-+/* For 796 MHz */
-+#if defined(DDR_PLL_796)
-+#define DDR_N 59
-+#define DDR_P 0x1
-+#define DDR_MDIV1 0x2
-+#define DDR_INTFREQ2 0x8
-+#define DDR_FRACFREQ2 0xD99999
-+#define DDR_MDIV2 0x1E
-+#define DDR_INTFREQ3 0x8
-+#define DDR_FRACFREQ3 0x0
-+#define DDR_MDIV3 0x4
-+#define DDR_INTFREQ4 0xE /* Expansion DDR clk */
-+#define DDR_FRACFREQ4 0x0
-+#define DDR_MDIV4 0x4
-+#define DDR_INTFREQ5 0xE /* Expansion DDR clk */
-+#define DDR_FRACFREQ5 0x0
-+#define DDR_MDIV5 0x4
-+#endif
-+
-+/* Video PLL */
-+#define VIDEO_N 110
-+#define VIDEO_P 0x2
-+#define VIDEO_INTFREQ1 0xB
-+#define VIDEO_FRACFREQ1 0x0
-+#define VIDEO_MDIV1 0x5
-+#define VIDEO_INTFREQ2 0xA
-+#define VIDEO_FRACFREQ2 0x0
-+#define VIDEO_MDIV2 0x2
-+#define VIDEO_INTFREQ3 0xA
-+#define VIDEO_FRACFREQ3 0x0
-+#define VIDEO_MDIV3 0x2
-+
-+/* Audio PLL */
-+#define AUDIO_N 64
-+#define AUDIO_P 0x19
-+#define AUDIO_INTFREQ2 0xE
-+#define AUDIO_FRACFREQ2 0x0
-+#define AUDIO_MDIV2 0x4
-+#define AUDIO_INTFREQ3 0x9
-+#define AUDIO_FRACFREQ3 0x0
-+#define AUDIO_MDIV3 0x5
-+#define AUDIO_INTFREQ4 0x9
-+#define AUDIO_FRACFREQ4 0xCBC148
-+#define AUDIO_MDIV4 0x14
-+#define AUDIO_INTFREQ5 0xD
-+#define AUDIO_FRACFREQ5 0x800000
-+#define AUDIO_MDIV5 0x14
-+
-+#endif /* endif _CLOCKS_TI816X_H_ */
-+
-diff --git a/arch/arm/boards/beaglebone/common_def.h b/arch/arm/boards/beaglebone/common_def.h
-new file mode 100644
-index 0000000..21a50dd
---- /dev/null
-+++ b/arch/arm/boards/beaglebone/common_def.h
-@@ -0,0 +1,48 @@
-+/*
-+ * common_def.h
-+ *
-+ * 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 version 2.
-+ *
-+ * This program is distributed "as is" WITHOUT ANY WARRANTY of any
-+ * kind, whether express or implied; without even the implied warranty
-+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ */
-+#ifndef __COMMON_DEF_H__
-+#define __COMMON_DEF_H__
-+
-+/* AM335X type */
-+#define BONE_BOARD 0
-+#define GP_BOARD 1
-+#define IA_BOARD 2
-+#define IPP_BOARD 3
-+#define BASE_BOARD 4
-+
-+/* Profiles */
-+#define PROFILE_NONE 0x0
-+#define PROFILE_0 (1 << 0)
-+#define PROFILE_1 (1 << 1)
-+#define PROFILE_2 (1 << 2)
-+#define PROFILE_3 (1 << 3)
-+#define PROFILE_4 (1 << 4)
-+#define PROFILE_5 (1 << 5)
-+#define PROFILE_6 (1 << 6)
-+#define PROFILE_7 (1 << 7)
-+#define PROFILE_ALL 0xFF
-+
-+extern void pll_init(void);
-+extern void mpu_pll_config(int mpupll_M);
-+extern void enable_ddr_clocks(void);
-+
-+extern void enable_i2c0_pin_mux(void);
-+extern void enable_uart0_pin_mux(void);
-+extern void configure_evm_pin_mux(unsigned char daughter_board_id,
-+ char daughter_board_version[],
-+ unsigned short daughter_board_profile,
-+ unsigned int daughter_board_flag);
-+
-+#endif/*__COMMON_DEF_H__ */
-diff --git a/arch/arm/boards/beaglebone/config.h b/arch/arm/boards/beaglebone/config.h
-new file mode 100644
-index 0000000..80be07a
---- /dev/null
-+++ b/arch/arm/boards/beaglebone/config.h
-@@ -0,0 +1,24 @@
-+/**
-+ * 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 __CONFIG_H
-+#define __CONFIG_H
-+
-+#define CONFIG_AM335X
-+#define CONFIG_TI81XX
-+
-+#endif /* __CONFIG_H */
-diff --git a/arch/arm/boards/beaglebone/cpu.h b/arch/arm/boards/beaglebone/cpu.h
-new file mode 100644
-index 0000000..da22b1d
---- /dev/null
-+++ b/arch/arm/boards/beaglebone/cpu.h
-@@ -0,0 +1,726 @@
-+/*
-+ * (C) Copyright 2006
-+ * Texas Instruments, <www.ti.com>
-+ *
-+ * 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
-+ *
-+ */
-+
-+#ifndef _TI81XX_CPU_H
-+#define _TI81XX_CPU_H
-+
-+#if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__))
-+#include <asm/types.h>
-+#endif /* !(__KERNEL_STRICT_NAMES || __ASSEMBLY__) */
-+
-+#include "hardware.h"
-+
-+//#define BIT(x) (1 << x)
-+#define CL_BIT(x) (0 << x)
-+
-+/* Timer registers */
-+#define TIMER_TCLR 0x38 /* Timer control register */
-+#define TIMER_TCRR 0x3C /* Timer counter register */
-+#define TIMER_TLDR 0x40 /* Timer load value register*/
-+
-+/* Timer 32 bit registers */
-+#ifndef __KERNEL_STRICT_NAMES
-+#ifndef __ASSEMBLY__
-+struct gptimer {
-+ u32 tidr; /* 0x00 r */
-+ u8 res1[0xc];
-+ u32 tiocp_cfg; /* 0x10 rw */
-+ u8 res2[0xc];
-+ u32 tier; /* 0x20 rw */
-+ u32 tistatr;/* 0x24 r */
-+ u32 tistat; /* 0x28 r */
-+ u32 tisr; /* 0x2c rw */
-+ u32 tcicr; /* 0x30 rw */
-+ u32 twer; /* 0x34 rw */
-+ u32 tclr; /* 0x38 rw - control reg */
-+ u32 tcrr; /* 0x3c rw - counter reg */
-+ u32 tldr; /* 0x40 rw - load reg */
-+ u32 ttgr; /* 0x44 rw */
-+ u32 twpc; /* 0x48 r*/
-+ u32 tmar; /* 0x4c rw*/
-+ u32 tcar1; /* 0x50 r */
-+ u32 tscir; /* 0x54 r */
-+ u32 tcar2; /* 0x58 r */
-+};
-+#endif /* __ASSEMBLY__ */
-+#endif /* __KERNEL_STRICT_NAMES */
-+
-+/* Timer register bits */
-+#define TCLR_ST BIT(0) /* Start=1 Stop=0 */
-+#define TCLR_AR BIT(1) /* Auto reload */
-+#define TCLR_PRE BIT(5) /* Pre-scaler enable */
-+#define TCLR_PTV_SHIFT (2) /* Pre-scaler shift value */
-+#define TCLR_PRE_DISABLE CL_BIT(5) /* Pre-scalar disable */
-+
-+/* Control */
-+#define CONTROL_STATUS (CTRL_BASE + 0x40)
-+
-+/* device type */
-+#define DEVICE_MASK (BIT(8) | BIT(9) | BIT(10))
-+#define TST_DEVICE 0x0
-+#define EMU_DEVICE 0x1
-+#define HS_DEVICE 0x2
-+#define GP_DEVICE 0x3
-+
-+/* rom boot device/mode id */
-+#define BOOT_DEVICE_OFFSET 8
-+#define BOOT_DEVICE_MASK 0xff
-+
-+/* cpu-id for TI81XX family */
-+#define TI8168 0xb81e
-+#define AM335X 0xB944
-+
-+#define DEVICE_ID (CTRL_BASE + 0x0600)
-+/* This gives the status of the boot mode pins on the evm */
-+#define SYSBOOT_MASK (BIT(0) | BIT(1) | BIT(2) |BIT(3) |BIT(4))
-+
-+/* Reset control */
-+#ifdef CONFIG_AM335X
-+#define PRM_RSTCTRL (PRCM_BASE + 0x0F00)
-+#else
-+#define PRM_RSTCTRL (PRCM_BASE + 0x00A0)
-+#endif
-+#define PRM_RSTCTRL_RESET 0x01
-+
-+/* TI816X specific bits for PRM_DEVICE module */
-+#define GLOBAL_RST_COLD BIT(1)
-+
-+/* PLL related registers */
-+#ifdef CONFIG_TI816X
-+#define MAINPLL_CTRL (CTRL_BASE + 0x0400)
-+#define MAINPLL_PWD (CTRL_BASE + 0x0404)
-+#define MAINPLL_FREQ1 (CTRL_BASE + 0x0408)
-+#define MAINPLL_DIV1 (CTRL_BASE + 0x040C)
-+#define MAINPLL_FREQ2 (CTRL_BASE + 0x0410)
-+#define MAINPLL_DIV2 (CTRL_BASE + 0x0414)
-+#define MAINPLL_FREQ3 (CTRL_BASE + 0x0418)
-+#define MAINPLL_DIV3 (CTRL_BASE + 0x041C)
-+#define MAINPLL_FREQ4 (CTRL_BASE + 0x0420)
-+#define MAINPLL_DIV4 (CTRL_BASE + 0x0424)
-+#define MAINPLL_FREQ5 (CTRL_BASE + 0x0428)
-+#define MAINPLL_DIV5 (CTRL_BASE + 0x042C)
-+#define MAINPLL_DIV6 (CTRL_BASE + 0x0434)
-+#define MAINPLL_DIV7 (CTRL_BASE + 0x043C)
-+
-+#define DDRPLL_CTRL (CTRL_BASE + 0x0440)
-+#define DDRPLL_PWD (CTRL_BASE + 0x0444)
-+#define DDRPLL_DIV1 (CTRL_BASE + 0x044C)
-+#define DDRPLL_FREQ2 (CTRL_BASE + 0x0450)
-+#define DDRPLL_DIV2 (CTRL_BASE + 0x0454)
-+#define DDRPLL_FREQ3 (CTRL_BASE + 0x0458)
-+#define DDRPLL_DIV3 (CTRL_BASE + 0x045C)
-+#define DDRPLL_FREQ4 (CTRL_BASE + 0x0460)
-+#define DDRPLL_DIV4 (CTRL_BASE + 0x0464)
-+#define DDRPLL_FREQ5 (CTRL_BASE + 0x0468)
-+#define DDRPLL_DIV5 (CTRL_BASE + 0x046C)
-+
-+#define DDR_RCD (CTRL_BASE + 0x070C)
-+
-+#define VIDEOPLL_CTRL (CTRL_BASE + 0x0470)
-+#define VIDEOPLL_PWD (CTRL_BASE + 0x0474)
-+#define VIDEOPLL_FREQ1 (CTRL_BASE + 0x0478)
-+#define VIDEOPLL_DIV1 (CTRL_BASE + 0x047C)
-+#define VIDEOPLL_FREQ2 (CTRL_BASE + 0x0480)
-+#define VIDEOPLL_DIV2 (CTRL_BASE + 0x0484)
-+#define VIDEOPLL_FREQ3 (CTRL_BASE + 0x0488)
-+#define VIDEOPLL_DIV3 (CTRL_BASE + 0x048C)
-+
-+#define AUDIOPLL_CTRL (CTRL_BASE + 0x04A0)
-+#define AUDIOPLL_PWD (CTRL_BASE + 0x04A4)
-+#define AUDIOPLL_FREQ2 (CTRL_BASE + 0x04B0)
-+#define AUDIOPLL_DIV2 (CTRL_BASE + 0x04B4)
-+#define AUDIOPLL_FREQ3 (CTRL_BASE + 0x04B8)
-+#define AUDIOPLL_DIV3 (CTRL_BASE + 0x04BC)
-+#define AUDIOPLL_FREQ4 (CTRL_BASE + 0x04C0)
-+#define AUDIOPLL_DIV4 (CTRL_BASE + 0x04C4)
-+#define AUDIOPLL_FREQ5 (CTRL_BASE + 0x04C8)
-+#define AUDIOPLL_DIV5 (CTRL_BASE + 0x04CC)
-+
-+#endif
-+
-+#ifdef CONFIG_TI814X
-+
-+#define GMII_SEL (CTRL_BASE + 0x650)
-+
-+#define PCIE_PLLCFG0 (CTRL_BASE + 0x6D8)
-+#define PCIE_PLLCFG1 (CTRL_BASE + 0x6DC)
-+#define PCIE_PLLCFG2 (CTRL_BASE + 0x6E0)
-+#define PCIE_PLLCFG3 (CTRL_BASE + 0x6E4)
-+#define PCIE_PLLCFG4 (CTRL_BASE + 0x6E8)
-+#define PCIE_PLLSTATUS (CTRL_BASE + 0x6EC)
-+#define PCIE_RXSTATUS (CTRL_BASE + 0x6F0)
-+#define PCIE_TXSTATUS (CTRL_BASE + 0x6F4)
-+#define SERDES_REFCLK_CTRL (CTRL_BASE + 0xE24)
-+
-+#define SATA_PLLCFG0 (CTRL_BASE + 0x720)
-+#define SATA_PLLCFG1 (CTRL_BASE + 0x724)
-+#define SATA_PLLCFG2 (CTRL_BASE + 0x728)
-+#define SATA_PLLCFG3 (CTRL_BASE + 0x72C)
-+#define SATA_PLLCFG4 (CTRL_BASE + 0x730)
-+#define SATA_PLLSTATUS (CTRL_BASE + 0x734)
-+#define SATA_RXSTATUS (CTRL_BASE + 0x738)
-+#define SATA_TXSTATUS (CTRL_BASE + 0x73C)
-+
-+/* pin muxing registers */
-+#define PIN_CTRL_BASE (CTRL_BASE + 0x800)
-+#define N_PINS (271) /* PIN1=800, PIN 271=800+270*4=C38) */
-+
-+/* 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_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 0x200A0000 /* Enable CLKDCOEN, CLKLDOEN, CLKDCOPWDNZ */
-+
-+#define MODENA_PLL_BASE (PLL_SUBSYS_BASE + 0x048)
-+#define DSP_PLL_BASE (PLL_SUBSYS_BASE + 0x080)
-+#define SGX_PLL_BASE (PLL_SUBSYS_BASE + 0x0B0)
-+#define IVA_PLL_BASE (PLL_SUBSYS_BASE + 0x0E0)
-+#define L3_PLL_BASE (PLL_SUBSYS_BASE + 0x110)
-+#define ISS_PLL_BASE (PLL_SUBSYS_BASE + 0x140)
-+#define DSS_PLL_BASE (PLL_SUBSYS_BASE + 0x170)
-+#define VIDEO0_PLL_BASE (PLL_SUBSYS_BASE + 0x1A0)
-+#define VIDEO1_PLL_BASE (PLL_SUBSYS_BASE + 0x1D0)
-+#define HDMI_PLL_BASE (PLL_SUBSYS_BASE + 0x200)
-+#define AUDIO_PLL_BASE (PLL_SUBSYS_BASE + 0x230)
-+#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 ARM_CLKSRC (PLL_SUBSYS_BASE + 0x2C4)
-+#define VIDEO_PLL_CLKSRC (PLL_SUBSYS_BASE + 0x2C8)
-+#define MLB_ATL_CLKSRC (PLL_SUBSYS_BASE + 0x2CC)
-+#define McASP235_AUX_CLKSRC (PLL_SUBSYS_BASE + 0x2D0)
-+#define McASP_AHCLK_CLKSRC (PLL_SUBSYS_BASE + 0x2D4)
-+#define McBSP_UART_CLKSRC (PLL_SUBSYS_BASE + 0x2D8)
-+#define HDMI_I2S_CLKSRC (PLL_SUBSYS_BASE + 0x2DC)
-+#define DMTIMER_CLKSRC (PLL_SUBSYS_BASE + 0x2E0)
-+#define CLKOUT_MUX (PLL_SUBSYS_BASE + 0x2E4)
-+#define RMII_REFCLK_SRC (PLL_SUBSYS_BASE + 0x2E8)
-+#define SECSS_CLKSRC (PLL_SUBSYS_BASE + 0x2EC)
-+#define SYSCLK18_SRC (PLL_SUBSYS_BASE + 0x2F0)
-+#define WDT0_CLKSRC (PLL_SUBSYS_BASE + 0x2F4)
-+
-+#endif
-+
-+#ifdef CONFIG_AM335X
-+/* Module Offsets */
-+#define CM_PER (PRCM_BASE + 0x0)
-+#define CM_WKUP (PRCM_BASE + 0x400)
-+#define CM_DPLL (PRCM_BASE + 0x500)
-+#define CM_DEVICE (PRCM_BASE + 0x0700)
-+#define CM_CEFUSE (PRCM_BASE + 0x0A00)
-+#define PRM_DEVICE (PRCM_BASE + 0x0F00)
-+
-+/* Register Offsets */
-+/* Core PLL ADPLLS */
-+#define CM_CLKSEL_DPLL_CORE (CM_WKUP + 0x68)
-+#define CM_CLKMODE_DPLL_CORE (CM_WKUP + 0x90)
-+
-+/* Core HSDIV */
-+#define CM_DIV_M4_DPLL_CORE (CM_WKUP + 0x80)
-+#define CM_DIV_M5_DPLL_CORE (CM_WKUP + 0x84)
-+#define CM_DIV_M6_DPLL_CORE (CM_WKUP + 0xD8)
-+#define CM_IDLEST_DPLL_CORE (CM_WKUP + 0x5c)
-+
-+/* Peripheral PLL */
-+#define CM_CLKSEL_DPLL_PER (CM_WKUP + 0x9c)
-+#define CM_CLKMODE_DPLL_PER (CM_WKUP + 0x8c)
-+#define CM_DIV_M2_DPLL_PER (CM_WKUP + 0xAC)
-+#define CM_IDLEST_DPLL_PER (CM_WKUP + 0x70)
-+
-+/* Display PLL */
-+#define CM_CLKSEL_DPLL_DISP (CM_WKUP + 0x54)
-+#define CM_CLKMODE_DPLL_DISP (CM_WKUP + 0x98)
-+#define CM_DIV_M2_DPLL_DISP (CM_WKUP + 0xA4)
-+
-+/* DDR PLL */
-+#define CM_CLKSEL_DPLL_DDR (CM_WKUP + 0x40)
-+#define CM_CLKMODE_DPLL_DDR (CM_WKUP + 0x94)
-+#define CM_DIV_M2_DPLL_DDR (CM_WKUP + 0xA0)
-+#define CM_IDLEST_DPLL_DDR (CM_WKUP + 0x34)
-+
-+/* MPU PLL */
-+#define CM_CLKSEL_DPLL_MPU (CM_WKUP + 0x2c)
-+#define CM_CLKMODE_DPLL_MPU (CM_WKUP + 0x88)
-+#define CM_DIV_M2_DPLL_MPU (CM_WKUP + 0xA8)
-+#define CM_IDLEST_DPLL_MPU (CM_WKUP + 0x20)
-+
-+/* TIMER Clock Source Select */
-+#define CLKSEL_TIMER2_CLK (CM_DPLL + 0x8)
-+
-+/* Interconnect clocks */
-+#define CM_PER_L4LS_CLKCTRL (CM_PER + 0x60) /* EMIF */
-+#define CM_PER_L4FW_CLKCTRL (CM_PER + 0x64) /* EMIF FW */
-+#define CM_PER_L3_CLKCTRL (CM_PER + 0xE0) /* OCMC RAM */
-+#define CM_PER_L3_INSTR_CLKCTRL (CM_PER + 0xDC)
-+#define CM_PER_L4HS_CLKCTRL (CM_PER + 0x120)
-+#define CM_WKUP_L4WKUP_CLKCTRL (CM_WKUP + 0x0c)/* UART0 */
-+
-+/* Domain Wake UP */
-+#define CM_WKUP_CLKSTCTRL (CM_WKUP + 0) /* UART0 */
-+#define CM_PER_L4LS_CLKSTCTRL (CM_PER + 0x0) /* TIMER2 */
-+#define CM_PER_L3_CLKSTCTRL (CM_PER + 0x0c) /* EMIF */
-+#define CM_PER_L4FW_CLKSTCTRL (CM_PER + 0x08) /* EMIF FW */
-+#define CM_PER_L3S_CLKSTCTRL (CM_PER + 0x4)
-+#define CM_PER_L4HS_CLKSTCTRL (CM_PER + 0x011c)
-+#define CM_CEFUSE_CLKSTCTRL (CM_CEFUSE + 0x0)
-+
-+/* Module Enable Registers */
-+#define CM_PER_TIMER2_CLKCTRL (CM_PER + 0x80) /* Timer2 */
-+#define CM_WKUP_UART0_CLKCTRL (CM_WKUP + 0xB4)/* UART0 */
-+#define CM_WKUP_CONTROL_CLKCTRL (CM_WKUP + 0x4) /* Control Module */
-+#define CM_PER_EMIF_CLKCTRL (CM_PER + 0x28) /* EMIF */
-+#define CM_PER_EMIF_FW_CLKCTRL (CM_PER + 0xD0) /* EMIF FW */
-+#define CM_PER_GPMC_CLKCTRL (CM_PER + 0x30) /* GPMC */
-+#define CM_PER_ELM_CLKCTRL (CM_PER + 0x40) /* ELM */
-+#define CM_PER_SPI0_CLKCTRL (CM_PER + 0x4c) /* SPI0 */
-+#define CM_PER_SPI1_CLKCTRL (CM_PER + 0x50) /* SPI1 */
-+#define CM_WKUP_I2C0_CLKCTRL (CM_WKUP + 0xB8) /* I2C0 */
-+#define CM_PER_CPGMAC0_CLKCTRL (CM_PER + 0x14) /* Ethernet */
-+#define CM_PER_CPSW_CLKSTCTRL (CM_PER + 0x144)/* Ethernet */
-+#define CM_PER_OCMCRAM_CLKCTRL (CM_PER + 0x2C) /* OCMC RAM */
-+#define CM_PER_GPIO2_CLKCTRL (CM_PER + 0xB0) /* GPIO2 */
-+#define CM_PER_UART3_CLKCTRL (CM_PER + 0x74) /* UART3 */
-+#define CM_PER_I2C1_CLKCTRL (CM_PER + 0x48) /* I2C1 */
-+#define CM_PER_I2C2_CLKCTRL (CM_PER + 0x44) /* I2C2 */
-+#define CM_WKUP_GPIO0_CLKCTRL (CM_WKUP + 0x8) /* GPIO0 */
-+
-+#define CM_PER_MMC0_CLKCTRL (CM_PER + 0x3C)
-+#define CM_PER_MMC1_CLKCTRL (CM_PER + 0xF4)
-+#define CM_PER_MMC2_CLKCTRL (CM_PER + 0xF8)
-+
-+#endif /* CONFIG_AM335X */
-+
-+/* PRCM */
-+#define CM_DPLL_OFFSET (PRCM_BASE + 0x0300)
-+
-+#ifdef CONFIG_TI816X
-+#define CM_TIMER1_CLKSEL (CM_DPLL_OFFSET + 0x90)
-+
-+/* Timers */
-+#define CM_ALWON_TIMER_0_CLKCTRL (PRCM_BASE + 0x156C)
-+#define CM_ALWON_TIMER_1_CLKCTRL (PRCM_BASE + 0x1570)
-+#define CM_ALWON_TIMER_2_CLKCTRL (PRCM_BASE + 0x1574)
-+#define CM_ALWON_TIMER_3_CLKCTRL (PRCM_BASE + 0x1578)
-+#define CM_ALWON_TIMER_4_CLKCTRL (PRCM_BASE + 0x157C)
-+#define CM_ALWON_TIMER_5_CLKCTRL (PRCM_BASE + 0x1580)
-+#define CM_ALWON_TIMER_6_CLKCTRL (PRCM_BASE + 0x1584)
-+#define CM_ALWON_TIMER_7_CLKCTRL (PRCM_BASE + 0x1588)
-+#endif
-+
-+#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_L3_SLOW_CLKSTCTRL (PRCM_BASE + 0x1400)
-+
-+#ifdef CONFIG_TI816X
-+#define CM_ALWON_CUST_EFUSE_CLKCTRL (PRCM_BASE + 0x1628)
-+#endif
-+
-+#define CM_ALWON_GPIO_0_CLKCTRL (PRCM_BASE + 0x155c)
-+#define CM_ALWON_GPIO_0_OPTFCLKEN_DBCLK (PRCM_BASE + 0x155c)
-+
-+/* Ethernet */
-+#define CM_ETHERNET_CLKSTCTRL (PRCM_BASE + 0x1404)
-+#define CM_ALWON_ETHERNET_0_CLKCTRL (PRCM_BASE + 0x15D4)
-+#define CM_ALWON_ETHERNET_1_CLKCTRL (PRCM_BASE + 0x15D8)
-+
-+/* UARTs */
-+#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)
-+
-+/* I2C */
-+/* Note: In ti814x I2C0 and I2C2 have common clk control */
-+#define CM_ALWON_I2C_0_CLKCTRL (PRCM_BASE + 0x1564)
-+
-+/* HSMMC */
-+#ifdef CONFIG_TI816X
-+#define CM_ALWON_HSMMC_CLKCTRL (PRCM_BASE + 0x15B0)
-+#endif
-+
-+#ifdef CONFIG_TI814X
-+#define CM_ALWON_HSMMC_CLKCTRL (PRCM_BASE + 0x1620)
-+#endif
-+
-+/* UART2 registers */
-+#ifdef CONFIG_TI816X
-+#define DEFAULT_UART_BASE UART2_BASE
-+#endif
-+
-+#ifdef CONFIG_TI814X
-+#define DEFAULT_UART_BASE UART0_BASE
-+#endif
-+
-+#ifdef CONFIG_AM335X
-+#define DEFAULT_UART_BASE UART0_BASE
-+#endif
-+/* UART registers */
-+/*TODO:Move to a new file */
-+#define UART_SYSCFG (DEFAULT_UART_BASE + 0x54)
-+#define UART_SYSSTS (DEFAULT_UART_BASE + 0x58)
-+#define UART_LCR (DEFAULT_UART_BASE + 0x0C)
-+#define UART_EFR (DEFAULT_UART_BASE + 0x08)
-+#define UART_MCR (DEFAULT_UART_BASE + 0x10)
-+#define UART_SCR (DEFAULT_UART_BASE + 0x40)
-+#define UART_TCR (DEFAULT_UART_BASE + 0x18)
-+#define UART_FCR (DEFAULT_UART_BASE + 0x08)
-+#define UART_DLL (DEFAULT_UART_BASE + 0x00)
-+#define UART_DLH (DEFAULT_UART_BASE + 0x04)
-+#define UART_MDR (DEFAULT_UART_BASE + 0x20)
-+
-+/*DMM & EMIF4 MMR Declaration*/
-+/*TODO: Move to a new file */
-+#define DMM_LISA_MAP__0 (DMM_BASE + 0x40)
-+#define DMM_LISA_MAP__1 (DMM_BASE + 0x44)
-+#define DMM_LISA_MAP__2 (DMM_BASE + 0x48)
-+#define DMM_LISA_MAP__3 (DMM_BASE + 0x4C)
-+#define DMM_PAT_BASE_ADDR (DMM_BASE + 0x460)
-+
-+#ifdef CONFIG_AM335X
-+#define EMIF_MOD_ID_REV (EMIF4_0_CFG_BASE + 0x0)
-+#define EMIF4_0_SDRAM_STATUS (EMIF4_0_CFG_BASE + 0x04)
-+#define EMIF4_0_SDRAM_CONFIG (EMIF4_0_CFG_BASE + 0x08)
-+#define EMIF4_0_SDRAM_CONFIG2 (EMIF4_0_CFG_BASE + 0x0C)
-+#define EMIF4_0_SDRAM_REF_CTRL (EMIF4_0_CFG_BASE + 0x10)
-+#define EMIF4_0_SDRAM_REF_CTRL_SHADOW (EMIF4_0_CFG_BASE + 0x14)
-+#define EMIF4_0_SDRAM_TIM_1 (EMIF4_0_CFG_BASE + 0x18)
-+#define EMIF4_0_SDRAM_TIM_1_SHADOW (EMIF4_0_CFG_BASE + 0x1C)
-+#define EMIF4_0_SDRAM_TIM_2 (EMIF4_0_CFG_BASE + 0x20)
-+#define EMIF4_0_SDRAM_TIM_2_SHADOW (EMIF4_0_CFG_BASE + 0x24)
-+#define EMIF4_0_SDRAM_TIM_3 (EMIF4_0_CFG_BASE + 0x28)
-+#define EMIF4_0_SDRAM_TIM_3_SHADOW (EMIF4_0_CFG_BASE + 0x2C)
-+#define EMIF0_0_SDRAM_MGMT_CTRL (EMIF4_0_CFG_BASE + 0x38)
-+#define EMIF0_0_SDRAM_MGMT_CTRL_SHD (EMIF4_0_CFG_BASE + 0x3C)
-+#define EMIF4_0_DDR_PHY_CTRL_1 (EMIF4_0_CFG_BASE + 0xE4)
-+#define EMIF4_0_DDR_PHY_CTRL_1_SHADOW (EMIF4_0_CFG_BASE + 0xE8)
-+#define EMIF4_0_DDR_PHY_CTRL_2 (EMIF4_0_CFG_BASE + 0xEC)
-+#define EMIF4_0_IODFT_TLGC (EMIF4_0_CFG_BASE + 0x60)
-+#else
-+#define EMIF4_0_SDRAM_CONFIG (EMIF4_0_CFG_BASE + 0x08)
-+#define EMIF4_0_SDRAM_CONFIG2 (EMIF4_0_CFG_BASE + 0x0C)
-+#define EMIF4_0_SDRAM_REF_CTRL (EMIF4_0_CFG_BASE + 0x10)
-+#define EMIF4_0_SDRAM_REF_CTRL_SHADOW (EMIF4_0_CFG_BASE + 0x14)
-+#define EMIF4_0_SDRAM_TIM_1 (EMIF4_0_CFG_BASE + 0x18)
-+#define EMIF4_0_SDRAM_TIM_1_SHADOW (EMIF4_0_CFG_BASE + 0x1C)
-+#define EMIF4_0_SDRAM_TIM_2 (EMIF4_0_CFG_BASE + 0x20)
-+#define EMIF4_0_SDRAM_TIM_2_SHADOW (EMIF4_0_CFG_BASE + 0x24)
-+#define EMIF4_0_SDRAM_TIM_3 (EMIF4_0_CFG_BASE + 0x28)
-+#define EMIF4_0_SDRAM_TIM_3_SHADOW (EMIF4_0_CFG_BASE + 0x2C)
-+#define EMIF4_0_DDR_PHY_CTRL_1 (EMIF4_0_CFG_BASE + 0xE4)
-+#define EMIF4_0_DDR_PHY_CTRL_1_SHADOW (EMIF4_0_CFG_BASE + 0xE8)
-+#define EMIF4_0_IODFT_TLGC (EMIF4_0_CFG_BASE + 0x60)
-+#endif
-+
-+#define EMIF4_1_SDRAM_CONFIG (EMIF4_1_CFG_BASE + 0x08)
-+#define EMIF4_1_SDRAM_CONFIG2 (EMIF4_1_CFG_BASE + 0x0C)
-+#define EMIF4_1_SDRAM_REF_CTRL (EMIF4_1_CFG_BASE + 0x10)
-+#define EMIF4_1_SDRAM_REF_CTRL_SHADOW (EMIF4_1_CFG_BASE + 0x14)
-+#define EMIF4_1_SDRAM_TIM_1 (EMIF4_1_CFG_BASE + 0x18)
-+#define EMIF4_1_SDRAM_TIM_1_SHADOW (EMIF4_1_CFG_BASE + 0x1C)
-+#define EMIF4_1_SDRAM_TIM_2 (EMIF4_1_CFG_BASE + 0x20)
-+#define EMIF4_1_SDRAM_TIM_2_SHADOW (EMIF4_1_CFG_BASE + 0x24)
-+#define EMIF4_1_SDRAM_TIM_3 (EMIF4_1_CFG_BASE + 0x28)
-+#define EMIF4_1_SDRAM_TIM_3_SHADOW (EMIF4_1_CFG_BASE + 0x2C)
-+#define EMIF4_1_DDR_PHY_CTRL_1 (EMIF4_1_CFG_BASE + 0xE4)
-+#define EMIF4_1_DDR_PHY_CTRL_1_SHADOW (EMIF4_1_CFG_BASE + 0xE8)
-+#define EMIF4_1_IODFT_TLGC (EMIF4_1_CFG_BASE + 0x60)
-+
-+#ifdef CONFIG_AM335X
-+#define VTP0_CTRL_REG 0x44E10E0C
-+#else
-+#define VTP0_CTRL_REG 0x48140E0C
-+#endif
-+#define VTP1_CTRL_REG 0x48140E10
-+
-+/*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)
-+
-+/* Smartreflex Registers */
-+#define TI816X_SMRT_SCALE_ADDR (CTRL_BASE + 0x06A0)
-+#define TI816X_SMRT_OPP_SVT_ADDR (CTRL_BASE + 0x06A8)
-+#define TI816X_SMRT_OPP_HVT_ADDR (CTRL_BASE + 0x06AC)
-+
-+
-+/* ALWON PRCM */
-+#ifdef CONFIG_AM335X
-+#define CM_ALWON_OCMC_0_CLKSTCTRL CM_PER_L3_CLKSTCTRL
-+#define CM_ALWON_OCMC_0_CLKCTRL CM_PER_OCMCRAM_CLKCTRL
-+#else
-+#define CM_ALWON_OCMC_0_CLKSTCTRL (PRCM_BASE + 0x1414)
-+#define CM_ALWON_OCMC_0_CLKCTRL (PRCM_BASE + 0x15B4)
-+#endif
-+
-+#ifdef CONFIG_TI816X
-+#define CM_ALWON_OCMC_1_CLKSTCTRL (PRCM_BASE + 0x1418)
-+#define CM_ALWON_OCMC_1_CLKCTRL (PRCM_BASE + 0x15B8)
-+#endif
-+
-+#ifdef CONFIG_AM335X
-+#define CM_ALWON_GPMC_CLKCTRL CM_PER_GPMC_CLKCTRL
-+#else
-+#define CM_ALWON_GPMC_CLKCTRL (PRCM_BASE + 0x15D0)
-+#endif
-+
-+/* OCMC */
-+#ifdef CONFIG_TI816X
-+#define SRAM0_SIZE (0x40000)
-+#define SRAM_GPMC_STACK_SIZE (0x40)
-+#endif
-+
-+#if defined(CONFIG_AM335X) || defined(CONFIG_TI814X)
-+#define SRAM0_SIZE (0x1B400) /* 109 KB */
-+#define SRAM_GPMC_STACK_SIZE (0x40)
-+#endif
-+
-+#define LOW_LEVEL_SRAM_STACK (SRAM0_START + SRAM0_SIZE - 4)
-+
-+/* GPMC related */
-+#define GPMC_CONFIG_CS0 (0x60)
-+#define GPMC_CONFIG_CS0_BASE (GPMC_BASE + GPMC_CONFIG_CS0)
-+#define GPMC_CONFIG1 (0x00)
-+#define GPMC_CONFIG2 (0x04)
-+#define GPMC_CONFIG3 (0x08)
-+#define GPMC_CONFIG4 (0x0C)
-+#define GPMC_CONFIG5 (0x10)
-+#define GPMC_CONFIG6 (0x14)
-+#define GPMC_CONFIG7 (0x18)
-+
-+/* PAD configuration register offsets and values for gpmc address
-+ * lines a12 - a26
-+ */
-+#ifdef CONFIG_TI816X
-+
-+#define TIM7_OUT (CTRL_BASE + 0xb34) /* a12 */
-+#define UART1_CTSN (CTRL_BASE + 0xadc) /* a13 */
-+#define UART1_RTSN (CTRL_BASE + 0xad8) /* a14 */
-+#define UART2_RTSN (CTRL_BASE + 0xae8) /* a15 */
-+#define SC1_RST (CTRL_BASE + 0xb10) /* a15 */
-+#define UART2_CTSN (CTRL_BASE + 0xaec) /* a16 */
-+#define UART0_RIN (CTRL_BASE + 0xacc) /* a17 */
-+#define UART0_DCDN (CTRL_BASE + 0xac8) /* a18 */
-+#define UART0_DSRN (CTRL_BASE + 0xac4) /* a19 */
-+#define UART0_DTRN (CTRL_BASE + 0xac0) /* a20 */
-+#define SPI_SCS3 (CTRL_BASE + 0xaa4) /* a21 */
-+#define SPI_SC2 (CTRL_BASE + 0xaa0) /* a22 */
-+#define GPO_IO6 (CTRL_BASE + 0xca0) /* a23 */
-+#define TIM6_OUT (CTRL_BASE + 0xb30) /* a24 */
-+#define SC0_DATA (CTRL_BASE + 0xafc) /* a25 */
-+#define GPMC_A27 (CTRL_BASE + 0xba0) /* a27 */
-+
-+/* MMC Pad register offsets */
-+#define MMC_POW (CTRL_BASE + 0xa70)
-+#define MMC_CLK (CTRL_BASE + 0xa74)
-+#define MMC_CMD (CTRL_BASE + 0xa78)
-+#define MMC_DAT0 (CTRL_BASE + 0xa7c)
-+#define MMC_DAT1_SDIRQ (CTRL_BASE + 0xa80)
-+#define MMC_DAT2_SDRW (CTRL_BASE + 0xa84)
-+#define MMC_DAT3 (CTRL_BASE + 0xa88)
-+
-+#define GPMC_A12 TIM7_OUT
-+#define GPMC_A13 UART1_CTSN
-+#define GPMC_A14 UART1_RTSN
-+#define GPMC_A15 UART2_RTSN
-+#define GPMC_A16 UART2_CTSN
-+#define GPMC_A17 UART0_RIN
-+#define GPMC_A18 UART0_DCDN
-+#define GPMC_A19 UART0_DSRN
-+#define GPMC_A20 UART0_DTRN
-+#define GPMC_A21 SPI_SCS3
-+#define GPMC_A22 SPI_SC2
-+#define GPMC_A23 GPO_IO6
-+#define GPMC_A24 TIM6_OUT
-+#define GPMC_A25 SC0_DATA
-+#endif
-+
-+#ifdef CONFIG_AM335X
-+#define GPMC_A12 (CTRL_BASE + 0x8c0) /* LCD_DATA8 */
-+#define GPMC_A13 (CTRL_BASE + 0x8c4) /* LCD_DATA9 */
-+#define GPMC_A14 (CTRL_BASE + 0x8c8) /* LCD_DATA10 */
-+#define GPMC_A15 (CTRL_BASE + 0x8cc) /* LCD_DATA11 */
-+#define GPMC_A16 (CTRL_BASE + 0x8d0) /* LCD_DATA12 */
-+#define GPMC_A17 (CTRL_BASE + 0x8d4) /* LCD_DATA13 */
-+#define GPMC_A18 (CTRL_BASE + 0x8d8) /* LCD_DATA14 */
-+#define GPMC_A19 (CTRL_BASE + 0x8dc) /* LCD_DATA15 */
-+#define GPMC_A20 (CTRL_BASE + 0x850) /* GPMC_A4 */
-+#define GPMC_A21 (CTRL_BASE + 0x854) /* GPMC_A5 */
-+#define GPMC_A22 (CTRL_BASE + 0x858) /* GPMC_A6 */
-+
-+/* DDR offsets */
-+#define DDR_PHY_BASE_ADDR 0x44E12000
-+#define DDR_IO_CTRL 0x44E10E04
-+#define DDR_CKE_CTRL 0x44E1131C
-+#define CONTROL_BASE_ADDR 0x44E10000
-+
-+#define DDR_CMD0_IOCTRL (CONTROL_BASE_ADDR + 0x1404)
-+#define DDR_CMD1_IOCTRL (CONTROL_BASE_ADDR + 0x1408)
-+#define DDR_CMD2_IOCTRL (CONTROL_BASE_ADDR + 0x140C)
-+#define DDR_DATA0_IOCTRL (CONTROL_BASE_ADDR + 0x1440)
-+#define DDR_DATA1_IOCTRL (CONTROL_BASE_ADDR + 0x1444)
-+
-+#define CMD0_CTRL_SLAVE_RATIO_0 (DDR_PHY_BASE_ADDR + 0x01C)
-+#define CMD0_CTRL_SLAVE_FORCE_0 (DDR_PHY_BASE_ADDR + 0x020)
-+#define CMD0_CTRL_SLAVE_DELAY_0 (DDR_PHY_BASE_ADDR + 0x024)
-+#define CMD0_DLL_LOCK_DIFF_0 (DDR_PHY_BASE_ADDR + 0x028)
-+#define CMD0_INVERT_CLKOUT_0 (DDR_PHY_BASE_ADDR + 0x02C)
-+
-+#define CMD1_CTRL_SLAVE_RATIO_0 (DDR_PHY_BASE_ADDR + 0x050)
-+#define CMD1_CTRL_SLAVE_FORCE_0 (DDR_PHY_BASE_ADDR + 0x054)
-+#define CMD1_CTRL_SLAVE_DELAY_0 (DDR_PHY_BASE_ADDR + 0x058)
-+#define CMD1_DLL_LOCK_DIFF_0 (DDR_PHY_BASE_ADDR + 0x05C)
-+#define CMD1_INVERT_CLKOUT_0 (DDR_PHY_BASE_ADDR + 0x060)
-+
-+#define CMD2_CTRL_SLAVE_RATIO_0 (DDR_PHY_BASE_ADDR + 0x084)
-+#define CMD2_CTRL_SLAVE_FORCE_0 (DDR_PHY_BASE_ADDR + 0x088)
-+#define CMD2_CTRL_SLAVE_DELAY_0 (DDR_PHY_BASE_ADDR + 0x08C)
-+#define CMD2_DLL_LOCK_DIFF_0 (DDR_PHY_BASE_ADDR + 0x090)
-+#define CMD2_INVERT_CLKOUT_0 (DDR_PHY_BASE_ADDR + 0x094)
-+
-+#define DATA0_RD_DQS_SLAVE_RATIO_0 (DDR_PHY_BASE_ADDR + 0x0C8)
-+#define DATA0_RD_DQS_SLAVE_RATIO_1 (DDR_PHY_BASE_ADDR + 0x0CC)
-+#define DATA0_WR_DQS_SLAVE_RATIO_0 (DDR_PHY_BASE_ADDR + 0x0DC)
-+
-+#define DATA0_WR_DQS_SLAVE_RATIO_1 (DDR_PHY_BASE_ADDR + 0x0E0)
-+#define DATA0_WRLVL_INIT_RATIO_0 (DDR_PHY_BASE_ADDR + 0x0F0)
-+
-+#define DATA0_WRLVL_INIT_RATIO_1 (DDR_PHY_BASE_ADDR + 0x0F4)
-+#define DATA0_GATELVL_INIT_RATIO_0 (DDR_PHY_BASE_ADDR + 0x0FC)
-+
-+#define DATA0_GATELVL_INIT_RATIO_1 (DDR_PHY_BASE_ADDR + 0x100)
-+#define DATA0_FIFO_WE_SLAVE_RATIO_0 (DDR_PHY_BASE_ADDR + 0x108)
-+
-+#define DATA0_FIFO_WE_SLAVE_RATIO_1 (DDR_PHY_BASE_ADDR + 0x10C)
-+#define DATA0_WR_DATA_SLAVE_RATIO_0 (DDR_PHY_BASE_ADDR + 0x120)
-+
-+#define DATA0_WR_DATA_SLAVE_RATIO_1 (DDR_PHY_BASE_ADDR + 0x124)
-+#define DATA0_DLL_LOCK_DIFF_0 (DDR_PHY_BASE_ADDR + 0x138)
-+
-+#define DATA0_RANK0_DELAYS_0 (DDR_PHY_BASE_ADDR + 0x134)
-+#define DATA1_RANK0_DELAYS_0 (DDR_PHY_BASE_ADDR + 0x1D8)
-+
-+#endif
-+
-+#ifndef __KERNEL_STRICT_NAMES
-+#ifndef __ASSEMBLY__
-+struct gpmc_cs {
-+ u32 config1; /* 0x00 */
-+ u32 config2; /* 0x04 */
-+ u32 config3; /* 0x08 */
-+ u32 config4; /* 0x0C */
-+ u32 config5; /* 0x10 */
-+ u32 config6; /* 0x14 */
-+ u32 config7; /* 0x18 */
-+ u32 nand_cmd; /* 0x1C */
-+ u32 nand_adr; /* 0x20 */
-+ u32 nand_dat; /* 0x24 */
-+ u8 res[8]; /* blow up to 0x30 byte */
-+};
-+
-+struct bch_res_0_3 {
-+ u32 bch_result_x[4];
-+};
-+
-+
-+
-+struct gpmc {
-+ u8 res1[0x10];
-+ u32 sysconfig; /* 0x10 */
-+ u8 res2[0x4];
-+ u32 irqstatus; /* 0x18 */
-+ u32 irqenable; /* 0x1C */
-+ u8 res3[0x20];
-+ u32 timeout_control; /* 0x40 */
-+ u8 res4[0xC];
-+ u32 config; /* 0x50 */
-+ u32 status; /* 0x54 */
-+ u8 res5[0x8]; /* 0x58 */
-+ struct gpmc_cs cs[8]; /* 0x60, 0x90, .. */
-+ u8 res6[0x14]; /* 0x1E0 */
-+ u32 ecc_config; /* 0x1F4 */
-+ u32 ecc_control; /* 0x1F8 */
-+ u32 ecc_size_config; /* 0x1FC */
-+ u32 ecc1_result; /* 0x200 */
-+ u32 ecc2_result; /* 0x204 */
-+ u32 ecc3_result; /* 0x208 */
-+ u32 ecc4_result; /* 0x20C */
-+ u32 ecc5_result; /* 0x210 */
-+ u32 ecc6_result; /* 0x214 */
-+ u32 ecc7_result; /* 0x218 */
-+ u32 ecc8_result; /* 0x21C */
-+ u32 ecc9_result; /* 0x220 */
-+ u8 res7[12]; /* 0x224 */
-+ u32 testmomde_ctrl; /* 0x230 */
-+ u8 res8[12]; /* 0x234 */
-+ struct bch_res_0_3 bch_result_0_3[2]; /* 0x240 */
-+};
-+
-+/* Used for board specific gpmc initialization */
-+extern struct gpmc *gpmc_cfg;
-+
-+#endif /* __ASSEMBLY__ */
-+#endif /* __KERNEL_STRICT_NAMES */
-+
-+/* Ethernet MAC ID from EFuse */
-+#define MAC_ID0_LO (CTRL_BASE + 0x630)
-+#define MAC_ID0_HI (CTRL_BASE + 0x634)
-+#define MAC_ID1_LO (CTRL_BASE + 0x638)
-+#define MAC_ID1_HI (CTRL_BASE + 0x63c)
-+#define MAC_MII_SEL (CTRL_BASE + 0x650)
-+
-+/* WDT related */
-+/* TODO: Move to a new file */
-+#define WDT_WDSC (WDT_BASE + 0x010)
-+#define WDT_WDST (WDT_BASE + 0x014)
-+#define WDT_WISR (WDT_BASE + 0x018)
-+#define WDT_WIER (WDT_BASE + 0x01C)
-+#define WDT_WWER (WDT_BASE + 0x020)
-+#define WDT_WCLR (WDT_BASE + 0x024)
-+#define WDT_WCRR (WDT_BASE + 0x028)
-+#define WDT_WLDR (WDT_BASE + 0x02C)
-+#define WDT_WTGR (WDT_BASE + 0x030)
-+#define WDT_WWPS (WDT_BASE + 0x034)
-+#define WDT_WDLY (WDT_BASE + 0x044)
-+#define WDT_WSPR (WDT_BASE + 0x048)
-+#define WDT_WIRQEOI (WDT_BASE + 0x050)
-+#define WDT_WIRQSTATRAW (WDT_BASE + 0x054)
-+#define WDT_WIRQSTAT (WDT_BASE + 0x058)
-+#define WDT_WIRQENSET (WDT_BASE + 0x05C)
-+#define WDT_WIRQENCLR (WDT_BASE + 0x060)
-+
-+#define WDT_UNFREEZE (CTRL_BASE + 0x100)
-+
-+#endif /* _TI816X_CPU_H */
-+
-diff --git a/arch/arm/boards/beaglebone/ddr_defs.h b/arch/arm/boards/beaglebone/ddr_defs.h
-new file mode 100644
-index 0000000..4ae1e10
---- /dev/null
-+++ b/arch/arm/boards/beaglebone/ddr_defs.h
-@@ -0,0 +1,362 @@
-+/*
-+ * Copyright (C) 2010 Texas Instruments
-+ *
-+ * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ * ----------------------------------------------------------------------------
-+ *
-+ */
-+
-+#ifndef _DDR_DEFS_H
-+#define _DDR_DEFS_H
-+
-+#include "hardware.h"
-+
-+#ifdef CONFIG_TI816X_EVM_DDR3
-+
-+#define CONFIG_TI816X_DDR3_400 /* Values supported 400,531,675,796 */
-+#define CONFIG_TI816X_DDR3_SW_LEVELING /* Enable software leveling as part of DDR3 init*/
-+
-+
-+/*
-+ * DDR3 force values. These are board dependent
-+ */
-+
-+/* EVM 400 MHz clock Settings
-+ * EVM has only a single RANK (chip select) */
-+#define N_RANK 1
-+
-+/*
-+ * Invert clock adds an additional half cycle delay on the command
-+ * interface. The additional half cycle, is usually meant to enable
-+ * leveling in the situation that DQS is later than CK on the board. It
-+ * also helps provide some additional margin for leveling.
-+ *
-+ * For the EVM this is helping us with additional room for the write
-+ * leveling. Since the dqs delays are very small.
-+ */
-+#define INVERT_CLOCK 1
-+
-+/*
-+ * CMD_SLAVE_RATIO determines where is the command placed with respect
-+ * to the clock edge. This is a ratio, implying 0x100 is one cycle.
-+ * Ideally the command is centered so - this should be half cycle
-+ * delay (0x80). But if invert clock is in use, an additional half
-+ * cycle must be added
-+ */
-+#define CMD_SLAVE_FROM_INV_CLOCK(i) (((i)==0) ? 0x80 : 0x100)
-+#define CMD_SLAVE_RATIO CMD_SLAVE_FROM_INV_CLOCK(INVERT_CLOCK)
-+
-+#ifdef TI816X_DDR3_PG_1_0
-+/*
-+ * EMIF PHY allows for controlling write DQS delay w.r.t. clock. The
-+ * value may be forced or use values determined from the leveling
-+ * process. Since we are doing the leveling - these are actually
-+ * don't care and are not used. The force is in delay units
-+ */
-+#define WR_DQS_FORCE_3 0x00000010
-+#define WR_DQS_FORCE_2 0x00000010
-+#define WR_DQS_FORCE_1 0x00000010
-+#define WR_DQS_FORCE_0 0x00000010
-+
-+/*
-+ * EMIF PHY allows for controlling how much the read DQS must be
-+ * delayed to sample the data correctly. Ideally this is about half a
-+ * cycle. The force here is delay units. The value here is in use -
-+ * as the current leveling process may not obtain this reliably. The
-+ * value has been determined via various tests on the EVM and changing
-+ * this setting is no recomended.
-+ */
-+#define RD_DQS_FORCE_0 0x00000028
-+#define RD_DQS_FORCE_1 0x00000028
-+#define RD_DQS_FORCE_2 0x00000028
-+#define RD_DQS_FORCE_3 0x00000028
-+
-+/*
-+ * read gate represents the round trip delay from command to read data
-+ * on the board + some package delay. This is the period for which
-+ * the bust may be tristated between a write and a read command and
-+ * hence must not be sampled (gated off). This is actually determined
-+ * via the read leveling process and hence this value is a don't care
-+ * for the EVM
-+ */
-+#define RD_GATE_FORCE_3 0x44
-+#define RD_GATE_FORCE_2 0x44
-+#define RD_GATE_FORCE_1 0x44
-+#define RD_GATE_FORCE_0 0x44
-+
-+#endif
-+
-+/*
-+ * This represents the initial value for the leveling process. The
-+ * value is a ratio - so 0x100 represents one cycle. The real delay
-+ * is determined through the leveling process.
-+ *
-+ * During the leveling process, 0x20 is subtracted from the value, so
-+ * we have added that to the value we want to set. We also set the
-+ * values such that byte3 completes leveling after byte2 and byte1
-+ * after byte0.
-+ */
-+#define WR_DQS_RATIO_0 0x20
-+#define WR_DQS_RATIO_1 0x20
-+#define WR_DQS_RATIO_2 0x20
-+#define WR_DQS_RATIO_3 0x20
-+
-+#ifdef TI816X_DDR3_PG_1_0
-+/*
-+ * read dqs ratio is only used in DDR2
-+ */
-+#define RD_DQS_RATIO_0 0x40
-+#define RD_DQS_RATIO_1 0x40
-+#define RD_DQS_RATIO_2 0x40
-+#define RD_DQS_RATIO_3 0x40
-+#endif
-+
-+/*
-+ * This represents the initial value for the leveling process. The
-+ * value is a ratio - so 0x100 represents one cycle. The real delay
-+ * is determined through the leveling process.
-+ *
-+ * During the leveling process, 0x20 is subtracted from the value, so
-+ * we have added that to the value we want to set. We also set the
-+ * values such that byte3 completes leveling after byte2 and byte1
-+ * after byte0.
-+ */
-+#define RD_GATE_RATIO_0 0x20
-+#define RD_GATE_RATIO_1 0x20
-+#define RD_GATE_RATIO_2 0x20
-+#define RD_GATE_RATIO_3 0x20
-+
-+#ifdef TI816X_DDR3_PG_1_0
-+/*
-+ * currently there is an issue with the automatic training process for
-+ * DDR3 by setting the initial leveling ratios appropriately we are
-+ * able to work arround write leveling and read gate leveling. How
-+ * ever the automatic process may not work well for the read eye
-+ * training (determining rd dqs delay). To work arround this - we
-+ * leverage the pre-knowledge of a working RD DQS delay and make the
-+ * leveling process complete by forcing good and bad values
-+ * This is enabled via HACK_EYE_TRAINING
-+ */
-+#define HACK_EYE_TRAINING 0
-+
-+/*
-+ * only the rd dqs delay needs to be forced. Others are determined via the leveling process
-+ */
-+#define USE_WR_DQS_FORCE 0
-+#define USE_RD_DQS_FORCE HACK_EYE_TRAINING
-+#define USE_RD_GATE_FORCE 0
-+
-+#endif
-+/*
-+ * data rate in MHz. The DDR clock will be 1/2 of this value
-+ */
-+#define DDR_DATA_RATE 800
-+
-+#define USE_EMIF0 1
-+#define USE_EMIF1 1
-+
-+/*
-+ * EMIF Paramters. Refer the EMIF register documentation and the
-+ * memory datasheet for details
-+ */
-+/* For 400 MHz */
-+#if defined(CONFIG_TI816X_DDR3_400)
-+#define EMIF_TIM1 0x0CCCE524
-+#define EMIF_TIM2 0x30308023
-+#define EMIF_TIM3 0x009F82CF
-+#define EMIF_SDREF 0x10000C30
-+#define EMIF_SDCFG 0x62A41032
-+#define EMIF_PHYCFG 0x0000010B
-+
-+#if defined(CONFIG_TI816X_DDR3_SW_LEVELING)
-+/* These values are obtained from the CCS app */
-+#define RD_DQS_GATE 0x12A
-+#define RD_DQS 0x3B
-+#define WR_DQS 0xA6
-+#endif
-+
-+#endif /* CONFIG_TI816X_DDR3_400 */
-+
-+/* For 531 MHz */
-+#if defined(CONFIG_TI816X_DDR3_531)
-+#define EMIF_TIM1 0x0EF136AC
-+#define EMIF_TIM2 0x30408063
-+#define EMIF_TIM3 0x009F83AF
-+#define EMIF_SDREF 0x1000102E
-+#define EMIF_SDCFG 0x62A51832
-+#define EMIF_PHYCFG 0x0000010C
-+
-+#if defined(CONFIG_TI816X_DDR3_SW_LEVELING)
-+/* These values are obtained from the CCS app */
-+#define RD_DQS_GATE 0x13D
-+#define RD_DQS 0x39
-+#define WR_DQS 0xB4
-+#endif
-+
-+#endif /* CONFIG_TI816X_DDR_531 */
-+
-+/* For 675 MHz */
-+#if defined(CONFIG_TI816X_DDR3_675)
-+#define EMIF_TIM1 0x13358875
-+#define EMIF_TIM2 0x5051806C
-+#define EMIF_TIM3 0x009F84AF
-+#define EMIF_SDREF 0x10001491
-+#define EMIF_SDCFG 0x62A63032
-+#define EMIF_PHYCFG 0x0000010F
-+
-+#if defined(CONFIG_TI816X_DDR3_SW_LEVELING)
-+/* These values are obtained from the CCS app */
-+#define RD_DQS_GATE 0x196
-+#define RD_DQS 0x39
-+#define WR_DQS 0x91
-+
-+#endif
-+
-+#endif /* CONFIG_TI816X_DDR3_675 */
-+
-+/* For 796 MHz */
-+#if defined(CONFIG_TI816X_DDR3_796)
-+#define EMIF_TIM1 0x1779C9FE
-+#define EMIF_TIM2 0x50608074
-+#define EMIF_TIM3 0x009F857F
-+#define EMIF_SDREF 0x10001841
-+#define EMIF_SDCFG 0x62A73832
-+#define EMIF_PHYCFG 0x00000110
-+
-+#if defined(CONFIG_TI816X_DDR3_SW_LEVELING)
-+/* These values are obtained from the CCS app */
-+#define RD_DQS_GATE 0x1B3
-+#define RD_DQS 0x35
-+#define WR_DQS 0x93
-+
-+#endif
-+
-+#endif /* CONFIG_TI816X_DDR_796 */
-+
-+
-+#if defined(CONFIG_TI816X_DDR3_SW_LEVELING)
-+#define WR_DQS_RATIO_BYTE_LANE3 ((WR_DQS << 10) | WR_DQS)
-+#define WR_DQS_RATIO_BYTE_LANE2 ((WR_DQS << 10) | WR_DQS)
-+#define WR_DQS_RATIO_BYTE_LANE1 ((WR_DQS << 10) | WR_DQS)
-+#define WR_DQS_RATIO_BYTE_LANE0 ((WR_DQS << 10) | WR_DQS)
-+
-+#define WR_DATA_RATIO_BYTE_LANE3 (((WR_DQS + 0x40) << 10) | (WR_DQS + 0x40))
-+#define WR_DATA_RATIO_BYTE_LANE2 (((WR_DQS + 0x40) << 10) | (WR_DQS + 0x40))
-+#define WR_DATA_RATIO_BYTE_LANE1 (((WR_DQS + 0x40) << 10) | (WR_DQS + 0x40))
-+#define WR_DATA_RATIO_BYTE_LANE0 (((WR_DQS + 0x40) << 10) | (WR_DQS + 0x40))
-+
-+#define RD_DQS_RATIO ((RD_DQS << 10) | RD_DQS)
-+
-+#define DQS_GATE_BYTE_LANE0 ((RD_DQS_GATE << 10) | RD_DQS_GATE)
-+#define DQS_GATE_BYTE_LANE1 ((RD_DQS_GATE << 10) | RD_DQS_GATE)
-+#define DQS_GATE_BYTE_LANE2 ((RD_DQS_GATE << 10) | RD_DQS_GATE)
-+#define DQS_GATE_BYTE_LANE3 ((RD_DQS_GATE << 10) | RD_DQS_GATE)
-+
-+#endif /* CONFIG_TI816X_DDR3_SW_LEVELING */
-+
-+#endif /* CONFIG_TI816X_EVM_DDR3 */
-+
-+#ifdef CONFIG_TI816X_EVM_DDR2
-+
-+#define INVERT_CLK_OUT 0x0
-+#define CMD_SLAVE_RATIO 0x80
-+/*
-+ * DDR2 ratio values. These are board dependent
-+ * obtained from sweep experiments
-+ */
-+
-+/* EVM 400 MHz clock Settings */
-+
-+#define WR_DQS_RATIO_BYTE_LANE3 ((0x4a << 10) | 0x4a)
-+#define WR_DQS_RATIO_BYTE_LANE2 ((0x4a << 10) | 0x4a)
-+#define WR_DQS_RATIO_BYTE_LANE1 ((0x4a << 10) | 0x4a)
-+#define WR_DQS_RATIO_BYTE_LANE0 ((0x4a << 10) | 0x4a)
-+
-+#define WR_DATA_RATIO_BYTE_LANE3 (((0x4a + 0x40) << 10) | (0x4a + 0x40))
-+#define WR_DATA_RATIO_BYTE_LANE2 (((0x4a + 0x40) << 10) | (0x4a + 0x40))
-+#define WR_DATA_RATIO_BYTE_LANE1 (((0x4a + 0x40) << 10) | (0x4a + 0x40))
-+#define WR_DATA_RATIO_BYTE_LANE0 (((0x4a + 0x40) << 10) | (0x4a + 0x40))
-+
-+#define RD_DQS_RATIO ((0x40 << 10) | 0x40)
-+
-+#define DQS_GATE_BYTE_LANE0 ((0x13a << 10) | 0x13a)
-+#define DQS_GATE_BYTE_LANE1 ((0x13a << 10) | 0x13a)
-+#define DQS_GATE_BYTE_LANE2 ((0x13a << 10) | 0x13a)
-+#define DQS_GATE_BYTE_LANE3 ((0x13a << 10) | 0x13a)
-+
-+/*
-+ * EMIF Paramters
-+ */
-+#define EMIF_TIM1 0xAAB15E2
-+#define EMIF_TIM2 0x423631D2
-+#define EMIF_TIM3 0x80032F
-+#define EMIF_SDREF 0x10000C30
-+#define EMIF_SDCFG 0x43801A3A /* 32 bit ddr2, CL=6, CWL=5, 13 rows, 8 banks, 10 bit column, 2 CS */
-+#define EMIF_PHYCFG 0x0000010B /* local odt = 1, read latency = 11 (max = 12, min=6) */
-+
-+#endif /* CONFIG_TI816X_EVM_DDR2 */
-+
-+#ifdef CONFIG_TI814X_EVM_DDR2
-+/* ti814x specific settings to be added */
-+#endif
-+
-+/* AM335X EMIF Register values */
-+#ifdef CONFIG_AM335X
-+#define EMIF_SDMGT 0x80000000
-+#define EMIF_SDRAM 0x00004650
-+#define EMIF_PHYCFG 0x2
-+#define DDR_PHY_RESET (0x1 << 10)
-+#define DDR_FUNCTIONAL_MODE_EN 0x1
-+#define DDR_PHY_READY (0x1 << 2)
-+#define VTP_CTRL_READY (0x1 << 5)
-+#define VTP_CTRL_ENABLE (0x1 << 6)
-+#define VTP_CTRL_LOCK_EN (0x1 << 4)
-+#define VTP_CTRL_START_EN (0x1)
-+#define DDR2_RATIO 0x80 /* for mDDR */
-+#define CMD_FORCE 0x00 /* common #def */
-+#define CMD_DELAY 0x00
-+#if (CONFIG_AM335X_EVM_IS_13x13 == 1)
-+#define EMIF_READ_LATENCY 0x05
-+#define EMIF_TIM1 0x04446249
-+#define EMIF_TIM2 0x101731C0
-+#define EMIF_TIM3 0x137
-+#define EMIF_SDCFG 0x20004EA3
-+#define EMIF_SDREF 0x57c
-+#define DDR2_DLL_LOCK_DIFF 0x4
-+#define DDR2_RD_DQS 0x40
-+#define DDR2_PHY_FIFO_WE 0x56
-+#else
-+#define EMIF_READ_LATENCY 0x05
-+#define EMIF_TIM1 0x0666B3D6
-+#define EMIF_TIM2 0x143731DA
-+#define EMIF_TIM3 0x00000347
-+#define EMIF_SDCFG 0x43805332
-+#define EMIF_SDREF 0x0000081a
-+#define DDR2_DLL_LOCK_DIFF 0x0
-+#define DDR2_RD_DQS 0x12
-+#define DDR2_PHY_FIFO_WE 0x80
-+#endif
-+#define DDR2_INVERT_CLKOUT 0x00
-+#define DDR2_WR_DQS 0x00
-+#define DDR2_PHY_WRLVL 0x00
-+#define DDR2_PHY_GATELVL 0x00
-+#define DDR2_PHY_WR_DATA 0x40
-+#define PHY_RANK0_DELAY 0x01
-+#define PHY_DLL_LOCK_DIFF 0x0
-+#define DDR_IOCTRL_VALUE 0x18B
-+#endif
-+
-+#endif /* _DDR_DEFS_H */
-+
-diff --git a/arch/arm/boards/beaglebone/env/boot/sd b/arch/arm/boards/beaglebone/env/boot/sd
-new file mode 100644
-index 0000000..f3f276c
---- /dev/null
-+++ b/arch/arm/boards/beaglebone/env/boot/sd
-@@ -0,0 +1,16 @@
-+#!/bin/sh
-+
-+if [ "$1" = menu ]; then
-+ boot-menu-add-entry "$0" "kernel & rootfs on SD card"
-+ exit
-+fi
-+
-+global.bootm.image=/boot/uImage
-+#global.bootm.oftree=<path to oftree>
-+#global.bootm.initrd=<path to initrd>
-+
-+#bootargs-root-nfs -n "<path on server>" -s <serverip>
-+#bootargs-root-jffs2 -m <mtdname>
-+#bootargs-root-ubi -r <volume> -m <mtdname>
-+
-+global.linux.bootargs.root="root=/dev/mmcblk0p2 rootfstype=ext4 rootwait ro"
-diff --git a/arch/arm/boards/beaglebone/env/init/bootargs-base b/arch/arm/boards/beaglebone/env/init/bootargs-base
-new file mode 100644
-index 0000000..333856e
---- /dev/null
-+++ b/arch/arm/boards/beaglebone/env/init/bootargs-base
-@@ -0,0 +1,8 @@
-+#!/bin/sh
-+
-+if [ "$1" = menu ]; then
-+ init-menu-add-entry "$0" "Base bootargs"
-+ exit
-+fi
-+
-+global.linux.bootargs.base="console=ttyO0,115200n8"
-diff --git a/arch/arm/boards/beaglebone/env/init/general b/arch/arm/boards/beaglebone/env/init/general
-new file mode 100644
-index 0000000..bbd7ee3
---- /dev/null
-+++ b/arch/arm/boards/beaglebone/env/init/general
-@@ -0,0 +1,18 @@
-+#!/bin/sh
-+
-+if [ "$1" = menu ]; then
-+ init-menu-add-entry "$0" "general config settings"
-+ exit
-+fi
-+
-+# user (used for network filenames)
-+global.user=jlu
-+
-+# timeout in seconds before the default boot entry is started
-+global.autoboot_timeout=3
-+
-+# default boot entry (one of /env/boot/*)
-+global.boot.default=sd
-+
-+# default tftp path
-+global.tftp.path=/mnt/tftp-dhcp
-diff --git a/arch/arm/boards/beaglebone/hardware.h b/arch/arm/boards/beaglebone/hardware.h
-new file mode 100644
-index 0000000..ee4256a
---- /dev/null
-+++ b/arch/arm/boards/beaglebone/hardware.h
-@@ -0,0 +1,117 @@
-+/*
-+ * Copyright (C) 2009, Texas Instruments, Incorporated
-+ *
-+ * 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 version 2.
-+ *
-+ * This program is distributed "as is" WITHOUT ANY WARRANTY of any
-+ * kind, whether express or implied; without even the implied warranty
-+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ */
-+
-+#ifndef __TI81XX_HARDWARE_H
-+#define __TI81XX_HARDWARE_H
-+
-+/* The objective is to keep only the overall memory map here
-+ * The break-up of the memory map for individual modules registers should
-+ * be in a different file like cpu.h so that this is the only place
-+ * where change is needed for new SoCs when the IP is otherwise the same
-+ */
-+#ifdef CONFIG_AM335X
-+#define SRAM0_START 0x402F0400
-+#else
-+#define SRAM0_START 0x40300000
-+#endif
-+#ifdef CONFIG_AM335X
-+#define UART0_BASE 0x44E09000
-+#else
-+#define UART0_BASE 0x48020000
-+#endif
-+#define UART1_BASE 0x48022000
-+#define UART2_BASE 0x48024000
-+#define UART3_BASE 0x481A6000
-+
-+/* DM Timer base addresses */
-+#define DM_TIMER0_BASE 0x4802C000
-+#define DM_TIMER1_BASE 0x4802E000
-+#define DM_TIMER2_BASE 0x48040000
-+#define DM_TIMER3_BASE 0x48042000
-+#define DM_TIMER4_BASE 0x48044000
-+#define DM_TIMER5_BASE 0x48046000
-+#define DM_TIMER6_BASE 0x48048000
-+#define DM_TIMER7_BASE 0x4804A000
-+
-+/* GPIO Base address */
-+#define GPIO0_BASE 0x48032000
-+#define GPIO1_BASE 0x4804C000
-+#ifdef CONFIG_AM335X
-+#define GPIO2_BASE 0x481AC000
-+#endif
-+/* BCH Error Location Module */
-+#define ELM_BASE 0x48080000
-+
-+/* Watchdog Timer */
-+#ifdef CONFIG_AM335X
-+#define WDT_BASE 0x44E35000
-+#else
-+#define WDT_BASE 0x480C2000
-+#endif
-+
-+/* Control Module Base Address */
-+#ifdef CONFIG_AM335X
-+#define CTRL_BASE 0x44E10000
-+#else
-+#define CTRL_BASE 0x48140000
-+#endif
-+
-+/* PRCM Base Address */
-+#ifdef CONFIG_AM335X
-+#define PRCM_BASE 0x44E00000
-+#else
-+#define PRCM_BASE 0x48180000
-+#endif
-+
-+/* PLL Subsystem Base Address */
-+#ifdef CONFIG_TI814X
-+#define PLL_SUBSYS_BASE 0x481C5000
-+#endif
-+
-+/* EMIF Base address */
-+#define EMIF4_0_CFG_BASE 0x4C000000
-+#define EMIF4_1_CFG_BASE 0x4D000000
-+#define DMM_BASE 0x4E000000
-+
-+#ifdef CONFIG_TI816X
-+#define DDRPHY_0_CONFIG_BASE 0x48198000
-+#define DDRPHY_1_CONFIG_BASE 0x4819a000
-+#define DDRPHY_CONFIG_BASE ((emif == 0) ? DDRPHY_0_CONFIG_BASE:DDRPHY_1_CONFIG_BASE)
-+#endif
-+
-+#ifdef CONFIG_TI814X
-+#define DDRPHY_0_CONFIG_BASE (CTRL_BASE + 0x1400)
-+#define DDRPHY_1_CONFIG_BASE (CTRL_BASE + 0x1500)
-+#define DDRPHY_CONFIG_BASE ((emif == 0) ? DDRPHY_0_CONFIG_BASE:DDRPHY_1_CONFIG_BASE)
-+#endif
-+
-+#ifdef CONFIG_AM335X
-+#define DDRPHY_0_CONFIG_BASE (CTRL_BASE + 0x1400)
-+#define DDRPHY_CONFIG_BASE DDRPHY_0_CONFIG_BASE
-+#endif
-+
-+/* GPMC Base address */
-+#define GPMC_BASE 0x50000000
-+
-+/* CPSW Config space */
-+#define TI814X_CPSW_BASE 0x4A100000
-+#define TI814X_CPSW_MDIO_BASE 0x4A100800
-+
-+#define AM335X_CPSW_BASE 0x4A100000
-+#define AM335X_CPSW_MDIO_BASE 0x4A101000
-+
-+#endif /* __TI81XX_HARDWARE_H */
-+
-diff --git a/arch/arm/boards/beaglebone/mux.c b/arch/arm/boards/beaglebone/mux.c
-new file mode 100644
-index 0000000..7fac302
---- /dev/null
-+++ b/arch/arm/boards/beaglebone/mux.c
-@@ -0,0 +1,707 @@
-+/*
-+ * mux.c
-+ *
-+ * 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 version 2.
-+ *
-+ * This program is distributed "as is" WITHOUT ANY WARRANTY of any
-+ * kind, whether express or implied; 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 <config.h>
-+#include <asm/io.h>
-+#include "config.h"
-+#include "common_def.h"
-+#include "hardware.h"
-+
-+#define MUX_CFG(value, offset) \
-+ __raw_writel(value, (CTRL_BASE + offset));
-+
-+/* PAD Control Fields */
-+#define SLEWCTRL (0x1 << 6)
-+#define RXACTIVE (0x1 << 5)
-+#define PULLUP_EN (0x1 << 4) /* Pull UP Selection */
-+#define PULLUDEN (0x0 << 3) /* Pull up enabled */
-+#define PULLUDDIS (0x1 << 3) /* Pull up disabled */
-+#define MODE(val) val
-+
-+/*
-+ * PAD CONTROL OFFSETS
-+ * Field names corresponds to the pad signal name
-+ */
-+struct pad_signals {
-+ int gpmc_ad0;
-+ int gpmc_ad1;
-+ int gpmc_ad2;
-+ int gpmc_ad3;
-+ int gpmc_ad4;
-+ int gpmc_ad5;
-+ int gpmc_ad6;
-+ int gpmc_ad7;
-+ int gpmc_ad8;
-+ int gpmc_ad9;
-+ int gpmc_ad10;
-+ int gpmc_ad11;
-+ int gpmc_ad12;
-+ int gpmc_ad13;
-+ int gpmc_ad14;
-+ int gpmc_ad15;
-+ int gpmc_a0;
-+ int gpmc_a1;
-+ int gpmc_a2;
-+ int gpmc_a3;
-+ int gpmc_a4;
-+ int gpmc_a5;
-+ int gpmc_a6;
-+ int gpmc_a7;
-+ int gpmc_a8;
-+ int gpmc_a9;
-+ int gpmc_a10;
-+ int gpmc_a11;
-+ int gpmc_wait0;
-+ int gpmc_wpn;
-+ int gpmc_be1n;
-+ int gpmc_csn0;
-+ int gpmc_csn1;
-+ int gpmc_csn2;
-+ int gpmc_csn3;
-+ int gpmc_clk;
-+ int gpmc_advn_ale;
-+ int gpmc_oen_ren;
-+ int gpmc_wen;
-+ int gpmc_be0n_cle;
-+ int lcd_data0;
-+ int lcd_data1;
-+ int lcd_data2;
-+ int lcd_data3;
-+ int lcd_data4;
-+ int lcd_data5;
-+ int lcd_data6;
-+ int lcd_data7;
-+ int lcd_data8;
-+ int lcd_data9;
-+ int lcd_data10;
-+ int lcd_data11;
-+ int lcd_data12;
-+ int lcd_data13;
-+ int lcd_data14;
-+ int lcd_data15;
-+ int lcd_vsync;
-+ int lcd_hsync;
-+ int lcd_pclk;
-+ int lcd_ac_bias_en;
-+ int mmc0_dat3;
-+ int mmc0_dat2;
-+ int mmc0_dat1;
-+ int mmc0_dat0;
-+ int mmc0_clk;
-+ int mmc0_cmd;
-+ int mii1_col;
-+ int mii1_crs;
-+ int mii1_rxerr;
-+ int mii1_txen;
-+ int mii1_rxdv;
-+ int mii1_txd3;
-+ int mii1_txd2;
-+ int mii1_txd1;
-+ int mii1_txd0;
-+ int mii1_txclk;
-+ int mii1_rxclk;
-+ int mii1_rxd3;
-+ int mii1_rxd2;
-+ int mii1_rxd1;
-+ int mii1_rxd0;
-+ int rmii1_refclk;
-+ int mdio_data;
-+ int mdio_clk;
-+ int spi0_sclk;
-+ int spi0_d0;
-+ int spi0_d1;
-+ int spi0_cs0;
-+ int spi0_cs1;
-+ int ecap0_in_pwm0_out;
-+ int uart0_ctsn;
-+ int uart0_rtsn;
-+ int uart0_rxd;
-+ int uart0_txd;
-+ int uart1_ctsn;
-+ int uart1_rtsn;
-+ int uart1_rxd;
-+ int uart1_txd;
-+ int i2c0_sda;
-+ int i2c0_scl;
-+ int mcasp0_aclkx;
-+ int mcasp0_fsx;
-+ int mcasp0_axr0;
-+ int mcasp0_ahclkr;
-+ int mcasp0_aclkr;
-+ int mcasp0_fsr;
-+ int mcasp0_axr1;
-+ int mcasp0_ahclkx;
-+ int xdma_event_intr0;
-+ int xdma_event_intr1;
-+ int nresetin_out;
-+ int porz;
-+ int nnmi;
-+ int osc0_in;
-+ int osc0_out;
-+ int rsvd1;
-+ int tms;
-+ int tdi;
-+ int tdo;
-+ int tck;
-+ int ntrst;
-+ int emu0;
-+ int emu1;
-+ int osc1_in;
-+ int osc1_out;
-+ int pmic_power_en;
-+ int rtc_porz;
-+ int rsvd2;
-+ int ext_wakeup;
-+ int enz_kaldo_1p8v;
-+ int usb0_dm;
-+ int usb0_dp;
-+ int usb0_ce;
-+ int usb0_id;
-+ int usb0_vbus;
-+ int usb0_drvvbus;
-+ int usb1_dm;
-+ int usb1_dp;
-+ int usb1_ce;
-+ int usb1_id;
-+ int usb1_vbus;
-+ int usb1_drvvbus;
-+ int ddr_resetn;
-+ int ddr_csn0;
-+ int ddr_cke;
-+ int ddr_ck;
-+ int ddr_nck;
-+ int ddr_casn;
-+ int ddr_rasn;
-+ int ddr_wen;
-+ int ddr_ba0;
-+ int ddr_ba1;
-+ int ddr_ba2;
-+ int ddr_a0;
-+ int ddr_a1;
-+ int ddr_a2;
-+ int ddr_a3;
-+ int ddr_a4;
-+ int ddr_a5;
-+ int ddr_a6;
-+ int ddr_a7;
-+ int ddr_a8;
-+ int ddr_a9;
-+ int ddr_a10;
-+ int ddr_a11;
-+ int ddr_a12;
-+ int ddr_a13;
-+ int ddr_a14;
-+ int ddr_a15;
-+ int ddr_odt;
-+ int ddr_d0;
-+ int ddr_d1;
-+ int ddr_d2;
-+ int ddr_d3;
-+ int ddr_d4;
-+ int ddr_d5;
-+ int ddr_d6;
-+ int ddr_d7;
-+ int ddr_d8;
-+ int ddr_d9;
-+ int ddr_d10;
-+ int ddr_d11;
-+ int ddr_d12;
-+ int ddr_d13;
-+ int ddr_d14;
-+ int ddr_d15;
-+ int ddr_dqm0;
-+ int ddr_dqm1;
-+ int ddr_dqs0;
-+ int ddr_dqsn0;
-+ int ddr_dqs1;
-+ int ddr_dqsn1;
-+ int ddr_vref;
-+ int ddr_vtp;
-+ int ddr_strben0;
-+ int ddr_strben1;
-+ int ain7;
-+ int ain6;
-+ int ain5;
-+ int ain4;
-+ int ain3;
-+ int ain2;
-+ int ain1;
-+ int ain0;
-+ int vrefp;
-+ int vrefn;
-+};
-+
-+struct module_pin_mux {
-+ short reg_offset;
-+ unsigned char val;
-+};
-+
-+struct evm_pin_mux {
-+ struct module_pin_mux *mod_pin_mux;
-+ unsigned short profile;
-+/*
-+* If the device is required on both baseboard & daughter board (ex i2c),
-+* specify DEV_ON_BASEBOARD
-+*/
-+#define DEV_ON_BASEBOARD 0
-+#define DEV_ON_DGHTR_BRD 1
-+ unsigned short device_on;
-+};
-+
-+#define PAD_CTRL_BASE 0x800
-+#define OFFSET(x) (unsigned int) (&((struct pad_signals *) \
-+ (PAD_CTRL_BASE))->x)
-+
-+static struct module_pin_mux uart0_pin_mux[] = {
-+ {OFFSET(uart0_rxd), (MODE(0) | PULLUP_EN | RXACTIVE)}, /* UART0_RXD */
-+ {OFFSET(uart0_txd), (MODE(0) | PULLUDEN)}, /* UART0_TXD */
-+ {-1},
-+};
-+
-+static struct module_pin_mux uart3_pin_mux[] = {
-+ {OFFSET(spi0_cs1), (MODE(1) | PULLUDEN | RXACTIVE)}, /* UART3_RXD */
-+ {OFFSET(ecap0_in_pwm0_out), (MODE(1) | PULLUDEN)}, /* UART3_TXD */
-+ {-1},
-+};
-+
-+
-+#ifdef CONFIG_NAND
-+static struct module_pin_mux nand_pin_mux[] = {
-+ {OFFSET(gpmc_ad0), (MODE(0) | PULLUP_EN | RXACTIVE)}, /* NAND AD0 */
-+ {OFFSET(gpmc_ad1), (MODE(0) | PULLUP_EN | RXACTIVE)}, /* NAND AD1 */
-+ {OFFSET(gpmc_ad2), (MODE(0) | PULLUP_EN | RXACTIVE)}, /* NAND AD2 */
-+ {OFFSET(gpmc_ad3), (MODE(0) | PULLUP_EN | RXACTIVE)}, /* NAND AD3 */
-+ {OFFSET(gpmc_ad4), (MODE(0) | PULLUP_EN | RXACTIVE)}, /* NAND AD4 */
-+ {OFFSET(gpmc_ad5), (MODE(0) | PULLUP_EN | RXACTIVE)}, /* NAND AD5 */
-+ {OFFSET(gpmc_ad6), (MODE(0) | PULLUP_EN | RXACTIVE)}, /* NAND AD6 */
-+ {OFFSET(gpmc_ad7), (MODE(0) | PULLUP_EN | RXACTIVE)}, /* NAND AD7 */
-+ {OFFSET(gpmc_wait0), (MODE(0) | RXACTIVE | PULLUP_EN)}, /* NAND WAIT */
-+ {OFFSET(gpmc_wpn), (MODE(7) | PULLUP_EN | RXACTIVE)}, /* NAND_WPN */
-+ {OFFSET(gpmc_csn0), (MODE(0) | PULLUDEN)}, /* NAND_CS0 */
-+ {OFFSET(gpmc_advn_ale), (MODE(0) | PULLUDEN)}, /* NAND_ADV_ALE */
-+ {OFFSET(gpmc_oen_ren), (MODE(0) | PULLUDEN)}, /* NAND_OE */
-+ {OFFSET(gpmc_wen), (MODE(0) | PULLUDEN)}, /* NAND_WEN */
-+ {OFFSET(gpmc_be0n_cle), (MODE(0) | PULLUDEN)}, /* NAND_BE_CLE */
-+ {-1},
-+};
-+#endif
-+
-+static struct module_pin_mux i2c0_pin_mux[] = {
-+ {OFFSET(i2c0_sda), (MODE(0) | RXACTIVE | PULLUDEN | SLEWCTRL)}, /* I2C_DATA */
-+ {OFFSET(i2c0_scl), (MODE(0) | RXACTIVE | PULLUDEN | SLEWCTRL)}, /* I2C_SCLK */
-+ {-1},
-+};
-+
-+static struct module_pin_mux i2c1_pin_mux[] = {
-+ {OFFSET(spi0_d1), (MODE(2) | RXACTIVE | PULLUDEN | SLEWCTRL)}, /* I2C_DATA */
-+ {OFFSET(spi0_cs0), (MODE(2) | RXACTIVE | PULLUDEN | SLEWCTRL)}, /* I2C_SCLK */
-+ {-1},
-+};
-+
-+static struct module_pin_mux i2c2_pin_mux[] = {
-+ {OFFSET(uart1_ctsn), (MODE(3) | RXACTIVE | PULLUDEN | SLEWCTRL)}, /* I2C_DATA */
-+ {OFFSET(uart1_rtsn), (MODE(3) | RXACTIVE | PULLUDEN | SLEWCTRL)}, /* I2C_SCLK */
-+ {-1},
-+};
-+
-+#ifndef CONFIG_NO_ETH
-+static struct module_pin_mux rgmii1_pin_mux[] = {
-+ {OFFSET(mii1_txen), MODE(2)}, /* RGMII1_TCTL */
-+ {OFFSET(mii1_rxdv), MODE(2) | RXACTIVE}, /* RGMII1_RCTL */
-+ {OFFSET(mii1_txd3), MODE(2)}, /* RGMII1_TD3 */
-+ {OFFSET(mii1_txd2), MODE(2)}, /* RGMII1_TD2 */
-+ {OFFSET(mii1_txd1), MODE(2)}, /* RGMII1_TD1 */
-+ {OFFSET(mii1_txd0), MODE(2)}, /* RGMII1_TD0 */
-+ {OFFSET(mii1_txclk), MODE(2)}, /* RGMII1_TCLK */
-+ {OFFSET(mii1_rxclk), MODE(2) | RXACTIVE}, /* RGMII1_RCLK */
-+ {OFFSET(mii1_rxd3), MODE(2) | RXACTIVE}, /* RGMII1_RD3 */
-+ {OFFSET(mii1_rxd2), MODE(2) | RXACTIVE}, /* RGMII1_RD2 */
-+ {OFFSET(mii1_rxd1), MODE(2) | RXACTIVE}, /* RGMII1_RD1 */
-+ {OFFSET(mii1_rxd0), MODE(2) | RXACTIVE}, /* RGMII1_RD0 */
-+ {OFFSET(mdio_data), MODE(0) | RXACTIVE | PULLUP_EN}, /* MDIO_DATA */
-+ {OFFSET(mdio_clk), MODE(0) | PULLUP_EN}, /* MDIO_CLK */
-+ {-1},
-+};
-+
-+static struct module_pin_mux rgmii2_pin_mux[] = {
-+ {OFFSET(gpmc_a0), MODE(2)}, /* RGMII2_TCTL */
-+ {OFFSET(gpmc_a1), MODE(2) | RXACTIVE}, /* RGMII2_RCTL */
-+ {OFFSET(gpmc_a2), MODE(2)}, /* RGMII2_TD3 */
-+ {OFFSET(gpmc_a3), MODE(2)}, /* RGMII2_TD2 */
-+ {OFFSET(gpmc_a4), MODE(2)}, /* RGMII2_TD1 */
-+ {OFFSET(gpmc_a5), MODE(2)}, /* RGMII2_TD0 */
-+ {OFFSET(gpmc_a6), MODE(2)}, /* RGMII2_TCLK */
-+ {OFFSET(gpmc_a7), MODE(2) | RXACTIVE}, /* RGMII2_RCLK */
-+ {OFFSET(gpmc_a8), MODE(2) | RXACTIVE}, /* RGMII2_RD3 */
-+ {OFFSET(gpmc_a9), MODE(2) | RXACTIVE}, /* RGMII2_RD2 */
-+ {OFFSET(gpmc_a10), MODE(2) | RXACTIVE}, /* RGMII2_RD1 */
-+ {OFFSET(gpmc_a11), MODE(2) | RXACTIVE}, /* RGMII2_RD0 */
-+ {OFFSET(mdio_data), MODE(0) | RXACTIVE | PULLUP_EN}, /* MDIO_DATA */
-+ {OFFSET(mdio_clk), MODE(0) | PULLUP_EN}, /* MDIO_CLK */
-+ {-1},
-+};
-+
-+static struct module_pin_mux mii1_pin_mux[] = {
-+ {OFFSET(mii1_rxerr), MODE(0) | RXACTIVE}, /* MII1_RXERR */
-+ {OFFSET(mii1_txen), MODE(0)}, /* MII1_TXEN */
-+ {OFFSET(mii1_rxdv), MODE(0) | RXACTIVE}, /* MII1_RXDV */
-+ {OFFSET(mii1_txd3), MODE(0)}, /* MII1_TXD3 */
-+ {OFFSET(mii1_txd2), MODE(0)}, /* MII1_TXD2 */
-+ {OFFSET(mii1_txd1), MODE(0)}, /* MII1_TXD1 */
-+ {OFFSET(mii1_txd0), MODE(0)}, /* MII1_TXD0 */
-+ {OFFSET(mii1_txclk), MODE(0) | RXACTIVE}, /* MII1_TXCLK */
-+ {OFFSET(mii1_rxclk), MODE(0) | RXACTIVE}, /* MII1_RXCLK */
-+ {OFFSET(mii1_rxd3), MODE(0) | RXACTIVE}, /* MII1_RXD3 */
-+ {OFFSET(mii1_rxd2), MODE(0) | RXACTIVE}, /* MII1_RXD2 */
-+ {OFFSET(mii1_rxd1), MODE(0) | RXACTIVE}, /* MII1_RXD1 */
-+ {OFFSET(mii1_rxd0), MODE(0) | RXACTIVE}, /* MII1_RXD0 */
-+ {OFFSET(mdio_data), MODE(0) | RXACTIVE | PULLUP_EN}, /* MDIO_DATA */
-+ {OFFSET(mdio_clk), MODE(0) | PULLUP_EN}, /* MDIO_CLK */
-+ {-1},
-+};
-+
-+static struct module_pin_mux rmii1_pin_mux[] = {
-+ {OFFSET(mii1_crs), MODE(1) | RXACTIVE}, /* RMII1_CRS */
-+ {OFFSET(mii1_rxerr), MODE(1) | RXACTIVE}, /* RMII1_RXERR */
-+ {OFFSET(mii1_txen), MODE(1)}, /* RMII1_TXEN */
-+ {OFFSET(mii1_txd1), MODE(1)}, /* RMII1_TXD1 */
-+ {OFFSET(mii1_txd0), MODE(1)}, /* RMII1_TXD0 */
-+ {OFFSET(mii1_rxd1), MODE(1) | RXACTIVE}, /* RMII1_RXD1 */
-+ {OFFSET(mii1_rxd0), MODE(1) | RXACTIVE}, /* RMII1_RXD0 */
-+ {OFFSET(mdio_data), MODE(0) | RXACTIVE | PULLUP_EN}, /* MDIO_DATA */
-+ {OFFSET(mdio_clk), MODE(0) | PULLUP_EN}, /* MDIO_CLK */
-+ {OFFSET(rmii1_refclk), MODE(0) | RXACTIVE}, /* RMII1_REFCLK */
-+ {-1},
-+};
-+#endif
-+
-+#ifdef CONFIG_NOR
-+static struct module_pin_mux nor_pin_mux[] = {
-+ {OFFSET(lcd_data0), MODE(1) | PULLUDEN}, /* NOR_A0 */
-+ {OFFSET(lcd_data1), MODE(1) | PULLUDEN}, /* NOR_A1 */
-+ {OFFSET(lcd_data2), MODE(1) | PULLUDEN}, /* NOR_A2 */
-+ {OFFSET(lcd_data3), MODE(1) | PULLUDEN}, /* NOR_A3 */
-+ {OFFSET(lcd_data4), MODE(1) | PULLUDEN}, /* NOR_A4 */
-+ {OFFSET(lcd_data5), MODE(1) | PULLUDEN}, /* NOR_A5 */
-+ {OFFSET(lcd_data6), MODE(1) | PULLUDEN}, /* NOR_A6 */
-+ {OFFSET(lcd_data7), MODE(1) | PULLUDEN}, /* NOR_A7 */
-+ {OFFSET(gpmc_a8), MODE(0)}, /* NOR_A8 */
-+ {OFFSET(gpmc_a9), MODE(0)}, /* NOR_A9 */
-+ {OFFSET(gpmc_a10), MODE(0)}, /* NOR_A10 */
-+ {OFFSET(gpmc_a11), MODE(0)}, /* NOR_A11 */
-+ {OFFSET(lcd_data8), MODE(1) | PULLUDEN}, /* NOR_A12 */
-+ {OFFSET(lcd_data9), MODE(1) | PULLUDEN}, /* NOR_A13 */
-+ {OFFSET(lcd_data10), MODE(1) | PULLUDEN}, /* NOR_A14 */
-+ {OFFSET(lcd_data11), MODE(1) | PULLUDEN}, /* NOR_A15 */
-+ {OFFSET(lcd_data12), MODE(1) | PULLUDEN}, /* NOR_A16 */
-+ {OFFSET(lcd_data13), MODE(1) | PULLUDEN}, /* NOR_A17 */
-+ {OFFSET(lcd_data14), MODE(1) | PULLUDEN}, /* NOR_A18 */
-+ {OFFSET(lcd_data15), MODE(1) | PULLUDEN}, /* NOR_A19 */
-+ {OFFSET(gpmc_a4), MODE(4)}, /* NOR_A20 */
-+ {OFFSET(gpmc_a5), MODE(4)}, /* NOR_A21 */
-+ {OFFSET(gpmc_a6), MODE(4)}, /* NOR_A22 */
-+ {OFFSET(gpmc_ad0), MODE(0) | RXACTIVE}, /* NOR_AD0 */
-+ {OFFSET(gpmc_ad1), MODE(0) | RXACTIVE}, /* NOR_AD1 */
-+ {OFFSET(gpmc_ad2), MODE(0) | RXACTIVE}, /* NOR_AD2 */
-+ {OFFSET(gpmc_ad3), MODE(0) | RXACTIVE}, /* NOR_AD3 */
-+ {OFFSET(gpmc_ad4), MODE(0) | RXACTIVE}, /* NOR_AD4 */
-+ {OFFSET(gpmc_ad5), MODE(0) | RXACTIVE}, /* NOR_AD5 */
-+ {OFFSET(gpmc_ad6), MODE(0) | RXACTIVE}, /* NOR_AD6 */
-+ {OFFSET(gpmc_ad7), MODE(0) | RXACTIVE}, /* NOR_AD7 */
-+ {OFFSET(gpmc_ad8), MODE(0) | RXACTIVE}, /* NOR_AD8 */
-+ {OFFSET(gpmc_ad9), MODE(0) | RXACTIVE}, /* NOR_AD9 */
-+ {OFFSET(gpmc_ad10), MODE(0) | RXACTIVE}, /* NOR_AD10 */
-+ {OFFSET(gpmc_ad11), MODE(0) | RXACTIVE}, /* NOR_AD11 */
-+ {OFFSET(gpmc_ad12), MODE(0) | RXACTIVE}, /* NOR_AD12 */
-+ {OFFSET(gpmc_ad13), MODE(0) | RXACTIVE}, /* NOR_AD13 */
-+ {OFFSET(gpmc_ad14), MODE(0) | RXACTIVE}, /* NOR_AD14 */
-+ {OFFSET(gpmc_ad15), MODE(0) | RXACTIVE}, /* NOR_AD15 */
-+ {OFFSET(gpmc_csn0), (MODE(0) | PULLUP_EN)}, /* NOR_CE */
-+ {OFFSET(gpmc_oen_ren), (MODE(0) | PULLUP_EN)}, /* NOR_OE */
-+ {OFFSET(gpmc_wen), (MODE(0) | PULLUP_EN)}, /* NOR_WEN */
-+ {OFFSET(gpmc_wait0), (MODE(0) | RXACTIVE | PULLUP_EN)}, /* NOR WAIT */
-+ {OFFSET(lcd_ac_bias_en), MODE(7) | RXACTIVE | PULLUDEN}, /* NOR RESET */
-+ {-1},
-+};
-+#endif
-+
-+#ifdef CONFIG_MMC
-+static struct module_pin_mux mmc0_pin_mux[] = {
-+ {OFFSET(mmc0_dat3), (MODE(0) | RXACTIVE | PULLUP_EN)}, /* MMC0_DAT3 */
-+ {OFFSET(mmc0_dat2), (MODE(0) | RXACTIVE | PULLUP_EN)}, /* MMC0_DAT2 */
-+ {OFFSET(mmc0_dat1), (MODE(0) | RXACTIVE | PULLUP_EN)}, /* MMC0_DAT1 */
-+ {OFFSET(mmc0_dat0), (MODE(0) | RXACTIVE | PULLUP_EN)}, /* MMC0_DAT0 */
-+ {OFFSET(mmc0_clk), (MODE(0) | RXACTIVE | PULLUP_EN)}, /* MMC0_CLK */
-+ {OFFSET(mmc0_cmd), (MODE(0) | RXACTIVE | PULLUP_EN)}, /* MMC0_CMD */
-+ {OFFSET(mcasp0_aclkr), (MODE(4) | RXACTIVE)}, /* MMC0_WP */
-+ {OFFSET(spi0_cs1), (MODE(5) | RXACTIVE | PULLUP_EN)}, /* MMC0_CD */
-+ {-1},
-+};
-+
-+static struct module_pin_mux mmc1_pin_mux[] = {
-+ {OFFSET(gpmc_ad3), (MODE(1) | RXACTIVE)}, /* MMC1_DAT3 */
-+ {OFFSET(gpmc_ad2), (MODE(1) | RXACTIVE)}, /* MMC1_DAT2 */
-+ {OFFSET(gpmc_ad1), (MODE(1) | RXACTIVE)}, /* MMC1_DAT1 */
-+ {OFFSET(gpmc_ad0), (MODE(1) | RXACTIVE)}, /* MMC1_DAT0 */
-+ {OFFSET(gpmc_csn1), (MODE(2) | RXACTIVE | PULLUP_EN)}, /* MMC1_CLK */
-+ {OFFSET(gpmc_csn2), (MODE(2) | RXACTIVE | PULLUP_EN)}, /* MMC1_CMD */
-+ {OFFSET(uart1_rxd), (MODE(1) | RXACTIVE | PULLUP_EN)}, /* MMC1_WP */
-+ {OFFSET(mcasp0_fsx), (MODE(4) | RXACTIVE)}, /* MMC1_CD */
-+ {-1},
-+};
-+#endif
-+
-+#ifdef CONFIG_SPI
-+static struct module_pin_mux spi0_pin_mux[] = {
-+ {OFFSET(spi0_sclk), MODE(0) | PULLUDEN | RXACTIVE}, /*SPI0_SCLK */
-+ {OFFSET(spi0_d0), MODE(0) | PULLUDEN | PULLUP_EN |
-+ RXACTIVE}, /*SPI0_D0 */
-+ {OFFSET(spi0_d1), MODE(0) | PULLUDEN |
-+ RXACTIVE}, /*SPI0_D1 */
-+ {OFFSET(spi0_cs0), MODE(0) | PULLUDEN | PULLUP_EN | RXACTIVE}, /*SPI0_CS0 */
-+ {-1},
-+};
-+
-+static struct module_pin_mux spi1_pin_mux[] = {
-+ {OFFSET(mcasp0_aclkx), MODE(3) | PULLUDEN | RXACTIVE}, /*SPI0_SCLK */
-+ {OFFSET(mcasp0_fsx), MODE(3) | PULLUDEN | PULLUP_EN |
-+ RXACTIVE}, /*SPI0_D0 */
-+ {OFFSET(mcasp0_axr0), MODE(3) | PULLUDEN | RXACTIVE}, /*SPI0_D1 */
-+ {OFFSET(mcasp0_ahclkr), MODE(3) | PULLUDEN | PULLUP_EN |
-+ RXACTIVE}, /*SPI0_CS0 */
-+ {-1},
-+};
-+#endif
-+
-+/*
-+ * Update the structure with the modules present in the general purpose
-+ * board and the profiles in which the modules are present.
-+ * If the module is physically present but if it is not available
-+ * in any of the profile, then do not update it.
-+ * For eg, nand is avialable only in the profiles 0 and 1, whereas
-+ * UART0 is available in all the profiles.
-+ */
-+static struct evm_pin_mux general_purpose_evm_pin_mux[] = {
-+ {uart0_pin_mux, PROFILE_ALL, DEV_ON_BASEBOARD},
-+ {i2c1_pin_mux, PROFILE_ALL & ~PROFILE_2 & ~PROFILE_4, DEV_ON_BASEBOARD},
-+#ifdef CONFIG_NAND
-+ {nand_pin_mux, PROFILE_ALL & ~PROFILE_2 & ~PROFILE_3, DEV_ON_DGHTR_BRD},
-+#endif
-+#ifndef CONFIG_NO_ETH
-+ {rgmii1_pin_mux, PROFILE_ALL, DEV_ON_BASEBOARD},
-+ {rgmii2_pin_mux, PROFILE_1 | PROFILE_2 | PROFILE_4 | PROFILE_6,
-+ DEV_ON_DGHTR_BRD},
-+#endif
-+#ifdef CONFIG_NOR
-+ {nor_pin_mux, PROFILE_3, DEV_ON_DGHTR_BRD},
-+#endif
-+#ifdef CONFIG_MMC
-+ {mmc0_pin_mux, PROFILE_ALL, DEV_ON_BASEBOARD},
-+ {mmc1_pin_mux, PROFILE_2, DEV_ON_DGHTR_BRD},
-+#endif
-+#ifdef CONFIG_SPI
-+ {spi0_pin_mux, PROFILE_2, DEV_ON_DGHTR_BRD},
-+#endif
-+ {0},
-+};
-+
-+/*
-+ * Update the structure with the modules present in the ia daughter board and
-+ * the profiles in which the modules are present. If the module is physically
-+ * present but if it is not available in any of the profile, then do not update
-+ */
-+static struct evm_pin_mux ia_motor_control_evm_pin_mux[] = {
-+#ifdef CONFIG_NAND
-+ {nand_pin_mux, PROFILE_ALL, DEV_ON_DGHTR_BRD},
-+#endif
-+#ifdef CONFIG_MMC
-+ {mmc0_pin_mux, PROFILE_ALL, DEV_ON_BASEBOARD},
-+#endif
-+#ifdef CONFIG_SPI
-+ {spi1_pin_mux, PROFILE_ALL, DEV_ON_DGHTR_BRD},
-+#endif
-+#ifndef CONFIG_NO_ETH
-+ {mii1_pin_mux, PROFILE_ALL, DEV_ON_BASEBOARD},
-+#endif
-+ {uart3_pin_mux, PROFILE_ALL, DEV_ON_DGHTR_BRD},
-+ {0},
-+};
-+
-+/* IP Phone EVM has single profile */
-+static struct evm_pin_mux ip_phone_evm_pin_mux[] = {
-+ {uart0_pin_mux, PROFILE_NONE, DEV_ON_BASEBOARD},
-+ {i2c1_pin_mux, PROFILE_NONE, DEV_ON_BASEBOARD},
-+#ifdef CONFIG_NAND
-+ {nand_pin_mux, PROFILE_0, DEV_ON_BASEBOARD},
-+#endif
-+#ifndef CONFIG_NO_ETH
-+ {rgmii1_pin_mux, PROFILE_0, DEV_ON_BASEBOARD},
-+ {rgmii2_pin_mux, PROFILE_0, DEV_ON_DGHTR_BRD},
-+#endif
-+#ifdef CONFIG_MMC
-+ {mmc0_pin_mux, PROFILE_0, DEV_ON_BASEBOARD},
-+#endif
-+ {0},
-+};
-+
-+/* Base board has single profile */
-+static struct evm_pin_mux low_cost_evm_pin_mux[] = {
-+ {uart0_pin_mux, PROFILE_NONE, DEV_ON_BASEBOARD},
-+ {i2c1_pin_mux, PROFILE_NONE, DEV_ON_BASEBOARD},
-+#ifdef CONFIG_NAND
-+ {nand_pin_mux, PROFILE_NONE, DEV_ON_BASEBOARD},
-+#endif
-+#ifndef CONFIG_NO_ETH
-+ {rgmii1_pin_mux, PROFILE_NONE, DEV_ON_BASEBOARD},
-+#endif
-+#ifdef CONFIG_MMC
-+ {mmc0_pin_mux, PROFILE_NONE, DEV_ON_BASEBOARD},
-+#endif
-+ {0},
-+};
-+
-+static struct evm_pin_mux beaglebone_pin_mux[] = {
-+ {uart0_pin_mux, PROFILE_ALL, DEV_ON_BASEBOARD},
-+ {i2c1_pin_mux, PROFILE_ALL & ~PROFILE_2 & ~PROFILE_4, DEV_ON_BASEBOARD},
-+ {i2c2_pin_mux, PROFILE_ALL, DEV_ON_BASEBOARD},
-+#ifdef CONFIG_NAND
-+ {nand_pin_mux, PROFILE_ALL & ~PROFILE_2 & ~PROFILE_3, DEV_ON_DGHTR_BRD},
-+#endif
-+#ifndef CONFIG_NO_ETH
-+ {mii1_pin_mux, PROFILE_ALL, DEV_ON_BASEBOARD},
-+#endif
-+#ifdef CONFIG_MMC
-+ {mmc0_pin_mux, PROFILE_ALL, DEV_ON_BASEBOARD},
-+ {mmc1_pin_mux, PROFILE_2, DEV_ON_DGHTR_BRD},
-+#endif
-+#ifdef CONFIG_SPI
-+ {spi0_pin_mux, PROFILE_2, DEV_ON_DGHTR_BRD},
-+#endif
-+ {0},
-+};
-+
-+static struct evm_pin_mux beaglebone_old_pin_mux[] = {
-+ {uart0_pin_mux, PROFILE_ALL, DEV_ON_BASEBOARD},
-+ {i2c1_pin_mux, PROFILE_ALL & ~PROFILE_2 & ~PROFILE_4, DEV_ON_BASEBOARD},
-+ {i2c2_pin_mux, PROFILE_ALL, DEV_ON_BASEBOARD},
-+#ifdef CONFIG_NAND
-+ {nand_pin_mux, PROFILE_ALL & ~PROFILE_2 & ~PROFILE_3, DEV_ON_DGHTR_BRD},
-+#endif
-+#ifndef CONFIG_NO_ETH
-+ {rmii1_pin_mux, PROFILE_ALL, DEV_ON_BASEBOARD},
-+#endif
-+#ifdef CONFIG_MMC
-+ {mmc0_pin_mux, PROFILE_ALL, DEV_ON_BASEBOARD},
-+ {mmc1_pin_mux, PROFILE_2, DEV_ON_DGHTR_BRD},
-+#endif
-+#ifdef CONFIG_SPI
-+ {spi0_pin_mux, PROFILE_2, DEV_ON_DGHTR_BRD},
-+#endif
-+ {0},
-+};
-+
-+static struct evm_pin_mux *am335x_evm_pin_mux[] = {
-+ beaglebone_pin_mux,
-+ general_purpose_evm_pin_mux,
-+ ia_motor_control_evm_pin_mux,
-+ ip_phone_evm_pin_mux,
-+ low_cost_evm_pin_mux,
-+};
-+
-+/*
-+ * Configure the pin mux for the module
-+ */
-+static void configure_module_pin_mux(struct module_pin_mux *mod_pin_mux)
-+{
-+ int i;
-+
-+ if (!mod_pin_mux)
-+ return;
-+
-+ for (i = 0; mod_pin_mux[i].reg_offset != -1; i++)
-+ MUX_CFG(mod_pin_mux[i].val, mod_pin_mux[i].reg_offset);
-+}
-+
-+/*
-+ * Check each module in the daughter board(first argument) whether it is
-+ * available in the selected profile(second argument). If the module is not
-+ * available in the selected profile, skip the corresponding configuration.
-+ */
-+static void set_evm_pin_mux(struct evm_pin_mux *pin_mux,
-+ int prof, unsigned int dghtr_brd_flg)
-+{
-+ int i;
-+
-+ if (!pin_mux)
-+ return;
-+
-+ /*
-+ * Only General Purpose & Industrial Auto Motro Control
-+ * EVM has profiles. So check if this evm has profile.
-+ * If not, ignore the profile comparison
-+ */
-+
-+ /*
-+ * If the device is on baseboard, directly configure it. Else (device on
-+ * Daughter board), check if the daughter card is detected.
-+ */
-+
-+ for (i = 0; pin_mux[i].mod_pin_mux != 0; i++) {
-+ if ((pin_mux[i].profile & prof) ||
-+ (prof == PROFILE_NONE)) {
-+ if (pin_mux->device_on == DEV_ON_BASEBOARD)
-+ configure_module_pin_mux(pin_mux[i].
-+ mod_pin_mux);
-+ else if (dghtr_brd_flg)
-+ configure_module_pin_mux(pin_mux[i].
-+ mod_pin_mux);
-+ }
-+ }
-+}
-+
-+void configure_evm_pin_mux(unsigned char dghtr_brd_id, char version[4], unsigned short
-+ profile, unsigned int daughter_board_flag)
-+{
-+ if (dghtr_brd_id > BASE_BOARD)
-+ return;
-+
-+ /* Setup correct evm pinmux for older bone boards (Rev < A2) */
-+ if (dghtr_brd_id == BONE_BOARD &&
-+ (!strncmp(version, "00A2", 4) || !strncmp(version, "00A1", 4)))
-+ am335x_evm_pin_mux[dghtr_brd_id] = beaglebone_old_pin_mux;
-+
-+ set_evm_pin_mux(am335x_evm_pin_mux[dghtr_brd_id], profile,
-+ daughter_board_flag);
-+}
-+
-+void enable_i2c0_pin_mux(void)
-+{
-+ configure_module_pin_mux(i2c0_pin_mux);
-+}
-+
-+void enable_i2c1_pin_mux(void)
-+{
-+ configure_module_pin_mux(i2c1_pin_mux);
-+}
-+
-+void enable_i2c2_pin_mux(void)
-+{
-+ configure_module_pin_mux(i2c2_pin_mux);
-+}
-+
-+void enable_uart0_pin_mux(void)
-+{
-+ configure_module_pin_mux(uart0_pin_mux);
-+}
-diff --git a/arch/arm/boards/beaglebone/pll.c b/arch/arm/boards/beaglebone/pll.c
-new file mode 100644
-index 0000000..bc09fea
---- /dev/null
-+++ b/arch/arm/boards/beaglebone/pll.c
-@@ -0,0 +1,293 @@
-+/*
-+ * pll.c
-+ *
-+ * 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 version 2.
-+ *
-+ * This program is distributed "as is" WITHOUT ANY WARRANTY of any
-+ * kind, whether express or implied; 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/io.h>
-+#include "config.h"
-+#include "common_def.h"
-+#include "cpu.h"
-+#include "clock.h"
-+#include "hardware.h"
-+
-+#define PRCM_MOD_EN 0x2
-+#define PRCM_FORCE_WAKEUP 0x2
-+
-+#define PRCM_EMIF_CLK_ACTIVITY (0x1 << 2)
-+#define PRCM_L3_GCLK_ACTIVITY (0x1 << 4)
-+
-+#define PLL_BYPASS_MODE 0x4
-+#define PLL_LOCK_MODE 0x7
-+#define PLL_MULTIPLIER_SHIFT 8
-+
-+static void interface_clocks_enable(void)
-+{
-+ /* Enable all the Interconnect Modules */
-+ __raw_writel(PRCM_MOD_EN, CM_PER_L3_CLKCTRL);
-+ while (__raw_readl(CM_PER_L3_CLKCTRL) != PRCM_MOD_EN);
-+
-+ __raw_writel(PRCM_MOD_EN, CM_PER_L4LS_CLKCTRL);
-+ while (__raw_readl(CM_PER_L4LS_CLKCTRL) != PRCM_MOD_EN);
-+
-+ __raw_writel(PRCM_MOD_EN, CM_PER_L4FW_CLKCTRL);
-+ while (__raw_readl(CM_PER_L4FW_CLKCTRL) != PRCM_MOD_EN);
-+
-+ __raw_writel(PRCM_MOD_EN, CM_WKUP_L4WKUP_CLKCTRL);
-+ while (__raw_readl(CM_WKUP_L4WKUP_CLKCTRL) != PRCM_MOD_EN);
-+
-+ __raw_writel(PRCM_MOD_EN, CM_PER_L3_INSTR_CLKCTRL);
-+ while (__raw_readl(CM_PER_L3_INSTR_CLKCTRL) != PRCM_MOD_EN);
-+
-+ __raw_writel(PRCM_MOD_EN, CM_PER_L4HS_CLKCTRL);
-+ while (__raw_readl(CM_PER_L4HS_CLKCTRL) != PRCM_MOD_EN);
-+
-+ __raw_writel(PRCM_MOD_EN, CM_PER_SPI1_CLKCTRL);
-+ while (__raw_readl(CM_PER_SPI1_CLKCTRL) != PRCM_MOD_EN);
-+
-+ /* GPIO0 */
-+ __raw_writel(PRCM_MOD_EN, CM_WKUP_GPIO0_CLKCTRL);
-+ while (__raw_readl(CM_WKUP_GPIO0_CLKCTRL) != PRCM_MOD_EN);
-+}
-+
-+static void power_domain_transition_enable(void)
-+{
-+ /*
-+ * Force power domain wake up transition
-+ * Ensure that the corresponding interface clock is active before
-+ * using the peripheral
-+ */
-+ __raw_writel(PRCM_FORCE_WAKEUP, CM_PER_L3_CLKSTCTRL);
-+
-+ __raw_writel(PRCM_FORCE_WAKEUP, CM_PER_L4LS_CLKSTCTRL);
-+
-+ __raw_writel(PRCM_FORCE_WAKEUP, CM_WKUP_CLKSTCTRL);
-+
-+ __raw_writel(PRCM_FORCE_WAKEUP, CM_PER_L4FW_CLKSTCTRL);
-+
-+ __raw_writel(PRCM_FORCE_WAKEUP, CM_PER_L3S_CLKSTCTRL);
-+}
-+
-+/*
-+ * Enable the module clock and the power domain for required peripherals
-+ */
-+static void per_clocks_enable(void)
-+{
-+ /* Enable the module clock */
-+ __raw_writel(PRCM_MOD_EN, CM_PER_TIMER2_CLKCTRL);
-+ while (__raw_readl(CM_PER_TIMER2_CLKCTRL) != PRCM_MOD_EN);
-+
-+ /* Select the Master osc 24 MHZ as Timer2 clock source */
-+ __raw_writel(0x1, CLKSEL_TIMER2_CLK);
-+
-+ /* UART0 */
-+ __raw_writel(PRCM_MOD_EN, CM_WKUP_UART0_CLKCTRL);
-+ while (__raw_readl(CM_WKUP_UART0_CLKCTRL) != PRCM_MOD_EN);
-+
-+ /* UART3 */
-+ __raw_writel(PRCM_MOD_EN, CM_PER_UART3_CLKCTRL);
-+ while (__raw_readl(CM_PER_UART3_CLKCTRL) != PRCM_MOD_EN);
-+
-+ /* GPMC */
-+ __raw_writel(PRCM_MOD_EN, CM_PER_GPMC_CLKCTRL);
-+ while (__raw_readl(CM_PER_GPMC_CLKCTRL) != PRCM_MOD_EN);
-+
-+ /* ELM */
-+ __raw_writel(PRCM_MOD_EN, CM_PER_ELM_CLKCTRL);
-+ while (__raw_readl(CM_PER_ELM_CLKCTRL) != PRCM_MOD_EN);
-+
-+ /* i2c0 */
-+ __raw_writel(PRCM_MOD_EN, CM_WKUP_I2C0_CLKCTRL);
-+ while (__raw_readl(CM_WKUP_I2C0_CLKCTRL) != PRCM_MOD_EN);
-+
-+ /* i2c1 */
-+ __raw_writel(PRCM_MOD_EN, CM_PER_I2C1_CLKCTRL);
-+ while (__raw_readl(CM_PER_I2C1_CLKCTRL) != PRCM_MOD_EN);
-+
-+ /* i2c2 */
-+ __raw_writel(PRCM_MOD_EN, CM_PER_I2C2_CLKCTRL);
-+ while (__raw_readl(CM_PER_I2C2_CLKCTRL) != PRCM_MOD_EN);
-+
-+ /* Ethernet */
-+ __raw_writel(PRCM_MOD_EN, CM_PER_CPGMAC0_CLKCTRL);
-+ __raw_writel(PRCM_MOD_EN, CM_PER_CPSW_CLKSTCTRL);
-+ while ((__raw_readl(CM_PER_CPGMAC0_CLKCTRL) & 0x30000) != 0x0);
-+
-+ /* MMC 0 & 1 */
-+ __raw_writel(PRCM_MOD_EN, CM_PER_MMC0_CLKCTRL);
-+ while (__raw_readl(CM_PER_MMC0_CLKCTRL) != PRCM_MOD_EN);
-+ __raw_writel(PRCM_MOD_EN, CM_PER_MMC1_CLKCTRL);
-+ while (__raw_readl(CM_PER_MMC1_CLKCTRL) != PRCM_MOD_EN);
-+
-+ /* Enable the control module though RBL would have done it*/
-+ __raw_writel(PRCM_MOD_EN, CM_WKUP_CONTROL_CLKCTRL);
-+ while (__raw_readl(CM_WKUP_CONTROL_CLKCTRL) != PRCM_MOD_EN);
-+
-+ /* SPI 0 & 1 */
-+ __raw_writel(PRCM_MOD_EN, CM_PER_SPI0_CLKCTRL);
-+ while (__raw_readl(CM_PER_SPI0_CLKCTRL) != PRCM_MOD_EN);
-+
-+ __raw_writel(PRCM_MOD_EN, CM_PER_SPI1_CLKCTRL);
-+ while (__raw_readl(CM_PER_SPI1_CLKCTRL) != PRCM_MOD_EN);
-+}
-+
-+void mpu_pll_config(int mpupll_M)
-+{
-+ u32 clkmode, clksel, div_m2;
-+
-+ clkmode = __raw_readl(CM_CLKMODE_DPLL_MPU);
-+ clksel = __raw_readl(CM_CLKSEL_DPLL_MPU);
-+ div_m2 = __raw_readl(CM_DIV_M2_DPLL_MPU);
-+
-+ /* Set the PLL to bypass Mode */
-+ __raw_writel(PLL_BYPASS_MODE, CM_CLKMODE_DPLL_MPU);
-+
-+ while(__raw_readl(CM_IDLEST_DPLL_MPU) != 0x00000100);
-+
-+ clksel = clksel & (~0x7ffff);
-+ clksel = clksel | ((mpupll_M << 0x8) | MPUPLL_N);
-+ __raw_writel(clksel, CM_CLKSEL_DPLL_MPU);
-+
-+ div_m2 = div_m2 & ~0x1f;
-+ div_m2 = div_m2 | MPUPLL_M2;
-+ __raw_writel(div_m2, CM_DIV_M2_DPLL_MPU);
-+
-+ clkmode = clkmode | 0x7;
-+ __raw_writel(clkmode, CM_CLKMODE_DPLL_MPU);
-+
-+ while(__raw_readl(CM_IDLEST_DPLL_MPU) != 0x1);
-+}
-+
-+static void core_pll_config(void)
-+{
-+ u32 clkmode, clksel, div_m4, div_m5, div_m6;
-+
-+ clkmode = __raw_readl(CM_CLKMODE_DPLL_CORE);
-+ clksel = __raw_readl(CM_CLKSEL_DPLL_CORE);
-+ div_m4 = __raw_readl(CM_DIV_M4_DPLL_CORE);
-+ div_m5 = __raw_readl(CM_DIV_M5_DPLL_CORE);
-+ div_m6 = __raw_readl(CM_DIV_M6_DPLL_CORE);
-+
-+ /* Set the PLL to bypass Mode */
-+ __raw_writel(PLL_BYPASS_MODE, CM_CLKMODE_DPLL_CORE);
-+
-+ while(__raw_readl(CM_IDLEST_DPLL_CORE) != 0x00000100);
-+
-+ clksel = clksel & (~0x7ffff);
-+ clksel = clksel | ((COREPLL_M << 0x8) | COREPLL_N);
-+ __raw_writel(clksel, CM_CLKSEL_DPLL_CORE);
-+
-+ div_m4 = div_m4 & ~0x1f;
-+ div_m4 = div_m4 | COREPLL_M4;
-+ __raw_writel(div_m4, CM_DIV_M4_DPLL_CORE);
-+
-+ div_m5 = div_m5 & ~0x1f;
-+ div_m5 = div_m5 | COREPLL_M5;
-+ __raw_writel(div_m5, CM_DIV_M5_DPLL_CORE);
-+
-+ div_m6 = div_m6 & ~0x1f;
-+ div_m6 = div_m6 | COREPLL_M6;
-+ __raw_writel(div_m6, CM_DIV_M6_DPLL_CORE);
-+
-+
-+ clkmode = clkmode | 0x7;
-+ __raw_writel(clkmode, CM_CLKMODE_DPLL_CORE);
-+
-+ while(__raw_readl(CM_IDLEST_DPLL_CORE) != 0x1);
-+}
-+
-+static void per_pll_config(void)
-+{
-+ u32 clkmode, clksel, div_m2;
-+
-+ clkmode = __raw_readl(CM_CLKMODE_DPLL_PER);
-+ clksel = __raw_readl(CM_CLKSEL_DPLL_PER);
-+ div_m2 = __raw_readl(CM_DIV_M2_DPLL_PER);
-+
-+ /* Set the PLL to bypass Mode */
-+ __raw_writel(PLL_BYPASS_MODE, CM_CLKMODE_DPLL_PER);
-+
-+ while(__raw_readl(CM_IDLEST_DPLL_PER) != 0x00000100);
-+
-+ clksel = clksel & (~0x7ffff);
-+ clksel = clksel | ((PERPLL_M << 0x8) | PERPLL_N);
-+ __raw_writel(clksel, CM_CLKSEL_DPLL_PER);
-+
-+ div_m2 = div_m2 & ~0x7f;
-+ div_m2 = div_m2 | PERPLL_M2;
-+ __raw_writel(div_m2, CM_DIV_M2_DPLL_PER);
-+
-+ clkmode = clkmode | 0x7;
-+ __raw_writel(clkmode, CM_CLKMODE_DPLL_PER);
-+
-+ while(__raw_readl(CM_IDLEST_DPLL_PER) != 0x1);
-+}
-+
-+static void ddr_pll_config(void)
-+{
-+ u32 clkmode, clksel, div_m2;
-+
-+ clkmode = __raw_readl(CM_CLKMODE_DPLL_DDR);
-+ clksel = __raw_readl(CM_CLKSEL_DPLL_DDR);
-+ div_m2 = __raw_readl(CM_DIV_M2_DPLL_DDR);
-+
-+ /* Set the PLL to bypass Mode */
-+ clkmode = (clkmode & 0xfffffff8) | 0x00000004;
-+ __raw_writel(clkmode, CM_CLKMODE_DPLL_DDR);
-+
-+ while ((__raw_readl(CM_IDLEST_DPLL_DDR) & 0x00000100) != 0x00000100);
-+
-+ clksel = clksel & (~0x7ffff);
-+ clksel = clksel | ((DDRPLL_M << 0x8) | DDRPLL_N);
-+ __raw_writel(clksel, CM_CLKSEL_DPLL_DDR);
-+
-+ div_m2 = div_m2 & 0xFFFFFFE0;
-+ div_m2 = div_m2 | DDRPLL_M2;
-+ __raw_writel(div_m2, CM_DIV_M2_DPLL_DDR);
-+
-+ clkmode = (clkmode & 0xfffffff8) | 0x7;
-+ __raw_writel(clkmode, CM_CLKMODE_DPLL_DDR);
-+
-+ while ((__raw_readl(CM_IDLEST_DPLL_DDR) & 0x00000001) != 0x1);
-+}
-+
-+void enable_ddr_clocks(void)
-+{
-+ /* Enable the EMIF_FW Functional clock */
-+ __raw_writel(PRCM_MOD_EN, CM_PER_EMIF_FW_CLKCTRL);
-+ /* Enable EMIF0 Clock */
-+ __raw_writel(PRCM_MOD_EN, CM_PER_EMIF_CLKCTRL);
-+ /* Poll for emif_gclk & L3_G clock are active */
-+ while ((__raw_readl(CM_PER_L3_CLKSTCTRL) & (PRCM_EMIF_CLK_ACTIVITY |
-+ PRCM_L3_GCLK_ACTIVITY)) != (PRCM_EMIF_CLK_ACTIVITY |
-+ PRCM_L3_GCLK_ACTIVITY));
-+ /* Poll if module is functional */
-+ while ((__raw_readl(CM_PER_EMIF_CLKCTRL)) != PRCM_MOD_EN);
-+
-+}
-+
-+/*
-+ * Configure the PLL/PRCM for necessary peripherals
-+ */
-+void pll_init()
-+{
-+ mpu_pll_config(MPUPLL_M_500);
-+ core_pll_config();
-+ per_pll_config();
-+ ddr_pll_config();
-+ /* Enable the required interconnect clocks */
-+ interface_clocks_enable();
-+ /* Enable power domain transition */
-+ power_domain_transition_enable();
-+ /* Enable the required peripherals */
-+ per_clocks_enable();
-+}
-diff --git a/arch/arm/configs/am335x_beaglebone_defconfig b/arch/arm/configs/am335x_beaglebone_defconfig
-new file mode 100644
-index 0000000..a4279f1
---- /dev/null
-+++ b/arch/arm/configs/am335x_beaglebone_defconfig
-@@ -0,0 +1,58 @@
-+CONFIG_ARCH_OMAP=y
-+# CONFIG_OMAP3_CLOCK_CONFIG is not set
-+# CONFIG_OMAP_GPMC is not set
-+CONFIG_MACH_BEAGLEBONE=y
-+CONFIG_AEABI=y
-+CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y
-+CONFIG_ARM_UNWIND=y
-+CONFIG_MMU=y
-+CONFIG_TEXT_BASE=0x81000000
-+CONFIG_KALLSYMS=y
-+CONFIG_PROMPT="barebox> "
-+CONFIG_LONGHELP=y
-+CONFIG_HUSH_FANCY_PROMPT=y
-+CONFIG_CMDLINE_EDITING=y
-+CONFIG_AUTO_COMPLETE=y
-+CONFIG_MENU=y
-+# CONFIG_TIMESTAMP is not set
-+CONFIG_DEFAULT_ENVIRONMENT_GENERIC_NEW=y
-+CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/beaglebone/env"
-+CONFIG_CMD_EDIT=y
-+CONFIG_CMD_SLEEP=y
-+CONFIG_CMD_SAVEENV=y
-+CONFIG_CMD_EXPORT=y
-+CONFIG_CMD_PRINTENV=y
-+CONFIG_CMD_READLINE=y
-+CONFIG_CMD_MENU=y
-+CONFIG_CMD_MENU_MANAGEMENT=y
-+CONFIG_CMD_TIME=y
-+CONFIG_CMD_BASENAME=y
-+CONFIG_CMD_DIRNAME=y
-+CONFIG_CMD_ECHO_E=y
-+CONFIG_CMD_MEMINFO=y
-+CONFIG_CMD_CRC=y
-+CONFIG_CMD_CRC_CMP=y
-+CONFIG_CMD_BOOTM_SHOW_TYPE=y
-+CONFIG_CMD_BOOTM_VERBOSE=y
-+CONFIG_CMD_BOOTM_INITRD=y
-+CONFIG_CMD_BOOTM_OFTREE=y
-+CONFIG_CMD_BOOTM_OFTREE_UIMAGE=y
-+CONFIG_CMD_UIMAGE=y
-+CONFIG_CMD_RESET=y
-+CONFIG_CMD_GO=y
-+CONFIG_CMD_OFTREE=y
-+CONFIG_CMD_TIMEOUT=y
-+CONFIG_CMD_PARTITION=y
-+CONFIG_CMD_MAGICVAR=y
-+CONFIG_CMD_MAGICVAR_HELP=y
-+CONFIG_CMD_GPIO=y
-+CONFIG_CMD_UNCOMPRESS=y
-+CONFIG_DRIVER_SERIAL_NS16550=y
-+CONFIG_DRIVER_SERIAL_NS16550_OMAP_EXTENSIONS=y
-+# CONFIG_SPI is not set
-+CONFIG_MCI=y
-+CONFIG_MCI_STARTUP=y
-+CONFIG_MCI_OMAP_HSMMC=y
-+CONFIG_FS_FAT=y
-+CONFIG_FS_FAT_WRITE=y
-+CONFIG_FS_FAT_LFN=y
-diff --git a/arch/arm/configs/am335x_beaglebone_mlo_large_defconfig b/arch/arm/configs/am335x_beaglebone_mlo_large_defconfig
-new file mode 100644
-index 0000000..0a2d3a8
---- /dev/null
-+++ b/arch/arm/configs/am335x_beaglebone_mlo_large_defconfig
-@@ -0,0 +1,50 @@
-+CONFIG_ARCH_OMAP=y
-+# CONFIG_OMAP3_CLOCK_CONFIG is not set
-+# CONFIG_OMAP_GPMC is not set
-+CONFIG_OMAP_BUILD_IFT=y
-+CONFIG_MACH_BEAGLEBONE=y
-+CONFIG_AEABI=y
-+CONFIG_THUMB2_BAREBOX=y
-+CONFIG_MMU=y
-+CONFIG_TEXT_BASE=0x402F0400
-+CONFIG_MEMORY_LAYOUT_FIXED=y
-+CONFIG_STACK_BASE=0x4030B800
-+CONFIG_STACK_SIZE=0x1600
-+CONFIG_MALLOC_BASE=0x8F000000
-+CONFIG_MALLOC_SIZE=0x1000000
-+CONFIG_PROMPT="MLO>"
-+CONFIG_LONGHELP=y
-+# CONFIG_ERRNO_MESSAGES is not set
-+# CONFIG_TIMESTAMP is not set
-+CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y
-+CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/beaglebone/env"
-+CONFIG_CMD_EXPORT=y
-+# CONFIG_CMD_RM is not set
-+# CONFIG_CMD_CAT is not set
-+# CONFIG_CMD_RMDIR is not set
-+# CONFIG_CMD_CP is not set
-+# CONFIG_CMD_PWD is not set
-+# CONFIG_CMD_CD is not set
-+# CONFIG_CMD_UMOUNT is not set
-+# CONFIG_CMD_CLEAR is not set
-+CONFIG_CMD_LOADB=y
-+CONFIG_CMD_LOADY=y
-+CONFIG_CMD_BOOTM_SHOW_TYPE=y
-+CONFIG_CMD_BOOTM_VERBOSE=y
-+CONFIG_CMD_BOOTM_INITRD=y
-+CONFIG_CMD_BOOTM_OFTREE=y
-+CONFIG_CMD_BOOTM_OFTREE_UIMAGE=y
-+# CONFIG_CMD_BOOTZ is not set
-+# CONFIG_CMD_BOOTU is not set
-+CONFIG_CMD_GO=y
-+CONFIG_CMD_TIMEOUT=y
-+# CONFIG_CMD_VERSION is not set
-+# CONFIG_CMD_HELP is not set
-+CONFIG_DRIVER_SERIAL_NS16550=y
-+CONFIG_DRIVER_SERIAL_NS16550_OMAP_EXTENSIONS=y
-+# CONFIG_SPI is not set
-+CONFIG_MCI=y
-+CONFIG_MCI_STARTUP=y
-+CONFIG_MCI_OMAP_HSMMC=y
-+CONFIG_FS_FAT=y
-+CONFIG_FS_FAT_LFN=y
-diff --git a/arch/arm/configs/am335x_beaglebone_mlo_small_defconfig b/arch/arm/configs/am335x_beaglebone_mlo_small_defconfig
-new file mode 100644
-index 0000000..162e893
---- /dev/null
-+++ b/arch/arm/configs/am335x_beaglebone_mlo_small_defconfig
-@@ -0,0 +1,32 @@
-+CONFIG_ARCH_OMAP=y
-+# CONFIG_OMAP3_CLOCK_CONFIG is not set
-+# CONFIG_OMAP_GPMC is not set
-+CONFIG_OMAP_BUILD_IFT=y
-+CONFIG_MACH_BEAGLEBONE=y
-+CONFIG_AEABI=y
-+CONFIG_THUMB2_BAREBOX=y
-+# CONFIG_CMD_ARM_CPUINFO is not set
-+CONFIG_ENVIRONMENT_VARIABLES=y
-+CONFIG_MMU=y
-+CONFIG_TEXT_BASE=0x402F0400
-+CONFIG_MEMORY_LAYOUT_FIXED=y
-+CONFIG_STACK_BASE=0x4030B800
-+CONFIG_STACK_SIZE=0x1600
-+CONFIG_MALLOC_BASE=0x8F000000
-+CONFIG_MALLOC_SIZE=0x1000000
-+CONFIG_PROMPT="MLO>"
-+CONFIG_LONGHELP=y
-+CONFIG_SHELL_NONE=y
-+# CONFIG_ERRNO_MESSAGES is not set
-+# CONFIG_TIMESTAMP is not set
-+# CONFIG_DEFAULT_ENVIRONMENT is not set
-+CONFIG_DRIVER_SERIAL_NS16550=y
-+CONFIG_DRIVER_SERIAL_NS16550_OMAP_EXTENSIONS=y
-+# CONFIG_SPI is not set
-+CONFIG_MCI=y
-+CONFIG_MCI_STARTUP=y
-+CONFIG_MCI_OMAP_HSMMC=y
-+# CONFIG_FS_RAMFS is not set
-+# CONFIG_FS_DEVFS is not set
-+CONFIG_FS_FAT=y
-+CONFIG_FS_FAT_LFN=y
-diff --git a/arch/arm/cpu/start.c b/arch/arm/cpu/start.c
-index 523179d..5505ed3 100644
---- a/arch/arm/cpu/start.c
-+++ b/arch/arm/cpu/start.c
-@@ -22,6 +22,7 @@
-
- #include <common.h>
- #include <init.h>
-+#include <io.h>
- #include <asm/barebox-arm.h>
- #include <asm/barebox-arm-head.h>
- #include <asm/system.h>
-@@ -66,16 +67,22 @@ void __naked __bare_init reset(void)
- {
- uint32_t r;
-
-+ writel(0xFEED, 0x4030b000);
- /* set the cpu to SVC32 mode */
- __asm__ __volatile__("mrs %0, cpsr":"=r"(r));
- r &= ~0x1f;
- r |= 0xd3;
- __asm__ __volatile__("msr cpsr, %0" : : "r"(r));
-
-+ writel(0xFEED0000, 0x4030b000);
-+ //writel(0x59, 0x44e09000);
-+ writel(0xFEED0001, 0x4030b000);
-+
- #ifdef CONFIG_ARCH_HAS_LOWLEVEL_INIT
-- arch_init_lowlevel();
-+//arch_init_lowlevel();
- #endif
-
-+ writel(0xFEED0010, 0x4030b000);
- /* disable MMU stuff and caches */
- r = get_cr();
- r &= ~(CR_M | CR_C | CR_B | CR_S | CR_R | CR_V);
-@@ -87,13 +94,16 @@ void __naked __bare_init reset(void)
- r |= CR_A;
- #endif
-
-+ writel(0xFEED0020, 0x4030b000);
- #ifdef __ARMEB__
- r |= CR_B;
- #endif
- set_cr(r);
-+ writel(0xFEED0030, 0x4030b000);
-
- #ifdef CONFIG_MACH_DO_LOWLEVEL_INIT
- board_init_lowlevel();
-+ writel(0xFEED0040, 0x4030b000);
- #endif
- board_init_lowlevel_return();
- }
-@@ -112,6 +122,7 @@ void __naked __section(.text_ll_return) board_init_lowlevel_return(void)
- */
- __asm__ __volatile__("1: adr %0, 1b":"=r"(addr));
-
-+ writel(0xFEED0050, 0x4030b000);
- /* Setup the stack */
- r = STACK_BASE + STACK_SIZE - 16;
- __asm__ __volatile__("mov sp, %0" : : "r"(r));
-@@ -131,6 +142,7 @@ void __naked __section(.text_ll_return) board_init_lowlevel_return(void)
- __asm__ __volatile__("mcr p15, 0, %0, c7, c5, 0" : : "r" (0));
-
- /* call start_barebox with its absolute address */
-+ writel(0xFEED0060, 0x4030b000);
- r = (unsigned int)&start_barebox;
- __asm__ __volatile__("mov pc, %0" : : "r"(r));
- }
-diff --git a/arch/arm/mach-omap/Kconfig b/arch/arm/mach-omap/Kconfig
-index 386c484..117b1cf 100644
---- a/arch/arm/mach-omap/Kconfig
-+++ b/arch/arm/mach-omap/Kconfig
-@@ -98,7 +98,8 @@ config ARCH_TEXT_BASE
-
- config BOARDINFO
- default "Texas Instrument's SDP343x" if MACH_OMAP343xSDP
-- default "Texas Instrument's Beagle" if MACH_BEAGLE
-+ default "Texas Instrument's Beagle Board" if MACH_BEAGLE
-+ default "Texas Instrument's Beagle Bone" if MACH_BEAGLEBONE
- default "Texas Instrument's OMAP3EVM" if MACH_OMAP3EVM
- default "Texas Instrument's Panda" if MACH_PANDA
- default "Phytec phyCORE pcm049" if MACH_PCM049
-@@ -123,6 +124,14 @@ config MACH_BEAGLE
- help
- Say Y here if you are using Beagle Board
-
-+config MACH_BEAGLEBONE
-+ bool "Texas Instrument's Beagle Bone"
-+ select OMAP_CLOCK_ALL
-+ select HAVE_NOSHELL
-+ depends on ARCH_OMAP3
-+ help
-+ Say Y here if you are using Beagle Bone
-+
- config MACH_OMAP3EVM
- bool "Texas Instrument's OMAP3 EVM"
- select OMAP_CLOCK_ALL
-diff --git a/arch/arm/mach-omap/omap3_generic.c b/arch/arm/mach-omap/omap3_generic.c
-index 4ab265a..ccc4bdd 100644
---- a/arch/arm/mach-omap/omap3_generic.c
-+++ b/arch/arm/mach-omap/omap3_generic.c
-@@ -57,6 +57,7 @@
- *
- * @return void
- */
-+#if 0
- void __noreturn reset_cpu(unsigned long addr)
- {
- writel(PRM_RSTCTRL_RESET, PRM_REG(RSTCTRL));
-@@ -64,6 +65,7 @@ void __noreturn reset_cpu(unsigned long addr)
- while (1);
- }
- EXPORT_SYMBOL(reset_cpu);
-+#endif
-
- /**
- * @brief Low level CPU type
-diff --git a/arch/arm/mach-omap/s32k_clksource.c b/arch/arm/mach-omap/s32k_clksource.c
-index 3ed9448..2c21fe7 100644
---- a/arch/arm/mach-omap/s32k_clksource.c
-+++ b/arch/arm/mach-omap/s32k_clksource.c
-@@ -50,7 +50,8 @@
- */
- static uint64_t s32k_clocksource_read(void)
- {
-- return readl(S32K_CR);
-+// return readl(S32K_CR);
-+ return readl(0x44e0503c);
- }
-
- /* A bit obvious isn't it? */
-@@ -73,6 +74,8 @@ static int s32k_clocksource_init(void)
- {
- s32k_cs.mult = clocksource_hz2mult(S32K_FREQUENCY, s32k_cs.shift);
-
-+ writel(0x00000003, 0x44e05038);
-+
- return init_clock(&s32k_cs);
- }
-
-diff --git a/arch/arm/mach-omap/xload.c b/arch/arm/mach-omap/xload.c
-index 13024ab..29daaaf 100644
---- a/arch/arm/mach-omap/xload.c
-+++ b/arch/arm/mach-omap/xload.c
-@@ -56,7 +56,10 @@ void *omap_xload_boot_mmc(void)
-
- enum omap_boot_src omap_bootsrc(void)
- {
--#if defined(CONFIG_ARCH_OMAP3)
-+#if defined(CONFIG_MACH_BEAGLEBONE)
-+ /* only support for MMC */
-+ return OMAP_BOOTSRC_MMC1;
-+#elif defined(CONFIG_ARCH_OMAP3)
- return omap3_bootsrc();
- #elif defined(CONFIG_ARCH_OMAP4)
- return omap4_bootsrc();
-diff --git a/common/startup.c b/common/startup.c
-index abd1b77..4a2ef49 100644
---- a/common/startup.c
-+++ b/common/startup.c
-@@ -31,6 +31,7 @@
- */
- #include <common.h>
- #include <init.h>
-+#include <io.h>
- #include <command.h>
- #include <malloc.h>
- #include <memory.h>
-@@ -122,10 +123,14 @@ void start_barebox (void)
- for (initcall = __barebox_initcalls_start;
- initcall < __barebox_initcalls_end; initcall++) {
- debug("initcall-> %pS\n", *initcall);
-+ writel(initcall, 0x4030b004);
-+ writel(0xFEED0070, 0x4030b000);
- result = (*initcall)();
- debug("initcall<- %pS (%d)\n", *initcall, result);
- }
-
-+ //writel(r, 0x4030b004);
-+ //writel(0xFEED02FF, 0x4030b000); while(1);
- debug("initcalls done\n");
-
- display_meminfo();
---
-1.7.10.4
-