@ -46,6 +46,7 @@
# include <asm/processor.h>
# include <asm/processor.h>
# include <i2c.h>
# include <i2c.h>
# include <ppc4xx.h>
# include <ppc4xx.h>
# include <asm/mmu.h>
# if defined(CONFIG_SPD_EEPROM) && \
# if defined(CONFIG_SPD_EEPROM) && \
( defined ( CONFIG_440GP ) | | defined ( CONFIG_440GX ) | | \
( defined ( CONFIG_440GP ) | | defined ( CONFIG_440GX ) | | \
@ -229,6 +230,22 @@
# define TRUE 1
# define TRUE 1
# define FALSE 0
# define FALSE 0
/*
* This DDR2 setup code can dynamically setup the TLB entries for the DDR2 memory
* region . Right now the cache should still be disabled in U - Boot because of the
* EMAC driver , that need it ' s buffer descriptor to be located in non cached
* memory .
*
* If at some time this restriction doesn ' t apply anymore , just define
* CFG_ENABLE_SDRAM_CACHE in the board config file and this code should setup
* everything correctly .
*/
# ifdef CFG_ENABLE_SDRAM_CACHE
# define MY_TLB_WORD2_I_ENABLE 0 /* enable caching on SDRAM */
# else
# define MY_TLB_WORD2_I_ENABLE TLB_WORD2_I_ENABLE /* disable caching on SDRAM */
# endif
const unsigned long test [ NUMMEMTESTS ] [ NUMMEMWORDS ] = {
const unsigned long test [ NUMMEMTESTS ] [ NUMMEMWORDS ] = {
{ 0x00000000 , 0x00000000 , 0xFFFFFFFF , 0xFFFFFFFF , 0x00000000 , 0x00000000 ,
{ 0x00000000 , 0x00000000 , 0xFFFFFFFF , 0xFFFFFFFF , 0x00000000 , 0x00000000 ,
0xFFFFFFFF , 0xFFFFFFFF } ,
0xFFFFFFFF , 0xFFFFFFFF } ,
@ -259,6 +276,7 @@ typedef struct bank_param BANKPARMS;
# ifdef CFG_SIMULATE_SPD_EEPROM
# ifdef CFG_SIMULATE_SPD_EEPROM
extern unsigned char cfg_simulate_spd_eeprom [ 128 ] ;
extern unsigned char cfg_simulate_spd_eeprom [ 128 ] ;
# endif
# endif
void program_tlb ( u32 start , u32 size , u32 tlb_word2_i_value ) ;
unsigned char spd_read ( uchar chip , uint addr ) ;
unsigned char spd_read ( uchar chip , uint addr ) ;
@ -377,6 +395,11 @@ long int spd_sdram(void) {
total_size = program_bxcr ( dimm_populated , iic0_dimm_addr ,
total_size = program_bxcr ( dimm_populated , iic0_dimm_addr ,
num_dimm_banks ) ;
num_dimm_banks ) ;
# ifdef CONFIG_PROG_SDRAM_TLB /* this define should eventually be removed */
/* and program tlb entries for this size (dynamic) */
program_tlb ( 0 , total_size , MY_TLB_WORD2_I_ENABLE ) ;
# endif
/*
/*
* program SDRAM Clock Timing Register ( SDRAM0_CLKTR )
* program SDRAM Clock Timing Register ( SDRAM0_CLKTR )
*/
*/
@ -1331,9 +1354,9 @@ unsigned long program_bxcr(unsigned long* dimm_populated,
cr | = SDRAM_BXCR_SDBE ;
cr | = SDRAM_BXCR_SDBE ;
for ( i = 0 ; i < num_banks ; i + + ) {
for ( i = 0 ; i < num_banks ; i + + ) {
bank_parms [ ctrl_bank_num [ dimm_num ] + i ] . bank_size_bytes =
bank_parms [ ctrl_bank_num [ dimm_num ] + i + dimm_num ] . bank_size_bytes =
( 4 * 1024 * 1024 ) * bank_size_id ;
( 4 * 1024 * 1024 ) * bank_size_id ;
bank_parms [ ctrl_bank_num [ dimm_num ] + i ] . cr = cr ;
bank_parms [ ctrl_bank_num [ dimm_num ] + i + dimm_num ] . cr = cr ;
}
}
}
}
}
}