2012-02-27 16:07:13 +00:00
/*
* Copyright 2012 ( C ) , Jason Cooper < jason @ lakedaemon . net >
*
* arch / arm / mach - kirkwood / board - dt . c
*
2012-03-15 00:52:31 +00:00
* Flattened Device Tree board initialization
2012-02-27 16:07:13 +00:00
*
* This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed " as is " without any
* warranty of any kind , whether express or implied .
*/
# include <linux/kernel.h>
# include <linux/init.h>
# include <linux/of.h>
# include <linux/of_platform.h>
2012-04-29 14:40:42 +01:00
# include <linux/kexec.h>
2012-02-27 16:07:13 +00:00
# include <asm/mach/arch.h>
2012-02-29 17:39:08 +00:00
# include <asm/mach/map.h>
# include <mach/bridge-regs.h>
2012-06-27 13:40:04 +02:00
# include <plat/irq.h>
2012-02-27 16:07:13 +00:00
# include "common.h"
static struct of_device_id kirkwood_dt_match_table [ ] __initdata = {
{ . compatible = " simple-bus " , } ,
{ }
} ;
2012-06-06 20:30:57 +02:00
struct of_dev_auxdata kirkwood_auxdata_lookup [ ] __initdata = {
OF_DEV_AUXDATA ( " marvell,orion-spi " , 0xf1010600 , " orion_spi.0 " , NULL ) ,
2012-07-20 13:51:55 +02:00
OF_DEV_AUXDATA ( " marvell,mv64xxx-i2c " , 0xf1011000 , " mv64xxx_i2c.0 " ,
NULL ) ,
2012-06-10 15:20:06 +02:00
OF_DEV_AUXDATA ( " marvell,orion-wdt " , 0xf1020300 , " orion_wdt " , NULL ) ,
2012-06-10 16:45:37 +02:00
OF_DEV_AUXDATA ( " marvell,orion-sata " , 0xf1080000 , " sata_mv.0 " , NULL ) ,
2012-07-18 19:22:54 +02:00
OF_DEV_AUXDATA ( " marvell,orion-nand " , 0xf4000000 , " orion_nand " , NULL ) ,
2012-09-03 20:29:34 +02:00
OF_DEV_AUXDATA ( " marvell,orion-crypto " , 0xf1030000 , " mv_crypto " , NULL ) ,
2012-06-06 20:30:57 +02:00
{ } ,
} ;
2012-02-27 16:07:13 +00:00
static void __init kirkwood_dt_init ( void )
{
2012-02-29 17:39:08 +00:00
pr_info ( " Kirkwood: %s, TCLK=%d. \n " , kirkwood_id ( ) , kirkwood_tclk ) ;
/*
* Disable propagation of mbus errors to the CPU local bus ,
* as this causes mbus errors ( which can occur for example
* for PCI aborts ) to throw CPU aborts , which we ' re not set
* up to deal with .
*/
writel ( readl ( CPU_CONFIG ) & ~ CPU_CONFIG_ERROR_PROP , CPU_CONFIG ) ;
kirkwood_setup_cpu_mbus ( ) ;
kirkwood_l2_init ( ) ;
2011-12-15 08:15:07 +01:00
/* Setup root of clk tree */
kirkwood_clk_init ( ) ;
2012-02-29 17:39:08 +00:00
/* internal devices that every board has */
kirkwood_xor0_init ( ) ;
kirkwood_xor1_init ( ) ;
# ifdef CONFIG_KEXEC
kexec_reinit = kirkwood_enable_pcie ;
# endif
2012-02-27 16:07:13 +00:00
if ( of_machine_is_compatible ( " globalscale,dreamplug " ) )
dreamplug_init ( ) ;
2012-04-18 11:06:40 +01:00
if ( of_machine_is_compatible ( " dlink,dns-kirkwood " ) )
dnskw_init ( ) ;
2012-04-18 23:16:41 +02:00
if ( of_machine_is_compatible ( " iom,iconnect " ) )
iconnect_init ( ) ;
2012-04-30 23:55:17 +02:00
if ( of_machine_is_compatible ( " raidsonic,ib-nas62x0 " ) )
ib62x0_init ( ) ;
2012-05-12 14:57:59 +02:00
if ( of_machine_is_compatible ( " qnap,ts219 " ) )
qnap_dt_ts219_init ( ) ;
2012-08-14 22:43:41 +02:00
if ( of_machine_is_compatible ( " seagate,dockstar " ) )
dockstar_dt_init ( ) ;
2012-07-16 11:52:50 +02:00
if ( of_machine_is_compatible ( " seagate,goflexnet " ) )
goflexnet_init ( ) ;
2012-07-17 07:25:55 +02:00
if ( of_machine_is_compatible ( " buffalo,lsxl " ) )
lsxl_init ( ) ;
2012-08-20 15:29:07 +01:00
if ( of_machine_is_compatible ( " iom,ix2-200 " ) )
iomega_ix2_200_init ( ) ;
2012-09-04 11:55:02 +02:00
if ( of_machine_is_compatible ( " keymile,km_kirkwood " ) )
km_kirkwood_init ( ) ;
2012-06-06 20:30:57 +02:00
of_platform_populate ( NULL , kirkwood_dt_match_table ,
kirkwood_auxdata_lookup , NULL ) ;
2012-02-27 16:07:13 +00:00
}
static const char * kirkwood_dt_board_compat [ ] = {
" globalscale,dreamplug " ,
2012-04-18 11:06:40 +01:00
" dlink,dns-320 " ,
" dlink,dns-325 " ,
2012-04-18 23:16:41 +02:00
" iom,iconnect " ,
2012-04-30 23:55:17 +02:00
" raidsonic,ib-nas62x0 " ,
2012-05-12 14:57:59 +02:00
" qnap,ts219 " ,
2012-08-14 22:43:41 +02:00
" seagate,dockstar " ,
2012-07-16 11:52:50 +02:00
" seagate,goflexnet " ,
2012-07-17 07:25:55 +02:00
" buffalo,lsxl " ,
2012-08-20 15:29:07 +01:00
" iom,ix2-200 " ,
2012-09-04 11:55:02 +02:00
" keymile,km_kirkwood " ,
2012-02-27 16:07:13 +00:00
NULL
} ;
DT_MACHINE_START ( KIRKWOOD_DT , " Marvell Kirkwood (Flattened Device Tree) " )
/* Maintainer: Jason Cooper <jason@lakedaemon.net> */
. map_io = kirkwood_map_io ,
. init_early = kirkwood_init_early ,
2012-06-27 13:40:04 +02:00
. init_irq = orion_dt_init_irq ,
2012-02-27 16:07:13 +00:00
. timer = & kirkwood_timer ,
. init_machine = kirkwood_dt_init ,
. restart = kirkwood_restart ,
. dt_compat = kirkwood_dt_board_compat ,
MACHINE_END