Fix build with CONFIG_DEBUG_RAM_SETUP on Intel 440BX, use printk().

It's a good thing to use printk() instead of print_*() anyway
on 440BX (and other chipsets which have been converted to CAR).

Build tested and boot-tested on ASUS P2B-LS.

Signed-off-by: Keith Hui <buurin@gmail.com>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@6206 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
Keith Hui
2010-12-23 17:12:03 +00:00
committed by Uwe Hermann
parent d43498d1be
commit 09f5a7446a
2 changed files with 26 additions and 74 deletions

View File

@@ -1,66 +1,34 @@
#include "raminit.h" #include "raminit.h"
#include <spd.h>
#include <console/console.h>
void dump_spd_registers(void) void dump_spd_registers(void)
{ {
#if CONFIG_DEBUG_RAM_SETUP #if CONFIG_DEBUG_RAM_SETUP
int i; int i;
print_debug("\n"); printk(BIOS_DEBUG, "\n");
for(i = 0; i < DIMM_SOCKETS; i++) { for(i = 0; i < DIMM_SOCKETS; i++) {
unsigned device; unsigned device;
device = DIMM0 + i; device = DIMM0 + i;
if (device) { if (device) {
int j; int j;
print_debug("dimm: "); printk(BIOS_DEBUG, "DIMM %d: %02x", i, device);
print_debug_hex8(i);
print_debug(".0: ");
print_debug_hex8(device);
for(j = 0; j < 256; j++) { for(j = 0; j < 256; j++) {
int status; int status;
unsigned char byte; unsigned char byte;
if ((j & 0xf) == 0) { if ((j & 0xf) == 0) {
print_debug("\n"); printk(BIOS_DEBUG, "\n%02x: ", j);
print_debug_hex8(j);
print_debug(": ");
} }
status = spd_read_byte(device, j); status = spd_read_byte(device, j);
if (status < 0) { if (status < 0) {
print_debug("bad device\n"); printk(BIOS_DEBUG, "bad device\n");
break; break;
} }
byte = status & 0xff; byte = status & 0xff;
print_debug_hex8(byte); printk(BIOS_DEBUG, "%02x ", byte);
print_debug_char(' ');
} }
print_debug("\n"); printk(BIOS_DEBUG, "\n");
} }
} }
#endif #endif
} }
#if 0
void dump_spd_registers(void)
{
unsigned device;
device = SMBUS_MEM_DEVICE_START;
printk(BIOS_DEBUG, "\n");
while(device <= SMBUS_MEM_DEVICE_END) {
int status = 0;
int i;
printk(BIOS_DEBUG, "dimm %02x", device);
for(i = 0; (i < 256) && (status == 0); i++) {
unsigned char byte;
if ((i % 20) == 0) {
printk(BIOS_DEBUG, "\n%3d: ", i);
}
status = smbus_read_byte(device, i, &byte);
if (status != 0) {
printk(BIOS_DEBUG, "bad device\n");
continue;
}
printk(BIOS_DEBUG, "%02x ", byte);
}
device += SMBUS_MEM_DEVICE_INC;
printk(BIOS_DEBUG, "\n");
}
}
#endif

View File

@@ -38,13 +38,14 @@ Macros and definitions.
/* Debugging macros. */ /* Debugging macros. */
#if CONFIG_DEBUG_RAM_SETUP #if CONFIG_DEBUG_RAM_SETUP
#define PRINT_DEBUG(x) print_debug(x) #include "lib/debug.c"
#define PRINT_DEBUG_HEX8(x) print_debug_hex8(x) #define PRINT_DEBUG(x...) printk(BIOS_DEBUG, x)
#define PRINT_DEBUG_HEX16(x) print_debug_hex16(x) #define PRINT_DEBUG_HEX8(x) PRINT_DEBUG("%02x", x)
#define PRINT_DEBUG_HEX32(x) print_debug_hex32(x) #define PRINT_DEBUG_HEX16(x) PRINT_DEBUG("%04x", x)
#define PRINT_DEBUG_HEX32(x) PRINT_DEBUG("%08x", x)
#define DUMPNORTH() dump_pci_device(NB) #define DUMPNORTH() dump_pci_device(NB)
#else #else
#define PRINT_DEBUG(x) #define PRINT_DEBUG(x...)
#define PRINT_DEBUG_HEX8(x) #define PRINT_DEBUG_HEX8(x)
#define PRINT_DEBUG_HEX16(x) #define PRINT_DEBUG_HEX16(x)
#define PRINT_DEBUG_HEX32(x) #define PRINT_DEBUG_HEX32(x)
@@ -621,11 +622,7 @@ static void spd_enable_refresh(void)
continue; continue;
reg = (reg & 0xf8) | refresh_rate_map[(value & 0x7f)]; reg = (reg & 0xf8) | refresh_rate_map[(value & 0x7f)];
PRINT_DEBUG(" Enabling refresh (DRAMC = 0x"); PRINT_DEBUG(" Enabling refresh (DRAMC = 0x%02x) for DIMM %02x\n", reg, i);
PRINT_DEBUG_HEX8(reg);
PRINT_DEBUG(") for DIMM ");
PRINT_DEBUG_HEX8(i);
PRINT_DEBUG("\n");
} }
pci_write_config8(NB, DRAMC, reg); pci_write_config8(NB, DRAMC, reg);
@@ -662,8 +659,8 @@ void sdram_set_registers(void)
} }
struct dimm_size { struct dimm_size {
unsigned long side1; u32 side1;
unsigned long side2; u32 side2;
}; };
static struct dimm_size spd_get_dimm_size(unsigned int device) static struct dimm_size spd_get_dimm_size(unsigned int device)
@@ -718,15 +715,13 @@ static struct dimm_size spd_get_dimm_size(unsigned int device)
* modules by setting them to a supported size. * modules by setting them to a supported size.
*/ */
if(sz.side1 > 128) { if(sz.side1 > 128) {
PRINT_DEBUG("Side1 was 0x"); PRINT_DEBUG("Side1 was %dMB but only 128MB will be used.\n",
PRINT_DEBUG_HEX16(sz.side1); sz.side1);
PRINT_DEBUG(" but only 128MB will be used.\n");
sz.side1 = 128; sz.side1 = 128;
if(sz.side2 > 128) { if(sz.side2 > 128) {
PRINT_DEBUG("Side2 was 0x"); PRINT_DEBUG("Side2 was %dMB but only 128MB will be used.\n",
PRINT_DEBUG_HEX16(sz.side2); sz.side2);
PRINT_DEBUG(" but only 128MB will be used.\n");
sz.side2 = 128; sz.side2 = 128;
} }
} }
@@ -759,15 +754,12 @@ static void set_dram_row_attributes(void)
if (value == SPD_MEMORY_TYPE_EDO if (value == SPD_MEMORY_TYPE_EDO
|| value == SPD_MEMORY_TYPE_SDRAM) { || value == SPD_MEMORY_TYPE_SDRAM) {
PRINT_DEBUG("Found ");
if (value == SPD_MEMORY_TYPE_EDO) { if (value == SPD_MEMORY_TYPE_EDO) {
edosd |= 0x02; edosd |= 0x02;
} else if (value == SPD_MEMORY_TYPE_SDRAM) { } else if (value == SPD_MEMORY_TYPE_SDRAM) {
edosd |= 0x04; edosd |= 0x04;
} }
PRINT_DEBUG("DIMM in slot "); PRINT_DEBUG("Found DIMM in slot %d\n", i);
PRINT_DEBUG_HEX8(i);
PRINT_DEBUG("\n");
if (edosd == 0x06) { if (edosd == 0x06) {
print_err("Mixing EDO/SDRAM unsupported!\n"); print_err("Mixing EDO/SDRAM unsupported!\n");
@@ -925,21 +917,15 @@ static void set_dram_row_attributes(void)
/* Set paging policy register. */ /* Set paging policy register. */
pci_write_config8(NB, PGPOL + 1, bpr); pci_write_config8(NB, PGPOL + 1, bpr);
PRINT_DEBUG("PGPOL[BPR] has been set to 0x"); PRINT_DEBUG("PGPOL[BPR] has been set to 0x%02x\n", bpr);
PRINT_DEBUG_HEX8(bpr);
PRINT_DEBUG("\n");
/* Set DRAM row page size register. */ /* Set DRAM row page size register. */
pci_write_config16(NB, RPS, rps); pci_write_config16(NB, RPS, rps);
PRINT_DEBUG("RPS has been set to 0x"); PRINT_DEBUG("RPS has been set to 0x%04x\n", rps);
PRINT_DEBUG_HEX16(rps);
PRINT_DEBUG("\n");
/* ### ECC */ /* ### ECC */
pci_write_config8(NB, NBXCFG + 3, nbxecc); pci_write_config8(NB, NBXCFG + 3, nbxecc);
PRINT_DEBUG("NBXECC[31:24] has been set to 0x"); PRINT_DEBUG("NBXECC[31:24] has been set to 0x%02x\n", nbxecc);
PRINT_DEBUG_HEX8(nbxecc);
PRINT_DEBUG("\n");
/* Set DRAMC[4:3] to proper memory type (EDO/SDRAM). /* Set DRAMC[4:3] to proper memory type (EDO/SDRAM).
* TODO: Registered SDRAM support. * TODO: Registered SDRAM support.
@@ -956,9 +942,7 @@ static void set_dram_row_attributes(void)
value = pci_read_config8(NB, DRAMC) & 0xe7; value = pci_read_config8(NB, DRAMC) & 0xe7;
value |= edosd; value |= edosd;
pci_write_config8(NB, DRAMC, value); pci_write_config8(NB, DRAMC, value);
PRINT_DEBUG("DRAMC has been set to 0x"); PRINT_DEBUG("DRAMC has been set to 0x%02x\n", value);
PRINT_DEBUG_HEX8(value);
PRINT_DEBUG("\n");
} }
void sdram_set_spd_registers(void) void sdram_set_spd_registers(void)