2010-09-17 20:21:36 +04:00
/*
* Copyright ( C ) 2009 Hans J . Koch < hjk @ linutronix . de >
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation .
*/
2011-02-17 18:42:58 +03:00
# include <linux/delay.h>
2010-09-17 20:21:36 +04:00
# include <linux/init.h>
# include <linux/kernel.h>
# include <linux/platform_device.h>
# include <asm/mach-types.h>
# include <asm/mach/arch.h>
# include <asm/mach/map.h>
# include <asm/mach/time.h>
# include <mach/clock.h>
2011-02-17 18:42:51 +03:00
# include <mach/tcc-nand.h>
2011-02-17 18:42:58 +03:00
# include <mach/tcc8k-regs.h>
2010-09-17 20:21:36 +04:00
# include "common.h"
# define XI_FREQUENCY 12000000
# define XTI_FREQUENCY 32768
# ifdef CONFIG_MTD_NAND_TCC
/* NAND */
static struct tcc_nand_platform_data tcc8k_sdk_nand_data = {
. width = 1 ,
. hw_ecc = 0 ,
} ;
# endif
static void __init tcc8k_init ( void )
{
# ifdef CONFIG_MTD_NAND_TCC
tcc_nand_device . dev . platform_data = & tcc8k_sdk_nand_data ;
platform_device_register ( & tcc_nand_device ) ;
# endif
}
static void __init tcc8k_init_timer ( void )
{
tcc_clocks_init ( XI_FREQUENCY , XTI_FREQUENCY ) ;
}
static struct sys_timer tcc8k_timer = {
. init = tcc8k_init_timer ,
} ;
static void __init tcc8k_map_io ( void )
{
tcc8k_map_common_io ( ) ;
2011-02-17 18:42:58 +03:00
/* set PLL0 clock to 96MHz, adapt UART0 divisor */
__raw_writel ( 0x00026003 , CKC_BASE + PLL0CFG_OFFS ) ;
__raw_writel ( 0x10000001 , CKC_BASE + ACLKUART0_OFFS ) ;
/* set PLL1 clock to 192MHz */
__raw_writel ( 0x00016003 , CKC_BASE + PLL1CFG_OFFS ) ;
/* set PLL2 clock to 48MHz */
__raw_writel ( 0x00036003 , CKC_BASE + PLL2CFG_OFFS ) ;
/* with CPU freq higher than 150 MHz, need extra DTCM wait */
__raw_writel ( 0x00000001 , SCFG_BASE + DTCMWAIT_OFFS ) ;
/* PLL locking time as specified */
udelay ( 300 ) ;
2010-09-17 20:21:36 +04:00
}
MACHINE_START ( TCC8000_SDK , " Telechips TCC8000-SDK Demo Board " )
2011-07-06 06:38:18 +04:00
. atag_offset = 0x100 ,
2010-09-17 20:21:36 +04:00
. map_io = tcc8k_map_io ,
. init_irq = tcc8k_init_irq ,
. init_machine = tcc8k_init ,
. timer = & tcc8k_timer ,
MACHINE_END