@ -14,9 +14,6 @@ struct board_specific_parameters {
u32 wrlvl_start ;
u32 wrlvl_start ;
u32 wrlvl_ctl_2 ;
u32 wrlvl_ctl_2 ;
u32 wrlvl_ctl_3 ;
u32 wrlvl_ctl_3 ;
u32 cpo ;
u32 write_data_delay ;
u32 force_2t ;
} ;
} ;
/*
/*
@ -28,58 +25,48 @@ struct board_specific_parameters {
static const struct board_specific_parameters udimm0 [ ] = {
static const struct board_specific_parameters udimm0 [ ] = {
/*
/*
* memory controller 0
* memory controller 0
* num | hi | rank | clk | wrlvl | wrlvl | wrlvl | cpo | wrdata | 2 T
* num | hi | rank | clk | wrlvl | wrlvl | wrlvl |
* ranks | mhz | GB | adjst | start | ctl2 | ctl3 | | delay |
* ranks | mhz | GB | adjst | start | ctl2 | ctl3 |
*/
*/
{ 2 , 1350 , 4 , 4 , 8 , 0x0809090b , 0x0c0c0d0a , 0xff , 2 , 0 } ,
{ 2 , 1200 , 2 , 5 , 7 , 0x0808090a , 0x0b0c0c0a } ,
{ 2 , 1350 , 0 , 5 , 7 , 0x0709090b , 0x0c0c0d09 , 0xff , 2 , 0 } ,
{ 2 , 1500 , 2 , 5 , 6 , 0x07070809 , 0x0a0b0b09 } ,
{ 2 , 1666 , 4 , 4 , 8 , 0x080a0a0d , 0x0d10100b , 0xff , 2 , 0 } ,
{ 2 , 1600 , 2 , 5 , 8 , 0x090b0b0d , 0x0d0e0f0b } ,
{ 2 , 1666 , 0 , 5 , 7 , 0x080a0a0c , 0x0d0d0e0a , 0xff , 2 , 0 } ,
{ 2 , 1700 , 2 , 4 , 7 , 0x080a0a0c , 0x0c0d0e0a } ,
{ 2 , 1900 , 0 , 4 , 8 , 0x090a0b0e , 0x0f11120c , 0xff , 2 , 0 } ,
{ 2 , 1900 , 2 , 5 , 9 , 0x0a0b0c0e , 0x0f10120c } ,
{ 2 , 2140 , 0 , 4 , 8 , 0x090a0b0e , 0x0f11120c , 0xff , 2 , 0 } ,
{ 2 , 2140 , 2 , 4 , 8 , 0x090a0b0d , 0x0e0f110b } ,
{ 1 , 1350 , 0 , 5 , 8 , 0x0809090b , 0x0c0c0d0a , 0xff , 2 , 0 } ,
{ 1 , 1200 , 2 , 5 , 7 , 0x0808090a , 0x0b0c0c0a } ,
{ 1 , 1700 , 0 , 5 , 8 , 0x080a0a0c , 0x0c0d0e0a , 0xff , 2 , 0 } ,
{ 1 , 1500 , 2 , 5 , 6 , 0x07070809 , 0x0a0b0b09 } ,
{ 1 , 1800 , 2 , 5 , 6 , 0x06070709 , 0x110a0b08 , 0xff , 2 , 0 } ,
{ 1 , 1600 , 2 , 5 , 8 , 0x090b0b0d , 0x0d0e0f0b } ,
{ 1 , 1866 , 2 , 4 , 6 , 0x06060708 , 0x09090a07 , 0xff , 2 , 0 } ,
{ 1 , 1700 , 2 , 4 , 7 , 0x080a0a0c , 0x0c0d0e0a } ,
{ 1 , 1900 , 2 , 4 , 6 , 0x06060708 , 0x09090a07 , 0xff , 2 , 0 } ,
{ 1 , 1900 , 2 , 5 , 9 , 0x0a0b0c0e , 0x0f10120c } ,
{ 1 , 2000 , 2 , 4 , 8 , 0x090a0b0d , 0x0e0f110b , 0xff , 2 , 0 } ,
{ 1 , 2140 , 2 , 4 , 8 , 0x090a0b0d , 0x0e0f110b } ,
{ 1 , 2133 , 2 , 4 , 8 , 0x090a0b0d , 0x0e0f110b , 0xff , 2 , 0 } ,
{ }
{ }
} ;
} ;
static const struct board_specific_parameters rdimm0 [ ] = {
static const struct board_specific_parameters rdimm0 [ ] = {
/*
/*
* memory controller 0
* memory controller 0
* num | hi | rank | clk | wrlvl | wrlvl | wrlvl | cpo | wrdata | 2 T
* num | hi | rank | clk | wrlvl | wrlvl | wrlvl |
* ranks | mhz | GB | adjst | start | ctl2 | ctl3 | | delay |
* ranks | mhz | GB | adjst | start | ctl2 | ctl3 |
*/
*/
{ 4 , 1350 , 0 , 5 , 9 , 0x08070605 , 0x06070806 , 0xff , 2 , 0 } ,
/* TODO: need tuning these parameters if RDIMM is used */
{ 4 , 1666 , 0 , 5 , 11 , 0x0a080706 , 0x07090906 , 0xff , 2 , 0 } ,
{ 4 , 1350 , 0 , 5 , 9 , 0x08070605 , 0x06070806 } ,
{ 4 , 2140 , 0 , 5 , 12 , 0x0b090807 , 0x080a0b07 , 0xff , 2 , 0 } ,
{ 4 , 1666 , 0 , 5 , 11 , 0x0a080706 , 0x07090906 } ,
{ 2 , 1350 , 0 , 5 , 9 , 0x08070605 , 0x06070806 , 0xff , 2 , 0 } ,
{ 4 , 2140 , 0 , 5 , 12 , 0x0b090807 , 0x080a0b07 } ,
{ 2 , 1666 , 0 , 5 , 11 , 0x0a090806 , 0x08090a06 , 0xff , 2 , 0 } ,
{ 2 , 1350 , 0 , 5 , 9 , 0x08070605 , 0x06070806 } ,
{ 2 , 2140 , 0 , 5 , 12 , 0x0b090807 , 0x080a0b07 , 0xff , 2 , 0 } ,
{ 2 , 1666 , 0 , 5 , 11 , 0x0a090806 , 0x08090a06 } ,
{ 1 , 1350 , 0 , 5 , 9 , 0x08070605 , 0x06070806 , 0xff , 2 , 0 } ,
{ 2 , 2140 , 0 , 5 , 12 , 0x0b090807 , 0x080a0b07 } ,
{ 1 , 1666 , 0 , 5 , 11 , 0x0a090806 , 0x08090a06 , 0xff , 2 , 0 } ,
{ 1 , 1350 , 0 , 5 , 9 , 0x08070605 , 0x06070806 } ,
{ 1 , 2140 , 0 , 4 , 12 , 0x0b090807 , 0x080a0b07 , 0xff , 2 , 0 } ,
{ 1 , 1666 , 0 , 5 , 11 , 0x0a090806 , 0x08090a06 } ,
{ 1 , 2140 , 0 , 4 , 12 , 0x0b090807 , 0x080a0b07 } ,
{ }
{ }
} ;
} ;
/*
* The three slots have slightly different timing . The center values are good
* for all slots . We use identical speed tables for them . In future use , if
* DIMMs require separated tables , make more entries as needed .
*/
static const struct board_specific_parameters * udimms [ ] = {
static const struct board_specific_parameters * udimms [ ] = {
udimm0 ,
udimm0 ,
} ;
} ;
/*
* The three slots have slightly different timing . See comments above .
*/
static const struct board_specific_parameters * rdimms [ ] = {
static const struct board_specific_parameters * rdimms [ ] = {
rdimm0 ,
rdimm0 ,
} ;
} ;
# endif
# endif