| 
									
										
										
										
											2007-09-22 00:44:38 +10:00
										 |  |  | /* | 
					
						
							|  |  |  |  * This file contains low level CPU setup functions. | 
					
						
							|  |  |  |  * Valentine Barshak <vbarshak@ru.mvista.com>
 | 
					
						
							|  |  |  |  * MontaVista Software, Inc (c) 2007 | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-02-24 08:07:41 +11:00
										 |  |  |  * Based on cpu_setup_6xx code by | 
					
						
							| 
									
										
										
										
											2007-09-22 00:44:38 +10:00
										 |  |  |  * Benjamin Herrenschmidt <benh@kernel.crashing.org>
 | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * 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 <asm/processor.h> | 
					
						
							|  |  |  | #include <asm/cputable.h> | 
					
						
							|  |  |  | #include <asm/ppc_asm.h> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-09-22 00:46:57 +10:00
										 |  |  | _GLOBAL(__setup_cpu_440ep) | 
					
						
							|  |  |  | 	b	__init_fpu_44x | 
					
						
							|  |  |  | _GLOBAL(__setup_cpu_440epx) | 
					
						
							| 
									
										
										
										
											2007-09-22 00:50:09 +10:00
										 |  |  | 	mflr	r4 | 
					
						
							|  |  |  | 	bl	__init_fpu_44x | 
					
						
							|  |  |  | 	bl	__plb_disable_wrp | 
					
						
							| 
									
										
										
										
											2007-12-21 15:39:21 +11:00
										 |  |  | 	bl	__fixup_440A_mcheck | 
					
						
							| 
									
										
										
										
											2007-09-22 00:50:09 +10:00
										 |  |  | 	mtlr	r4 | 
					
						
							|  |  |  | 	blr | 
					
						
							|  |  |  | _GLOBAL(__setup_cpu_440grx) | 
					
						
							| 
									
										
										
										
											2007-12-04 13:02:18 -06:00
										 |  |  | 	mflr	r4 | 
					
						
							|  |  |  | 	bl	__plb_disable_wrp | 
					
						
							|  |  |  | 	bl	__fixup_440A_mcheck | 
					
						
							|  |  |  | 	mtlr	r4 | 
					
						
							|  |  |  | 	blr | 
					
						
							| 
									
										
										
										
											2008-02-24 08:07:41 +11:00
										 |  |  | _GLOBAL(__setup_cpu_460ex) | 
					
						
							| 
									
										
										
										
											2008-06-11 07:52:40 -04:00
										 |  |  | _GLOBAL(__setup_cpu_460gt) | 
					
						
							| 
									
										
										
										
											2009-02-05 13:31:36 +00:00
										 |  |  | _GLOBAL(__setup_cpu_460sx) | 
					
						
							| 
									
										
										
										
											2010-09-13 13:26:11 +00:00
										 |  |  | _GLOBAL(__setup_cpu_apm821xx) | 
					
						
							| 
									
										
										
										
											2008-11-11 16:02:43 +00:00
										 |  |  | 	mflr	r4 | 
					
						
							|  |  |  | 	bl	__init_fpu_44x | 
					
						
							|  |  |  | 	bl	__fixup_440A_mcheck | 
					
						
							|  |  |  | 	mtlr	r4 | 
					
						
							|  |  |  | 	blr | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-04 05:39:55 +00:00
										 |  |  | _GLOBAL(__setup_cpu_440x5) | 
					
						
							| 
									
										
										
										
											2007-12-21 15:39:21 +11:00
										 |  |  | _GLOBAL(__setup_cpu_440gx) | 
					
						
							|  |  |  | _GLOBAL(__setup_cpu_440spe) | 
					
						
							|  |  |  | 	b	__fixup_440A_mcheck | 
					
						
							| 
									
										
										
										
											2007-09-22 00:50:09 +10:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-09-22 00:46:57 +10:00
										 |  |  | /* enable APU between CPU and FPU */ | 
					
						
							|  |  |  | _GLOBAL(__init_fpu_44x) | 
					
						
							|  |  |  | 	mfspr	r3,SPRN_CCR0 | 
					
						
							|  |  |  | 	/* Clear DAPUIB flag in CCR0 */ | 
					
						
							|  |  |  | 	rlwinm	r3,r3,0,12,10 | 
					
						
							|  |  |  | 	mtspr	SPRN_CCR0,r3 | 
					
						
							|  |  |  | 	isync | 
					
						
							|  |  |  | 	blr | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-09-22 00:50:09 +10:00
										 |  |  | /* | 
					
						
							|  |  |  |  * Workaround for the incorrect write to DDR SDRAM errata. | 
					
						
							|  |  |  |  * The write address can be corrupted during writes to | 
					
						
							|  |  |  |  * DDR SDRAM when write pipelining is enabled on PLB0. | 
					
						
							|  |  |  |  * Disable write pipelining here. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | #define DCRN_PLB4A0_ACR	0x81 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | _GLOBAL(__plb_disable_wrp) | 
					
						
							|  |  |  | 	mfdcr	r3,DCRN_PLB4A0_ACR | 
					
						
							|  |  |  | 	/* clear WRP bit in PLB4A0_ACR */ | 
					
						
							|  |  |  | 	rlwinm	r3,r3,0,8,6 | 
					
						
							|  |  |  | 	mtdcr	DCRN_PLB4A0_ACR,r3 | 
					
						
							|  |  |  | 	isync | 
					
						
							|  |  |  | 	blr | 
					
						
							|  |  |  | 
 |