linuxbios on geode gx1 with sst-39SF020A and CompactFlash [PMX:#]

ramesh bios ramesh_bios at yahoo.com
Tue Jan 18 20:21:01 CET 2005


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 at 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 at 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 



More information about the coreboot mailing list