diff options
Diffstat (limited to 'src/mainboard/dell')
-rw-r--r-- | src/mainboard/dell/s1850/Kconfig | 6 | ||||
-rw-r--r-- | src/mainboard/dell/s1850/auto.c | 15 | ||||
-rw-r--r-- | src/mainboard/dell/s1850/debug.c | 87 |
3 files changed, 42 insertions, 66 deletions
diff --git a/src/mainboard/dell/s1850/Kconfig b/src/mainboard/dell/s1850/Kconfig index a74471d41b..7f4942d7ad 100644 --- a/src/mainboard/dell/s1850/Kconfig +++ b/src/mainboard/dell/s1850/Kconfig @@ -35,6 +35,12 @@ config MAINBOARD_PCI_SUBSYSTEM_DEVICE_ID default 0x016c depends on BOARD_DELL_S1850 +config MAINBOARD_PCI_SUBSYSTEM_VENDOR_ID + hex + default 0x1028 + depends on BOARD_DELL_S1850 + + config MAX_CPUS int default 2 diff --git a/src/mainboard/dell/s1850/auto.c b/src/mainboard/dell/s1850/auto.c index be8181215d..16b564b02c 100644 --- a/src/mainboard/dell/s1850/auto.c +++ b/src/mainboard/dell/s1850/auto.c @@ -61,6 +61,9 @@ static inline int spd_read_byte(unsigned device, unsigned address) return smbus_read_byte(device, address); } +/* this is very highly mainboard dependent, related to wiring */ +/* from factory BIOS via lspci */ +#define DIMM_MAP_LOGICAL 0x2841 #include "northbridge/intel/e7520/raminit.c" #include "lib/generic_sdram.c" @@ -184,6 +187,8 @@ static void main(unsigned long bist) .f1 = PCI_DEV(0, 0x00, 1), .f2 = PCI_DEV(0, 0x00, 2), .f3 = PCI_DEV(0, 0x00, 3), + /* the wiring on this part is really messed up */ + /* this is my best guess so far */ .channel0 = {(0xa<<3)|0, (0xa<<3)|1, (0xa<<3)|2, (0xa<<3)|3, }, .channel1 = {(0xa<<3)|4, (0xa<<3)|5, (0xa<<3)|6, (0xa<<3)|7, }, } @@ -331,24 +336,28 @@ static void main(unsigned long bist) #if 1 enable_smbus(); #endif -#if 1 +#if 0 // dump_spd_registers(&cpu[0]); int i; for(i = 0; i < 1; i++) { dump_spd_registers(); } #endif +#if 1 + show_dram_slots(); +#endif disable_watchdogs(); // dump_ipmi_registers(); mainboard_set_e7520_leds(); // memreset_setup(); + sdram_initialize(ARRAY_SIZE(mch), mch); -#if 1 +#if 0 dump_pci_devices(); #endif #if 1 dump_pci_device(PCI_DEV(0, 0x00, 0)); - dump_bar14(PCI_DEV(0, 0x00, 0)); +// dump_bar14(PCI_DEV(0, 0x00, 0)); #endif #if 1 // temporarily disabled diff --git a/src/mainboard/dell/s1850/debug.c b/src/mainboard/dell/s1850/debug.c index 5546421156..766a819d52 100644 --- a/src/mainboard/dell/s1850/debug.c +++ b/src/mainboard/dell/s1850/debug.c @@ -205,69 +205,6 @@ static void dump_pci_devices(void) } } -#if 0 -static void dump_spd_registers(const struct mem_controller *ctrl) -{ - int i; - print_debug("\r\n"); - for(i = 0; i < 4; i++) { - unsigned device; - device = ctrl->channel0[i]; - if (device) { - int j; - print_debug("dimm: "); - print_debug_hex8(i); - print_debug(".0: "); - print_debug_hex8(device); - for(j = 0; j < 256; j++) { - int status; - unsigned char byte; - if ((j & 0xf) == 0) { - print_debug("\r\n"); - print_debug_hex8(j); - print_debug(": "); - } - status = smbus_read_byte(device, j); - if (status < 0) { - print_debug("bad device\r\n"); - break; - } - byte = status & 0xff; - print_debug_hex8(byte); - print_debug_char(' '); - } - print_debug("\r\n"); - } - device = ctrl->channel1[i]; - if (device) { - int j; - print_debug("dimm: "); - print_debug_hex8(i); - print_debug(".1: "); - print_debug_hex8(device); - for(j = 0; j < 256; j++) { - int status; - unsigned char byte; - if ((j & 0xf) == 0) { - print_debug("\r\n"); - print_debug_hex8(j); - print_debug(": "); - } - status = smbus_read_byte(device, j); - if (status < 0) { - print_debug("bad device\r\n"); - break; - } - byte = status & 0xff; - print_debug_hex8(byte); - print_debug_char(' '); - } - print_debug("\r\n"); - } - } -} -#endif - void dump_spd_registers(void) { unsigned device; @@ -301,6 +238,30 @@ void dump_spd_registers(void) } } +void show_dram_slots(void) +{ + unsigned device; + device = SMBUS_MEM_DEVICE_START; + while(device <= SMBUS_MEM_DEVICE_END) { + int status = 0; + int i; + print_debug("\r\n"); + print_debug("dimm "); + print_debug_hex8(device); + + status = smbus_read_byte(device, 0); + if (status < 0) { + print_debug("bad device: "); + } else { + print_debug("present: "); + } + print_debug_hex8(status); + print_debug("\r\n"); + device += SMBUS_MEM_DEVICE_INC; + print_debug("\n"); + } +} + void dump_ipmi_registers(void) { unsigned device; |