| 
									
										
										
										
											2005-09-02 10:42:52 +10:00
										 |  |  | /***************************************************************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*
 | 
					
						
							| 
									
										
										
										
											2014-08-19 11:55:24 +10:00
										 |  |  |  *	m523x.c  -- platform support for ColdFire 523x 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
										 |  |  |  *	523x 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); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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, | 
					
						
							|  |  |  | 	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
										 |  |  | /***************************************************************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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(); | 
					
						
							| 
									
										
										
										
											2008-02-01 17:34:15 +10:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /***************************************************************************/ |