Ok, I adapted the E7501 code, I think this will work great. I will test tonight, and get back.
dimm_start = 0;
for (i = 0; i < DIMM_SOCKETS; ++i) { if (i == 0) { dimm_end = pci_read_config8(ctrl->d0, DRB + 1); } else if (i == 1) { dimm_end = pci_read_config8(ctrl->d0, DRB + 3); }
if (dimm_end > dimm_start) {
/* Convert to a 32 bit address. NOTE: 2^25 == 32 MB */ dimm_start_address = dimm_start << 25;
RAM_DEBUG_MESSAGE(" Sending RAM command to 0x"); RAM_DEBUG_HEX32(dimm_start_address + addr_offset); RAM_DEBUG_MESSAGE("\r\n"); read32(dimm_start_address + addr_offset);
/* Set the start of the next DIMM. */ dimm_start = dimm_end; } }