[U-Boot-Users] Q about automatic dram size detection in sdram_init()

SYLee!
The code works fine on all different memory configutations. This is because of the mirroring of the written values. For example on a system with 64MByte SDRAM a write to "ADDR_64MB" will mirror to one of the smaller addresses and the current test will fail! So this is perfectly OK.
Best regards, Stefan Roese
-----Original Message----- From: u-boot-users-admin@lists.sourceforge.net [mailto:u-boot-users- admin@lists.sourceforge.net] On Behalf Of SYLee Sent: Thursday, July 15, 2004 3:00 AM To: u-boot-users@lists.sourceforge.net Subject: [U-Boot-Users] Q about automatic dram size detection in sdram_init()
Hi,
In cpu/ppc4xx/sdram.c, in sdram_init(), the following seems to be wrong.
/* * Test if 128 MByte are equipped (mirror test) */ *(volatile ulong *)ADDR_ZERO = MAGIC0; *(volatile ulong *)ADDR_08MB = MAGIC1; *(volatile ulong *)ADDR_16MB = MAGIC2; *(volatile ulong *)ADDR_32MB = MAGIC3; *(volatile ulong *)ADDR_64MB = MAGIC4;
if ((*(volatile ulong *)ADDR_ZERO == MAGIC0) && (*(volatile ulong *)ADDR_08MB == MAGIC1) && (*(volatile ulong *)ADDR_16MB == MAGIC2) && (*(volatile ulong *)ADDR_32MB == MAGIC3)) { /* * OK, 128MB detected -> all done */ return; }
I think the following conditional expression must be inserted at if statement: (*(volatile ulong *)ADDR_64MB == MAGIC4)
The above case is also applied to 64MB and 32MB detection.
Thanks. SYLee.
Get your own 200MB free email at http://www.empal.com NH����un��?��?u�����y?l����ʧvv

In message 001501c46a3d$9705b720$0212000a@PCSTEFAN you wrote:
The code works fine on all different memory configutations. This is because of the mirroring of the written values. For example on a system with 64MByte SDRAM a write to "ADDR_64MB" will mirror to one of the smaller addresses and the current test will fail! So this is perfectly OK.
If you have a 64MB system, I'd expect that a write to ADDR_64MB succeeds?
Best regards,
Wolfgang Denk

Wolfgang!
The code works fine on all different memory configutations. This is because of the mirroring of the written values. For example
on a system
with 64MByte SDRAM a write to "ADDR_64MB" will mirror to one of the smaller addresses and the current test will fail! So this
is perfectly
OK.
If you have a 64MB system, I'd expect that a write to ADDR_64MB succeeds?
The memory controller is previously setup to 128MB. So a write to 64MB is OK, and _will_ be mirrored to a lower address on a 64MB system!
I agree that the code is pretty ugly and I am thinking about reworking it.
Best regards, Stefan Roese

In message 20040715100012.40f5d71c00027b490053c837.188@empal.com you wrote:
PGh0bWw+CjxoZWFkPgo8dGl0bGU+PC90aXRsZT4KPC9oZWFkPgo8Ym9keT4KSGksIA08YnI+Cg08 YnI+CkluIGNwdS9wcGM0eHgvc2RyYW0uYywgaW4gc2RyYW1faW5pdCgpLCB0aGUgZm9sbG93aW5n IHNlZW1zIHRvIGJlIHdyb25nLiANPGJyPgoNPGJyPgovKiANPGJyPgoqIFRlc3QgaWYgMTI4IE1C eXRlIGFyZSBlcXVpcHBlZCAobWlycm9yIHRlc3QpIA08YnI+CiovIA08YnI+Cioodm9sYXRpbGUg dWxvbmcgKilBRERSX1pFUk8gPSBNQUdJQzA7IA08YnI+Cioodm9sYXRpbGUgdWxvbmcgKilBRERS XzA4TUIgPSBNQUdJQzE7IA08YnI+Cioodm9sYXRpbGUgdWxvbmcgKilBRERSXzE2TUIgPSBNQUdJ QzI7IA08YnI+Cioodm9sYXRpbGUgdWxvbmcgKilBRERSXzMyTUIgPSBNQUdJQzM7IA08YnI+Cioo dm9sYXRpbGUgdWxvbmcgKilBRERSXzY0TUIgPSBNQUdJQzQ7IA08YnI+Cg08YnI+CmlmICgoKih2 b2xhdGlsZSB1bG9uZyAqKUFERFJfWkVSTyA9PSBNQUdJQzApICYmIA08YnI+CiZuYnNwOyAmbmJz cDsgKCoodm9sYXRpbGUgdWxvbmcgKilBRERSXzA4TUIgPT0gTUFHSUMxKSAmJiANPGJyPgombmJz cDsgJm5ic3A7ICgqKHZvbGF0aWxlIHVsb25nICopQUREUl8xNk1CID09IE1BR0lDMikgJiYgDTxi cj4KJm5ic3A7ICZuYnNwOyAoKih2b2xhdGlsZSB1bG9uZyAqKUFERFJfMzJNQiA9PSBNQUdJQzMp KSB7IA08YnI+Ci8qIA08YnI+CiogT0ssIDEyOE1CIGRldGVjdGVkIC0mZ3Q7IGFsbCBkb25lIA08 YnI+CiovIA08YnI+CnJldHVybjsgDTxicj4KfSANPGJyPgoNPGJyPgpJIHRoaW5rIHRoZSBmb2xs b3dpbmcgY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBtdXN0IGJlIGluc2VydGVkIGF0IGlmIHN0YXRl bWVudDogDTxicj4KKCoodm9sYXRpbGUgdWxvbmcgKilBRERSXzY0TUIgPT0gTUFHSUM0KSANPGJy PgoNPGJyPgpUaGUgYWJvdmUgY2FzZSBpcyBhbHNvIGFwcGxpZWQgdG8gNjRNQiBhbmQgMzJNQiBk ZXRlY3Rpb24uIA08YnI+Cg08YnI+ClRoYW5rcy4gDTxicj4KU1lMZWUuIA08YnI+Cgo8IS0tIEVt cGFsIFNsb2dhbiBTdGFydCAtLT4KPGhyIG5vc2hhZGUgc2l6ZT0xIHdpZHRoPTU5MCBhbGlnbj1s ZWZ0Pgo8Zm9udCBzdHlsZT0iZm9udC1zaXplOjlwdCI+R2V0IHlvdXIgb3duIDIwME1CIGZyZWUg ZW1haWwgYXQgPGEgaHJlZj0iaHR0cDovL21haWwuZW1wYXMuY29tIiB0YXJnZXQ9Im5ld193aW4x Ij5odHRwOi8vd3d3LmVtcGFsLmNvbTwvYT48YnI+CjwhLS0gRW1wYWwgU2xvZ2FuIEVuZCAtLT4K PC9ib2R5Pgo8L2h0bWw+Cg==
Please do not send base 64 encoded messages.
Please do not send HTML messages.
Please send plain text only.
Message unreadable, ignored. Sorry.
participants (3)
-
"SYLee"
-
Stefan Roese
-
Wolfgang Denk