Oooh, I guess it's a chance for me to contribute in some way. :-)
I'm not familiar with DIMM autosizing. But I believe the problem is coming from the following block of code that does the module bank detection. At least that's the first sign of trouble since module bank detection is done and then the DIMM size is calculated. the gx1 raminit.inc file mentions copyright Christer Weinigel whom I've CCed for advice.
Christer, I'm having trouble with my gx1 board. The ramtest fails and I see an explicit difference in what the normal bios sets MC_BANK_CFG to and what the raminit autosizing sets it to. The difference is the module bank count and the dimm size. I believe on my board, the module bank count should be just 1 and the dimm size should be 64MB. Instead the autosizing code comes up with 2 and 128MB. I'm looking through this code and I see the mov of testdata2 to somewhere and then the readback of it and then the compare. I guess that it must be succeeding resulting in the detection of two module banks. I don't follow how the address calculations correspond with particular banks. I noticed you mentioned reading the nsc reference drivers to get further understanding. Are these available somewhere? Any advice on how to resolve the problem would be much appreciated.
Thanks! Ramesh
/* Do module banks detection */ movl $0x0800, %esi /* Smallest page = 1KB * 2 banks */
shll $16, %ecx /* Save DIMM shift */ movl %ebp, %eax /* Get the DIMM values */ shrl %cl, %eax /* shifted back */
movw %ax, %cx /* Use the MC_BANK_CFG */ shrw $4, %cx /* page size setting as */ andb $7, %cl /* a shift to calculate */ shll %cl, %esi /* the page size */
movw %ax, %cx /* Use the MC_BANK_CFG */ shrw $12, %cx /* component bank setting */ andb $1, %cl /* a shift to calculate */ shll %cl, %esi /* the total bank size */
shrl $16, %ecx /* Restore DIMM shift */
movl $TEST_DATA1, 0 /* Write data to location 0 */ movl $TEST_DATA2, (%esi) /* Write to module bank 2 */ movl $0, 0x100 /* Clear the bus */ movl (%esi), %eax /* Read from module bank 2 */
cmpl $TEST_DATA2, %eax /* If good data, */ je module_banks_2 /* there are 2 module banks */
--- "Ronald G. Minnich" rminnich@lanl.gov wrote:
I think you may have found a bug I never had time to fix. Certain DIMMs never worked on my Geodes.
ron
Linuxbios mailing list Linuxbios@clustermatic.org
http://www.clustermatic.org/mailman/listinfo/linuxbios
__________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com