2008-01-24 20:47:11 -06:00
/*
* arch / powerpc / platforms / 83 xx / mpc837x_rdb . c
*
* Copyright ( C ) 2007 Freescale Semicondutor , Inc . All rights reserved .
*
* MPC837x RDB board specific routines
*
* 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 .
*/
# include <linux/pci.h>
# include <linux/of_platform.h>
# include <asm/time.h>
# include <asm/ipic.h>
# include <asm/udbg.h>
2009-07-25 01:42:30 +04:00
# include <sysdev/fsl_soc.h>
2008-06-26 11:07:57 -06:00
# include <sysdev/fsl_pci.h>
2008-01-24 20:47:11 -06:00
# include "mpc83xx.h"
2009-07-25 01:42:30 +04:00
static void mpc837x_rdb_sd_cfg ( void )
{
void __iomem * im ;
im = ioremap ( get_immrbase ( ) , 0x1000 ) ;
if ( ! im ) {
WARN_ON ( 1 ) ;
return ;
}
/*
* On RDB boards ( in contrast to MDS ) USBB pins are used for SD only ,
* so we can safely mux them away from the USB block .
*/
clrsetbits_be32 ( im + MPC83XX_SICRL_OFFS , MPC837X_SICRL_USBB_MASK ,
MPC837X_SICRL_SD ) ;
clrsetbits_be32 ( im + MPC83XX_SICRH_OFFS , MPC837X_SICRH_SPI_MASK ,
MPC837X_SICRH_SD ) ;
iounmap ( im ) ;
}
2008-01-24 20:47:11 -06:00
/* ************************************************************************
*
* Setup the architecture
*
*/
static void __init mpc837x_rdb_setup_arch ( void )
{
if ( ppc_md . progress )
ppc_md . progress ( " mpc837x_rdb_setup_arch() " , 0 ) ;
2011-11-17 18:48:48 +04:00
mpc83xx_setup_pci ( ) ;
2008-01-24 20:47:11 -06:00
mpc837x_usb_cfg ( ) ;
2009-07-25 01:42:30 +04:00
mpc837x_rdb_sd_cfg ( ) ;
2008-01-24 20:47:11 -06:00
}
2011-11-17 18:48:47 +04:00
machine_device_initcall ( mpc837x_rdb , mpc83xx_declare_of_platform_devices ) ;
2008-01-24 20:47:11 -06:00
2010-10-30 11:49:09 -04:00
static const char * board [ ] __initdata = {
" fsl,mpc8377rdb " ,
" fsl,mpc8378rdb " ,
" fsl,mpc8379rdb " ,
" fsl,mpc8377wlan " ,
NULL
} ;
2008-01-24 20:47:11 -06:00
/*
* Called very early , MMU is off , device - tree isn ' t unflattened
*/
static int __init mpc837x_rdb_probe ( void )
{
2010-10-30 11:49:09 -04:00
return of_flat_dt_match ( of_get_flat_dt_root ( ) , board ) ;
2008-01-24 20:47:11 -06:00
}
define_machine ( mpc837x_rdb ) {
2009-07-25 01:42:17 +04:00
. name = " MPC837x RDB/WLAN " ,
2008-01-24 20:47:11 -06:00
. probe = mpc837x_rdb_probe ,
. setup_arch = mpc837x_rdb_setup_arch ,
2011-07-22 23:55:42 +04:00
. init_IRQ = mpc83xx_ipic_init_IRQ ,
2008-01-24 20:47:11 -06:00
. get_irq = ipic_get_irq ,
. restart = mpc83xx_restart ,
. time_init = mpc83xx_time_init ,
. calibrate_decr = generic_calibrate_decr ,
. progress = udbg_progress ,
} ;