2005-09-02 10:42:52 +10:00
/***************************************************************************/
/*
2014-08-19 11:55:24 +10:00
* m523x . c - - platform support for ColdFire 523 x based boards
2005-09-02 10:42:52 +10:00
*
2011-03-30 22:57:33 -03:00
* Sub - architcture dependent initialization code for the Freescale
2005-09-02 10:42:52 +10:00
* 523 x CPUs .
*
* Copyright ( C ) 1999 - 2005 , Greg Ungerer ( gerg @ snapgear . com )
* Copyright ( C ) 2001 - 2003 , SnapGear Inc . ( www . snapgear . com )
*/
/***************************************************************************/
# include <linux/kernel.h>
# include <linux/param.h>
# include <linux/init.h>
2008-02-01 17:34:15 +10:00
# include <linux/io.h>
2005-09-02 10:42:52 +10:00
# include <asm/machdep.h>
# include <asm/coldfire.h>
# include <asm/mcfsim.h>
2012-07-13 15:57:38 +10:00
# include <asm/mcfclk.h>
/***************************************************************************/
DEFINE_CLK ( pll , " pll.0 " , MCF_CLK ) ;
DEFINE_CLK ( sys , " sys.0 " , MCF_BUSCLK ) ;
DEFINE_CLK ( mcfpit0 , " mcfpit.0 " , MCF_CLK ) ;
DEFINE_CLK ( mcfpit1 , " mcfpit.1 " , MCF_CLK ) ;
DEFINE_CLK ( mcfpit2 , " mcfpit.2 " , MCF_CLK ) ;
DEFINE_CLK ( mcfpit3 , " mcfpit.3 " , MCF_CLK ) ;
DEFINE_CLK ( mcfuart0 , " mcfuart.0 " , MCF_BUSCLK ) ;
DEFINE_CLK ( mcfuart1 , " mcfuart.1 " , MCF_BUSCLK ) ;
DEFINE_CLK ( mcfuart2 , " mcfuart.2 " , MCF_BUSCLK ) ;
2014-05-14 10:06:29 -07:00
DEFINE_CLK ( mcfqspi0 , " mcfqspi.0 " , MCF_BUSCLK ) ;
2012-07-13 15:57:38 +10:00
DEFINE_CLK ( fec0 , " fec.0 " , MCF_BUSCLK ) ;
2014-06-30 09:53:19 -07:00
DEFINE_CLK ( mcfi2c0 , " imx1-i2c.0 " , MCF_BUSCLK ) ;
2012-07-13 15:57:38 +10:00
struct clk * mcf_clks [ ] = {
& clk_pll ,
& clk_sys ,
& clk_mcfpit0 ,
& clk_mcfpit1 ,
& clk_mcfpit2 ,
& clk_mcfpit3 ,
& clk_mcfuart0 ,
& clk_mcfuart1 ,
& clk_mcfuart2 ,
2014-05-14 10:06:29 -07:00
& clk_mcfqspi0 ,
2012-07-13 15:57:38 +10:00
& clk_fec0 ,
2014-06-30 09:53:19 -07:00
& clk_mcfi2c0 ,
2012-07-13 15:57:38 +10:00
NULL
} ;
2005-09-02 10:42:52 +10:00
/***************************************************************************/
2010-01-22 12:43:03 -08:00
static void __init m523x_qspi_init ( void )
{
2014-05-14 10:07:55 -07:00
# if IS_ENABLED(CONFIG_SPI_COLDFIRE_QSPI)
2010-01-22 12:43:03 -08:00
u16 par ;
/* setup QSPS pins for QSPI with gpio CS control */
writeb ( 0x1f , MCFGPIO_PAR_QSPI ) ;
/* and CS2 & CS3 as gpio */
par = readw ( MCFGPIO_PAR_TIMER ) ;
par & = 0x3f3f ;
writew ( par , MCFGPIO_PAR_TIMER ) ;
2012-05-06 12:22:53 -07:00
# endif /* IS_ENABLED(CONFIG_SPI_COLDFIRE_QSPI) */
2014-05-14 10:07:55 -07:00
}
2005-09-02 10:42:52 +10:00
2008-02-01 17:34:15 +10:00
/***************************************************************************/
2014-06-30 09:53:19 -07:00
static void __init m523x_i2c_init ( void )
{
# if IS_ENABLED(CONFIG_I2C_IMX)
u8 par ;
/* setup Port AS Pin Assignment Register for I2C */
/* set PASPA0 to SCL and PASPA1 to SDA */
par = readb ( MCFGPIO_PAR_FECI2C ) ;
par | = 0x0f ;
writeb ( par , MCFGPIO_PAR_FECI2C ) ;
# endif /* IS_ENABLED(CONFIG_I2C_IMX) */
}
/***************************************************************************/
2009-08-12 16:14:43 +10:00
static void __init m523x_fec_init ( void )
{
/* Set multi-function pins to ethernet use */
2012-09-18 12:14:18 +10:00
writeb ( readb ( MCFGPIO_PAR_FECI2C ) | 0xf0 , MCFGPIO_PAR_FECI2C ) ;
2009-08-12 16:14:43 +10:00
}
/***************************************************************************/
2008-02-01 17:34:15 +10:00
void __init config_BSP ( char * commandp , int size )
2005-09-02 10:42:52 +10:00
{
2012-01-23 15:34:58 +10:00
mach_sched_init = hw_timer_init ;
2011-12-24 13:00:02 +10:00
m523x_fec_init ( ) ;
2010-01-22 12:43:03 -08:00
m523x_qspi_init ( ) ;
2014-06-30 09:53:19 -07:00
m523x_i2c_init ( ) ;
2008-02-01 17:34:15 +10:00
}
/***************************************************************************/