From 5774549fa9c608a3d18f43fdb284c10419776f32 Mon Sep 17 00:00:00 2001
From: xxx <xxx@rock-chips.com>
Date: Tue, 4 Jun 2013 14:50:36 +0800
Subject: [PATCH] rk3188: add ft board

---
 arch/arm/configs/rk3188_ft_defconfig   | 85 ++++++++++++++++++++++++++
 arch/arm/mach-rk3188/Kconfig           |  3 +
 arch/arm/mach-rk3188/Makefile          |  1 +
 arch/arm/mach-rk3188/board-rk3188-ft.c | 69 +++++++++++++++++++++
 4 files changed, 158 insertions(+)
 create mode 100644 arch/arm/configs/rk3188_ft_defconfig
 create mode 100755 arch/arm/mach-rk3188/board-rk3188-ft.c

diff --git a/arch/arm/configs/rk3188_ft_defconfig b/arch/arm/configs/rk3188_ft_defconfig
new file mode 100644
index 000000000000..6f2b813cf795
--- /dev/null
+++ b/arch/arm/configs/rk3188_ft_defconfig
@@ -0,0 +1,85 @@
+CONFIG_EXPERIMENTAL=y
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_KERNEL_LZO=y
+CONFIG_LOG_BUF_SHIFT=12
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+# CONFIG_UID16 is not set
+# CONFIG_HOTPLUG is not set
+# CONFIG_ELF_CORE is not set
+# CONFIG_BASE_FULL is not set
+# CONFIG_FUTEX is not set
+# CONFIG_EPOLL is not set
+# CONFIG_SIGNALFD is not set
+# CONFIG_TIMERFD is not set
+# CONFIG_EVENTFD is not set
+# CONFIG_SHMEM is not set
+# CONFIG_AIO is not set
+CONFIG_EMBEDDED=y
+# CONFIG_VM_EVENT_COUNTERS is not set
+# CONFIG_SLUB_DEBUG is not set
+# CONFIG_BLOCK is not set
+CONFIG_ARCH_RK3188=y
+CONFIG_DDR_INIT_CHANGE_FREQ=y
+CONFIG_DDR_SDRAM_FREQ=336
+# CONFIG_DDR_FREQ is not set
+# CONFIG_DDR_TEST is not set
+CONFIG_RK_PM_TESTS=y
+# CONFIG_PM_TEST_CLK_RATE is not set
+# CONFIG_PM_TEST_CLK_VOLT is not set
+# CONFIG_PM_TEST_MAXFREQ is not set
+CONFIG_PM_TEST_FT=y
+# CONFIG_RK29_LAST_LOG is not set
+# CONFIG_RK_EARLY_PRINTK is not set
+# CONFIG_RK_CONSOLE_THREAD is not set
+CONFIG_MACH_RK3188_FT=y
+CONFIG_FIQ_DEBUGGER=y
+CONFIG_FIQ_DEBUGGER_NO_SLEEP=y
+CONFIG_FIQ_DEBUGGER_CONSOLE=y
+CONFIG_FIQ_DEBUGGER_CONSOLE_DEFAULT_ENABLE=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_SMP=y
+# CONFIG_SMP_ON_UP is not set
+CONFIG_PREEMPT=y
+CONFIG_AEABI=y
+# CONFIG_OABI_COMPAT is not set
+CONFIG_HIGHMEM=y
+CONFIG_DEFAULT_MMAP_MIN_ADDR=32768
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=ttyFIQ0"
+CONFIG_CMDLINE_FORCE=y
+CONFIG_CPU_IDLE=y
+CONFIG_VFP=y
+CONFIG_NEON=y
+# CONFIG_BINFMT_ELF is not set
+# CONFIG_SUSPEND is not set
+# CONFIG_FW_LOADER is not set
+# CONFIG_INPUT is not set
+# CONFIG_SERIO is not set
+# CONFIG_VT is not set
+# CONFIG_UNIX98_PTYS is not set
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_DEVMEM is not set
+# CONFIG_DEVKMEM is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_ADC is not set
+CONFIG_EXPANDED_GPIO_NUM=0
+CONFIG_EXPANDED_GPIO_IRQ_NUM=0
+CONFIG_SPI_FPGA_GPIO_NUM=0
+CONFIG_SPI_FPGA_GPIO_IRQ_NUM=0
+# CONFIG_HWMON is not set
+# CONFIG_MFD_SUPPORT is not set
+# CONFIG_USB_SUPPORT is not set
+# CONFIG_CMMB is not set
+# CONFIG_FILE_LOCKING is not set
+# CONFIG_DNOTIFY is not set
+# CONFIG_INOTIFY_USER is not set
+# CONFIG_PROC_FS is not set
+# CONFIG_MISC_FILESYSTEMS is not set
+CONFIG_PRINTK_TIME=y
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_FTRACE is not set
+CONFIG_OC_ETM=y
+# CONFIG_CRC32 is not set
diff --git a/arch/arm/mach-rk3188/Kconfig b/arch/arm/mach-rk3188/Kconfig
index 42844dd842f7..7cb69a317106 100755
--- a/arch/arm/mach-rk3188/Kconfig
+++ b/arch/arm/mach-rk3188/Kconfig
@@ -36,4 +36,7 @@ config MACH_RK3188_JETTAB
 config MACH_RK3188M_TB
 	bool "RK3188m Top Board"
 
+config MACH_RK3188_FT
+	bool "RK3188 FT Board"
+
 endchoice
diff --git a/arch/arm/mach-rk3188/Makefile b/arch/arm/mach-rk3188/Makefile
index 141483d89965..78e2587fa93b 100755
--- a/arch/arm/mach-rk3188/Makefile
+++ b/arch/arm/mach-rk3188/Makefile
@@ -22,6 +22,7 @@ obj-y += delayline.o
 
 board-$(CONFIG_MACH_RK3188_FPGA) += board-rk3188-fpga.o
 board-$(CONFIG_MACH_RK3188_TB) += ../mach-rk30/board-rk3168-tb.o
+board-$(CONFIG_MACH_RK3188_FT) += board-rk3188-ft.o
 board-$(CONFIG_MACH_RK3188_SDK) += board-rk3188-sdk.o
 board-$(CONFIG_MACH_RK3188_LR097) += ../mach-rk30/board-rk3168-LR097.o
 board-$(CONFIG_MACH_RK3188_DS1006H) += board-rk3188-ds1006h.o
diff --git a/arch/arm/mach-rk3188/board-rk3188-ft.c b/arch/arm/mach-rk3188/board-rk3188-ft.c
new file mode 100755
index 000000000000..3e90a5bf0268
--- /dev/null
+++ b/arch/arm/mach-rk3188/board-rk3188-ft.c
@@ -0,0 +1,69 @@
+/*
+ *
+ * Copyright (C) 2013 ROCKCHIP, Inc.
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/io.h>
+#include <linux/delay.h>
+#include <linux/clk.h>
+
+#include <asm/mach-types.h>
+#include <asm/mach/arch.h>
+
+#include <mach/board.h>
+#include <mach/gpio.h>
+
+#define FT
+
+#ifdef FT
+#define CONSOLE_LOGLEVEL 2
+#define ARM_PLL_MHZ (816)
+#else
+#define CONSOLE_LOGLEVEL 9
+#define ARM_PLL_MHZ (816)
+#endif
+
+static void __init machine_rk30_board_init(void)
+{
+	console_loglevel = CONSOLE_LOGLEVEL;
+}
+
+#define ft_printk(fmt, arg...) \
+	printk(KERN_EMERG fmt, ##arg)
+
+void __init board_clock_init(void)
+{
+	rk30_clock_data_init(periph_pll_default, codec_pll_default, RK30_CLOCKS_DEFAULT_FLAGS);
+	clk_set_rate(clk_get(NULL, "cpu"), ARM_PLL_MHZ * 1000 * 1000);
+	preset_lpj = loops_per_jiffy;
+}
+
+static void __init ft_fixup(struct machine_desc *desc, struct tag *tags,
+			char **cmdline, struct meminfo *mi)
+{
+	mi->nr_banks = 1;
+	mi->bank[0].start = PLAT_PHYS_OFFSET;
+	mi->bank[0].size = SZ_1G;
+}
+
+MACHINE_START(RK30, "RK30board")
+	.boot_params	= PLAT_PHYS_OFFSET + 0x800,
+	.fixup		= ft_fixup,
+	.map_io		= rk30_map_io,
+	.init_irq	= rk30_init_irq,
+	.timer		= &rk30_timer,
+	.init_machine	= machine_rk30_board_init,
+MACHINE_END
+
-- 
2.34.1