Further trimming freebios2 towards code reuse.
authorStefan Reinauer <stepan@openbios.org>
Wed, 24 Mar 2004 14:10:45 +0000 (14:10 +0000)
committerStefan Reinauer <stepan@openbios.org>
Wed, 24 Mar 2004 14:10:45 +0000 (14:10 +0000)
Unified AMD K8 reset function that can be customized via mainboard Config.lb

git-svn-id: svn://svn.coreboot.org/coreboot/trunk@1471 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1

16 files changed:
src/config/Options.lb
src/mainboard/Iwill/DK8S2/Config.lb
src/mainboard/Iwill/DK8X/Config.lb
src/mainboard/amd/quartet/Config.lb
src/mainboard/amd/solo/Config.lb
src/mainboard/arima/hdama/Config.lb
src/mainboard/ibm/e325/Config.lb
src/mainboard/newisys/khepri/Config.lb
src/mainboard/tyan/s2850/Config.lb
src/mainboard/tyan/s2880/Config.lb
src/mainboard/tyan/s2881/Config.lb
src/mainboard/tyan/s2882/Config.lb
src/mainboard/tyan/s2885/Config.lb
src/mainboard/tyan/s4880/Config.lb
src/southbridge/amd/amd8111/Config.lb
src/southbridge/amd/amd8111/amd8111_reset.c [new file with mode: 0644]

index 2009106d0424a989e059cbdebbbbeab1d45509af..a5d1ed911b45806960d03e61213001a8c6f3d885 100644 (file)
@@ -675,6 +675,21 @@ define HAVE_HARD_RESET
        export used
        comment "Have hard reset"
 end
+define HARD_RESET_BUS
+       default 1
+       export always
+       comment "Bus number of southbridge device doing reset"
+end
+define HARD_RESET_DEVICE
+       default 5
+       export always
+       comment "Device number of southbridge device doing reset"
+end
+define HARD_RESET_FUNCTION
+       default 0
+       export always
+       comment "Function number of southbridge device doing reset"
+end
 define MEMORY_HOLE
        default none
        export used
index cc57d6397b2483e4b67e08bd9fafb1cd8325ec0b..c974bdead1898773a55c5f17d4f06ec5916ff284 100644 (file)
@@ -3,6 +3,9 @@ uses HAVE_PIRQ_TABLE
 uses USE_FALLBACK_IMAGE
 uses HAVE_FALLBACK_BOOT
 uses HAVE_HARD_RESET
+uses HARD_RESET_BUS
+uses HARD_RESET_DEVICE
+uses HARD_RESET_FUNCTION
 uses IRQ_SLOT_COUNT
 uses HAVE_OPTION_TABLE
 uses CONFIG_MAX_CPUS
@@ -41,6 +44,10 @@ default HAVE_FALLBACK_BOOT=1
 ##
 default HAVE_HARD_RESET=1
 
+default HARD_RESET_BUS=1
+default HARD_RESET_DEVICE=4
+default HARD_RESET_FUNCTION=0
+
 ##
 ## Build code to export a programmable irq routing table
 ##
@@ -149,7 +156,6 @@ driver mainboard.o
 #object static_devices.o
 if HAVE_MP_TABLE object mptable.o end
 if HAVE_PIRQ_TABLE object irq_tables.o end
-object reset.o
 
 ##
 ## Romcc output
index cc57d6397b2483e4b67e08bd9fafb1cd8325ec0b..c974bdead1898773a55c5f17d4f06ec5916ff284 100644 (file)
@@ -3,6 +3,9 @@ uses HAVE_PIRQ_TABLE
 uses USE_FALLBACK_IMAGE
 uses HAVE_FALLBACK_BOOT
 uses HAVE_HARD_RESET
+uses HARD_RESET_BUS
+uses HARD_RESET_DEVICE
+uses HARD_RESET_FUNCTION
 uses IRQ_SLOT_COUNT
 uses HAVE_OPTION_TABLE
 uses CONFIG_MAX_CPUS
@@ -41,6 +44,10 @@ default HAVE_FALLBACK_BOOT=1
 ##
 default HAVE_HARD_RESET=1
 
+default HARD_RESET_BUS=1
+default HARD_RESET_DEVICE=4
+default HARD_RESET_FUNCTION=0
+
 ##
 ## Build code to export a programmable irq routing table
 ##
@@ -149,7 +156,6 @@ driver mainboard.o
 #object static_devices.o
 if HAVE_MP_TABLE object mptable.o end
 if HAVE_PIRQ_TABLE object irq_tables.o end
-object reset.o
 
 ##
 ## Romcc output
index 3db696bb7bf7b60e7c2f8679819159fd71df791e..20667f5db4893c89d18af7627fcb1e96386472eb 100644 (file)
@@ -3,6 +3,9 @@ uses HAVE_PIRQ_TABLE
 uses USE_FALLBACK_IMAGE
 uses HAVE_FALLBACK_BOOT
 uses HAVE_HARD_RESET
+uses HARD_RESET_BUS
+uses HARD_RESET_DEVICE
+uses HARD_RESET_FUNCTION
 uses IRQ_SLOT_COUNT
 uses HAVE_OPTION_TABLE
 uses CONFIG_MAX_CPUS
@@ -47,6 +50,10 @@ default HAVE_FALLBACK_BOOT=1
 ##
 default HAVE_HARD_RESET=1
 
+default HARD_RESET_BUS=1
+default HARD_RESET_DEVICE=4
+default HARD_RESET_FUNCTION=0
+
 ##
 ## Build code to export a programmable irq routing table
 ##
@@ -160,7 +167,6 @@ arch i386 end
 driver mainboard.o
 if HAVE_MP_TABLE object mptable.o end
 if HAVE_PIRQ_TABLE object irq_tables.o end
-object reset.o
 
 ##
 ## Romcc output
index bb9044eb0aa67b515cd117418b1f496cfb95945a..7147b4546a8289358d46e0cdee0cd4e6739ba4ad 100644 (file)
@@ -3,6 +3,9 @@ uses HAVE_PIRQ_TABLE
 uses USE_FALLBACK_IMAGE
 uses HAVE_FALLBACK_BOOT
 uses HAVE_HARD_RESET
+uses HARD_RESET_BUS
+uses HARD_RESET_DEVICE
+uses HARD_RESET_FUNCTION
 uses IRQ_SLOT_COUNT
 uses HAVE_OPTION_TABLE
 uses CONFIG_MAX_CPUS
@@ -47,6 +50,10 @@ default HAVE_FALLBACK_BOOT=1
 ##
 default HAVE_HARD_RESET=1
 
+default HARD_RESET_BUS=1
+default HARD_RESET_DEVICE=5
+default HARD_RESET_FUNCTION=0
+
 ##
 ## Build code to export a programmable irq routing table
 ##
@@ -85,8 +92,8 @@ default CONFIG_IOAPIC=1
 ##
 ## Clean up the motherboard id strings
 ##
-#default MAINBOARD_PART_NUMBER="SOLO7"
-#default MAINBOARD_VENDOR="AMD"
+default MAINBOARD_PART_NUMBER="SOLO"
+default MAINBOARD_VENDOR="AMD"
 
 ###
 ### LinuxBIOS layout values
@@ -159,7 +166,6 @@ arch i386 end
 driver mainboard.o
 if HAVE_MP_TABLE object mptable.o end
 if HAVE_PIRQ_TABLE object irq_tables.o end
-object reset.o
 
 ##
 ## Romcc output
index fbb1a2bbee5458f5fcbd0e73163d10fd84c98e61..1d6d9b4a82f36d183256bce8955689317b0a8e56 100644 (file)
@@ -3,6 +3,9 @@ uses HAVE_PIRQ_TABLE
 uses USE_FALLBACK_IMAGE
 uses HAVE_FALLBACK_BOOT
 uses HAVE_HARD_RESET
+uses HARD_RESET_BUS
+uses HARD_RESET_DEVICE
+uses HARD_RESET_FUNCTION
 uses IRQ_SLOT_COUNT
 uses HAVE_OPTION_TABLE
 uses CONFIG_MAX_CPUS
@@ -47,6 +50,10 @@ default HAVE_FALLBACK_BOOT=1
 ##
 default HAVE_HARD_RESET=1
 
+default HARD_RESET_BUS=1
+default HARD_RESET_DEVICE=4
+default HARD_RESET_FUNCTION=0
+
 ##
 ## Build code to export a programmable irq routing table
 ##
@@ -160,7 +167,6 @@ arch i386 end
 driver mainboard.o
 if HAVE_MP_TABLE object mptable.o end
 if HAVE_PIRQ_TABLE object irq_tables.o end
-object reset.o
 
 ##
 ## Romcc output
index ad659b58e615a599b80993039d1a8f051f01b0b2..bb40efcffb27cd79a0dfe8b760e8b1776d814e8c 100644 (file)
@@ -3,6 +3,9 @@ uses HAVE_PIRQ_TABLE
 uses USE_FALLBACK_IMAGE
 uses HAVE_FALLBACK_BOOT
 uses HAVE_HARD_RESET
+uses HARD_RESET_BUS
+uses HARD_RESET_DEVICE
+uses HARD_RESET_FUNCTION
 uses IRQ_SLOT_COUNT
 uses HAVE_OPTION_TABLE
 uses CONFIG_MAX_CPUS
@@ -47,6 +50,10 @@ default HAVE_FALLBACK_BOOT=1
 ##
 default HAVE_HARD_RESET=1
 
+default HARD_RESET_BUS=1
+default HARD_RESET_DEVICE=4
+default HARD_RESET_FUNCTION=0
+
 ##
 ## Build code to export a programmable irq routing table
 ##
@@ -160,7 +167,6 @@ arch i386 end
 driver mainboard.o
 if HAVE_MP_TABLE object mptable.o end
 if HAVE_PIRQ_TABLE object irq_tables.o end
-object reset.o
 
 ##
 ## Romcc output
index d0bd8654d4b58f858ee741899ae33883abd22e0a..9dd2f318dd59fa2d89c06823560ba17a3a1095be 100644 (file)
@@ -3,6 +3,9 @@ uses HAVE_PIRQ_TABLE
 uses USE_FALLBACK_IMAGE
 uses HAVE_FALLBACK_BOOT
 uses HAVE_HARD_RESET
+uses HARD_RESET_BUS
+uses HARD_RESET_DEVICE
+uses HARD_RESET_FUNCTION
 uses IRQ_SLOT_COUNT
 uses HAVE_OPTION_TABLE
 uses CONFIG_MAX_CPUS
@@ -47,6 +50,10 @@ default HAVE_FALLBACK_BOOT=1
 ##
 default HAVE_HARD_RESET=1
 
+default HARD_RESET_BUS=1
+default HARD_RESET_DEVICE=4
+default HARD_RESET_FUNCTION=0
+
 ##
 ## Build code to export a programmable irq routing table
 ##
@@ -161,7 +168,6 @@ driver mainboard.o
 driver blade3d.o
 if HAVE_MP_TABLE object mptable.o end
 if HAVE_PIRQ_TABLE object irq_tables.o end
-object reset.o
 
 ##
 ## Romcc output
index fe6f7e319efd1d91d0ba575f64279809efaacc69..ad189c92020ee90e5a96375de31d4ea688385d61 100644 (file)
@@ -3,6 +3,9 @@ uses HAVE_PIRQ_TABLE
 uses USE_FALLBACK_IMAGE
 uses MAINBOARD
 uses ARCH
+uses HARD_RESET_BUS
+uses HARD_RESET_DEVICE
+uses HARD_RESET_FUNCTION
 #
 #
 ###
@@ -24,11 +27,15 @@ driver adaptec_scsi.o
 driver promise_sata.o
 driver intel_nic.o
 driver broadcom_nic.o
-object reset.o
+#object reset.o
 #object static_devices.o
 if HAVE_MP_TABLE object mptable.o end
 if HAVE_PIRQ_TABLE object irq_tables.o end
 #
+default HARD_RESET_BUS=1
+default HARD_RESET_DEVICE=2
+default HARD_RESET_FUNCTION=0
+#
 arch i386 end
 #cpu k8 end
 #
index 9c0b9e0a2f47876a044ed7d4e2d6f6983fae6e5a..275170ac9f8bef0dc020f4b328384112c8695823 100644 (file)
@@ -6,6 +6,9 @@ uses LB_CKS_RANGE_END
 uses LB_CKS_LOC
 uses MAINBOARD
 uses ARCH
+uses HARD_RESET_BUS
+uses HARD_RESET_DEVICE
+uses HARD_RESET_FUNCTION
 #
 #
 ###
@@ -33,10 +36,14 @@ driver mainboard.o
 #driver adaptec_scsi.o
 #driver promise_sata.o
 #driver intel_nic.o
-object reset.o
+#object reset.o
 if HAVE_MP_TABLE object mptable.o end
 if HAVE_PIRQ_TABLE object irq_tables.o end
 #
+default HARD_RESET_BUS=1
+default HARD_RESET_DEVICE=4
+default HARD_RESET_FUNCTION=0
+#
 arch i386 end
 #
 ###
index a89f1dbcf7c2cff3bbbc7660f4f4c8244838841d..786391095a42408de5495fd29bc9586bd32f4cfe 100644 (file)
@@ -6,6 +6,9 @@ uses LB_CKS_RANGE_END
 uses LB_CKS_LOC
 uses MAINBOARD
 uses ARCH
+uses HARD_RESET_BUS
+uses HARD_RESET_DEVICE
+uses HARD_RESET_FUNCTION
 #
 #
 ###
@@ -35,10 +38,14 @@ driver mainboard.o
 #driver si_sata.o
 #driver intel_nic.o
 #driver broadcom_nic.o
-object reset.o
+#object reset.o
 if HAVE_MP_TABLE object mptable.o end
 if HAVE_PIRQ_TABLE object irq_tables.o end
 #
+default HARD_RESET_BUS=1
+default HARD_RESET_DEVICE=4
+default HARD_RESET_FUNCTION=0
+#
 arch i386 end
 #cpu k8 end
 #
index 45406d4ea4e821ec1e89c153589e9b40674c063e..c3075682672230c291bb5a3442f3986393b13ff8 100644 (file)
@@ -6,6 +6,9 @@ uses LB_CKS_RANGE_END
 uses LB_CKS_LOC
 uses MAINBOARD
 uses ARCH
+uses HARD_RESET_BUS
+uses HARD_RESET_DEVICE
+uses HARD_RESET_FUNCTION
 #
 #
 ###
@@ -34,10 +37,14 @@ driver mainboard.o
 #driver si_sata.o
 driver intel_nic.o
 #driver broadcom_nic.o
-object reset.o
+#object reset.o
 if HAVE_MP_TABLE object mptable.o end
 if HAVE_PIRQ_TABLE object irq_tables.o end
 #
+default HARD_RESET_BUS=1
+default HARD_RESET_DEVICE=4
+default HARD_RESET_FUNCTION=0
+#
 arch i386 end
 #cpu k8 end
 #
index 7ff42d01891565f70008d5991eea5c252132776f..c0b61145cb67c9d603e285ca9b03ddac69d19c69 100644 (file)
@@ -6,6 +6,9 @@ uses LB_CKS_RANGE_END
 uses LB_CKS_LOC
 uses MAINBOARD
 uses ARCH
+uses HARD_RESET_BUS
+uses HARD_RESET_DEVICE
+uses HARD_RESET_FUNCTION
 
 #
 #
@@ -37,10 +40,14 @@ driver mainboard.o
 #driver adaptec_scsi.o
 #driver si_sata.o
 #driver intel_nic.o
-object reset.o
+#object reset.o
 if HAVE_MP_TABLE object mptable.o end
 if HAVE_PIRQ_TABLE object irq_tables.o end
-
+#
+default HARD_RESET_BUS=3
+default HARD_RESET_DEVICE=4
+default HARD_RESET_FUNCTION=0
+#
 #
 arch i386 end
 
index 58e71b46681c40ad6582c894b0854940b2a179c8..69e647984fc83bf26b110520be1b01ca3a64cda5 100644 (file)
@@ -6,6 +6,9 @@ uses LB_CKS_RANGE_END
 uses LB_CKS_LOC
 uses MAINBOARD
 uses ARCH
+uses HARD_RESET_BUS
+uses HARD_RESET_DEVICE
+uses HARD_RESET_FUNCTION
 #
 #
 ###
@@ -34,10 +37,14 @@ driver mainboard.o
 #driver adaptec_scsi.o
 #driver si_sata.o
 #driver intel_nic.o
-object reset.o
+#object reset.o
 if HAVE_MP_TABLE object mptable.o end
 if HAVE_PIRQ_TABLE object irq_tables.o end
 #
+default HARD_RESET_BUS=1
+default HARD_RESET_DEVICE=4
+default HARD_RESET_FUNCTION=0
+#
 arch i386 end
 #cpu k8 end
 #
index 5bbbaba65e43b430b0e41892502fd4bfcf3e0a64..57d299cfbfa3056acd75a21cade3924e511aeaca 100644 (file)
@@ -8,3 +8,4 @@ driver amd8111_usb2.o
 driver amd8111_ac97.o
 driver amd8111_nic.o
 driver amd8111_pci.o
+object amd8111_reset.o
diff --git a/src/southbridge/amd/amd8111/amd8111_reset.c b/src/southbridge/amd/amd8111/amd8111_reset.c
new file mode 100644 (file)
index 0000000..822a1e3
--- /dev/null
@@ -0,0 +1,45 @@
+#include <arch/io.h>
+
+#define PCI_DEV(BUS, DEV, FN) ( \
+       (((BUS) & 0xFF) << 16) | \
+       (((DEV) & 0x1f) << 11) | \
+       (((FN)  & 0x7) << 8))
+
+#define AMD8111_RESET PCI_DEV(     \
+               HARD_RESET_BUS,    \
+               HARD_RESET_DEVICE, \
+               HARD_RESET_FUNCTION)
+
+typedef unsigned device_t;
+
+static void pci_write_config8(device_t dev, unsigned where, unsigned char value)
+{
+        unsigned addr;
+        addr = dev | where;
+        outl(0x80000000 | (addr & ~3), 0xCF8);
+        outb(value, 0xCFC + (addr & 3));
+}
+
+static void pci_write_config32(device_t dev, unsigned where, unsigned value)
+{
+       unsigned addr;
+        addr = dev | where;
+        outl(0x80000000 | (addr & ~3), 0xCF8);
+        outl(value, 0xCFC);
+}
+
+static unsigned pci_read_config32(device_t dev, unsigned where)
+{
+       unsigned addr;
+        addr = dev | where;
+        outl(0x80000000 | (addr & ~3), 0xCF8);
+        return inl(0xCFC);
+}
+
+#include "../../../northbridge/amd/amdk8/reset_test.c"
+
+void hard_reset(void)
+{
+       set_bios_reset();
+       pci_write_config8(AMD8111_RESET, 0x47, 1);
+}