summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRonald G. Minnich <rminnich@gmail.com>2004-09-30 16:37:22 +0000
committerRonald G. Minnich <rminnich@gmail.com>2004-09-30 16:37:22 +0000
commita4779e80c3e54e6e6c31169908803065b4ef68b2 (patch)
tree80dc6721ec07d14523e6ed3ee1af30013f869a6b /src
parent2b763af4ca6541734ff7d36a16173f9606c248c9 (diff)
downloadcoreboot-a4779e80c3e54e6e6c31169908803065b4ef68b2.tar.xz
digital logic stuff, fixes for the smbus code in 82801dbm
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@1652 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'src')
-rw-r--r--src/mainboard/digitallogic/adl855pc/Config.lb34
-rw-r--r--src/mainboard/digitallogic/adl855pc/auto.c14
-rw-r--r--src/southbridge/intel/i82801dbm/i82801dbm_early_smbus.c20
3 files changed, 61 insertions, 7 deletions
diff --git a/src/mainboard/digitallogic/adl855pc/Config.lb b/src/mainboard/digitallogic/adl855pc/Config.lb
index 237a1d957a..fb2ba53ba4 100644
--- a/src/mainboard/digitallogic/adl855pc/Config.lb
+++ b/src/mainboard/digitallogic/adl855pc/Config.lb
@@ -202,7 +202,9 @@ end
##
## Setup RAM
##
+mainboardinit cpu/p6/enable_mmx_sse.inc
mainboardinit ./auto.inc
+mainboardinit cpu/p6/disable_mmx_sse.inc
##
## Include the secondary Configuration files
@@ -224,6 +226,38 @@ northbridge intel/i855pm "i855pm"
# pci 0:12.0
register "enable_usb" = "0"
register "enable_native_ide" = "0"
+ register "enable_usb" = "0"
+ register "enable_native_ide" = "0"
+ superio winbond/w83627hf link 1
+ pnp 2e.0 on # Floppy
+ io 0x60 = 0x3f0
+ irq 0x70 = 6
+ drq 0x74 = 2
+ pnp 2e.1 off # Parallel Port
+ io 0x60 = 0x378
+ irq 0x70 = 7
+ pnp 2e.2 on # Com1
+ io 0x60 = 0x3f8
+ irq 0x70 = 4
+ pnp 2e.3 off # Com2
+ io 0x60 = 0x2f8
+ irq 0x70 = 3
+ pnp 2e.5 on # Keyboard
+ io 0x60 = 0x60
+ io 0x62 = 0x64
+ irq 0x70 = 1
+ irq 0x72 = 12
+ pnp 2e.6 off # CIR
+ pnp 2e.7 off # GAME_MIDI_GIPO1
+ pnp 2e.8 off # GPIO2
+ pnp 2e.9 off # GPIO3
+ pnp 2e.a off # ACPI
+ pnp 2e.b on # HW Monitor
+ io 0x60 = 0x290
+ register "com1" = "{1}"
+ # register "com1" = "{1, 0, 0x3f8, 4}"
+ # register "lpt" = "{1}"
+ end
end
end
diff --git a/src/mainboard/digitallogic/adl855pc/auto.c b/src/mainboard/digitallogic/adl855pc/auto.c
index 305f5c359c..6e6b2cd944 100644
--- a/src/mainboard/digitallogic/adl855pc/auto.c
+++ b/src/mainboard/digitallogic/adl855pc/auto.c
@@ -1,4 +1,5 @@
#define ASSEMBLY 1
+
#include <stdint.h>
#include <device/pci_def.h>
#include <arch/io.h>
@@ -26,6 +27,7 @@
#define SERIAL_DEV PNP_DEV(0x2e, W83627HF_SP1)
+
static void hard_reset(void)
{
outb(0x0e, 0x0cf9);
@@ -60,7 +62,7 @@ static void main(void)
static const struct mem_controller memctrl[] = {
{
.d0 = PCI_DEV(0, 0, 0),
- .channel0 = { (0xa<<3)|0, (0xa<<3)|1, (0xa<<3)|2, 0 },
+ .channel0 = { (0xa<<3)|0, 0 },
},
};
@@ -73,14 +75,14 @@ static void main(void)
uart_init();
console_init();
-#if 1
+#if 0
print_pci_devices();
#endif
if(!bios_reset_detected()) {
enable_smbus();
#if 1
-// dump_spd_registers(&memctrl[0]);
- dump_smbus_registers();
+ dump_spd_registers(&memctrl[0]);
+ // dump_smbus_registers();
#endif
memreset_setup();
@@ -102,10 +104,10 @@ static void main(void)
}
#endif
-#if 1
+#if 0
dump_pci_devices();
#endif
-#if 1
+#if 0
dump_pci_device(PCI_DEV(0, 0, 0));
#endif
diff --git a/src/southbridge/intel/i82801dbm/i82801dbm_early_smbus.c b/src/southbridge/intel/i82801dbm/i82801dbm_early_smbus.c
index de721a1e83..05ad2d7b5c 100644
--- a/src/southbridge/intel/i82801dbm/i82801dbm_early_smbus.c
+++ b/src/southbridge/intel/i82801dbm/i82801dbm_early_smbus.c
@@ -46,6 +46,21 @@ static inline void smbus_delay(void)
outb(0x80, 0x80);
}
+static int smbus_wait_until_active(void)
+{
+ unsigned long loops;
+ loops = SMBUS_TIMEOUT;
+ do {
+ unsigned char val;
+ smbus_delay();
+ val = inb(SMBUS_IO_BASE + SMBHSTSTAT);
+ if ((val & 1)) {
+ break;
+ }
+ } while(--loops);
+ return loops?0:-4;
+}
+
static int smbus_wait_until_ready(void)
{
unsigned long loops;
@@ -112,7 +127,10 @@ static int smbus_read_byte(unsigned device, unsigned address)
/* start a byte read, with interrupts disabled */
outb((inb(SMBUS_IO_BASE + SMBHSTCTL) | 0x40), SMBUS_IO_BASE + SMBHSTCTL);
-
+ /* poll for it to start */
+ if (smbus_wait_until_active() < 0) {
+ return -4;
+ }
/* poll for transaction completion */
if (smbus_wait_until_done() < 0) {