error in k8 ram setup

Stefan Reinauer stepan at openbios.org
Sun Jan 23 12:20:01 CET 2005


Hi,

The following function in freebios2/src/northbridge/amd/amdk8/raminit.c
is obviously wrong.

static int update_dimm_x4(const struct mem_controller *ctrl, const
struct mem_param *param, int i)
{
        uint32_t dcl;
        int value;
        int dimm;
        value = spd_read_byte(ctrl->channel0[i], 13);
        if (value < 0) {
                return -1;
        }
        dimm = i;
        dimm += DCL_x4DIMM_SHIFT;
        dcl = pci_read_config32(ctrl->f2, DRAM_CONFIG_LOW);
        dcl &= ~(1 << dimm);
        if (value == 4) {
                dcl |= (1 << dimm);
        }
        pci_write_config32(ctrl->f2, DRAM_CONFIG_LOW, dcl);
        return 1;
}



Especially the part that checks the Primary SDRAM Width for a value 
of 4. The SPD roms I am using have the value 8 in there and memory 
does not initialize correctly.

Checking (value == 4 || value == 8) or (value >= 0x4) helps, but I 
have no idea whether that is correct. It appears that something else 
has to be done. I've also seen RAMs with a value of 0x10.

Comments? Otherwise I am going to check (value >= 0x4) in somewhen next
week.

Stefan






More information about the coreboot mailing list