[coreboot] [PATCH] ASUS P2B-LS support, RAM detection for 440BX, add Slot 1 CPU, Microcode for Intel Tualatin CPUs
Joseph Smith
joe at settoplinux.org
Fri Mar 5 15:15:05 CET 2010
On Fri, 05 Mar 2010 13:04:27 +0000, Mark Marshall <mark.marshall at csr.com>
wrote:
> Joseph Smith wrote:
>> On 03/05/2010 03:03 AM, Mark Marshall wrote:
>>> On 04/03/10 13:10, Joseph Smith wrote:
>>>> On 03/04/2010 07:38 AM, Joseph Smith wrote:
>>>>> On 03/04/2010 07:30 AM, Uwe Hermann wrote:
>>>>>> On Thu, Mar 04, 2010 at 10:05:57AM +0000, Mark Marshall wrote:
>>>>>>> On 03/03/10 04:19, Keith Hui wrote:
>>>>>>> The first problem is that this motherboard only has three DIMM
>>>>>>> slots. This means you have to set SDRAMC to something different;
>>>>>>> 0x0103 works for me.
>>>>>>>
>>>>>> Hm, seems to be determined by SDRAMPWR + MMCONFIG, and MMCONFIG
>>>>>> seems to
>>>>>> be a hardware-strap (so we can check it), but not sure about
> SDRAMPWR.
>>>>>>
>>>> >>>
>>>> I think a simple SPD probe would work, if the correct value is
returned
>>>> you know you have memory in that slot, otherwise if 0xff is returned
>>>> then no memory is present. Do this probe for as many slots as the 440
>>>> supports. Then set your registers based on that.
>>>
>>> The issue here is the number of DIMM slots on the motherboard, not the
>>> number of sticks in the slots. Some 440BX boards have four slots, while
>>> others only have three.
>>>
>>> MM
>>>
>> That is fine. Then if 440bx datasheet says it supports 4 slots, then
>> that should be the standard.
>>
>
> Please check this section of the 440BX data sheet.
>
> 3.3.24 SDRAMC—SDRAM Control Register (Device 0)
>
> We are interested in bit 4.
>
> SDRAMPWR. The SDRAMPWR bit controls how the CKE signals are driven
> for different DRAM configurations. For a 3 DIMM configuration,
> SDRAMPWR should be set to ‘0’. For a 4 DIMM configuration,
> SDRAMPWR should be set to ‘1’. In this case the 82443BX drives a
> single CKE signal (GCKE). The combination of SDRAMPWR and MMCONFIG
> (DRAMC register) determine the functioning of the CKE signals.
> Refer to the DRAMC register (Section 3.3.15, “DRAMC—DRAM
> Control Register (Device 0)” on page 3-19) for more details.
>
> Note: When PCIRST# assertion occurs during POS/STR, these bits
> are not reset to 0.
>
> As far as I can tell we cannot auto-detect this. Some (many)
> 440BX boards only have three DIMM slots, and in these cases the
> clocks are routed differently to the boards with four DIMM slots.
>
That's easy... so you do something like this:
slot4_detect = (spd_read_byte((DIMM_SPD_BASE + 3), SPD_MEMORY_TYPE);
if (slot4_detect != 0xff) {
/* We have 4 slots */
----Set bit 4 in SDRAMPWR----
#define DIMM_SOCKETS 4
} else {
/* We have 3 slots */
----Set bit 4 in SDRAMPWR----
#define DIMM_SOCKETS 3
}
Hope that helps.
--
Thanks,
Joseph Smith
Set-Top-Linux
www.settoplinux.org
More information about the coreboot
mailing list