nehalem: Make SPD address map into parameter.
It's mobo dependent. Change-Id: I7a9ba0fb7374a61178e9282acd8f10098435f1fd Signed-off-by: Vladimir Serbinenko <phcoder@gmail.com> Reviewed-on: http://review.coreboot.org/5253 Tested-by: build bot (Jenkins) Reviewed-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
This commit is contained in:
parent
2ab8ec7cfb
commit
902626c23c
|
@ -207,6 +207,7 @@ void main(unsigned long bist)
|
||||||
{
|
{
|
||||||
u32 reg32;
|
u32 reg32;
|
||||||
int s3resume = 0;
|
int s3resume = 0;
|
||||||
|
const u8 spd_addrmap[4] = { 0x50, 0, 0x51, 0 };
|
||||||
|
|
||||||
timestamp_init(rdtsc ());
|
timestamp_init(rdtsc ());
|
||||||
|
|
||||||
|
@ -286,7 +287,7 @@ void main(unsigned long bist)
|
||||||
|
|
||||||
timestamp_add_now(TS_BEFORE_INITRAM);
|
timestamp_add_now(TS_BEFORE_INITRAM);
|
||||||
|
|
||||||
raminit(s3resume);
|
raminit(s3resume, spd_addrmap);
|
||||||
|
|
||||||
timestamp_add_now(TS_AFTER_INITRAM);
|
timestamp_add_now(TS_AFTER_INITRAM);
|
||||||
|
|
||||||
|
|
|
@ -3810,7 +3810,7 @@ set_fsb_frequency (void)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void raminit(const int s3resume)
|
void raminit(const int s3resume, const u8 *spd_addrmap)
|
||||||
{
|
{
|
||||||
unsigned channel, slot, lane, rank;
|
unsigned channel, slot, lane, rank;
|
||||||
int i;
|
int i;
|
||||||
|
@ -3956,10 +3956,10 @@ void raminit(const int s3resume)
|
||||||
0x8f, 0x90, 0x91, 0x92, 0x93, 0x94,
|
0x8f, 0x90, 0x91, 0x92, 0x93, 0x94,
|
||||||
0x95
|
0x95
|
||||||
};
|
};
|
||||||
if (slot)
|
if (!spd_addrmap[2 * channel + slot])
|
||||||
continue;
|
continue;
|
||||||
for (try = 0; try < 5; try++) {
|
for (try = 0; try < 5; try++) {
|
||||||
v = smbus_read_byte(0x50 + channel,
|
v = smbus_read_byte(spd_addrmap[2 * channel + slot],
|
||||||
DEVICE_TYPE);
|
DEVICE_TYPE);
|
||||||
if (v >= 0)
|
if (v >= 0)
|
||||||
break;
|
break;
|
||||||
|
@ -3973,7 +3973,7 @@ void raminit(const int s3resume)
|
||||||
gav(info.
|
gav(info.
|
||||||
spd[channel][0][useful_addresses
|
spd[channel][0][useful_addresses
|
||||||
[addr]] =
|
[addr]] =
|
||||||
smbus_read_byte(0x50 + channel,
|
smbus_read_byte(spd_addrmap[2 * channel + slot],
|
||||||
useful_addresses
|
useful_addresses
|
||||||
[addr]));
|
[addr]));
|
||||||
if (info.spd[channel][0][DEVICE_TYPE] != 11)
|
if (info.spd[channel][0][DEVICE_TYPE] != 11)
|
||||||
|
|
|
@ -22,6 +22,13 @@
|
||||||
|
|
||||||
#include "nehalem.h"
|
#include "nehalem.h"
|
||||||
|
|
||||||
void raminit(int s3resume);
|
/* spd_addrmap is array of 4 elements:
|
||||||
|
Channel 0 Slot 0
|
||||||
|
Channel 0 Slot 1
|
||||||
|
Channel 1 Slot 0
|
||||||
|
Channel 1 Slot 1
|
||||||
|
0 means "not present"
|
||||||
|
*/
|
||||||
|
void raminit(const int s3resume, const u8 *spd_addrmap);
|
||||||
|
|
||||||
#endif /* RAMINIT_H */
|
#endif /* RAMINIT_H */
|
||||||
|
|
Loading…
Reference in New Issue