Author: rminnich
Date: 2007-06-27 23:12:57 +0200 (Wed, 27 Jun 2007)
New Revision: 388

Added:
   LinuxBIOSv3/northbridge/amd/geodelx/geodelx.c
   LinuxBIOSv3/northbridge/amd/geodelx/geodelx.h
   LinuxBIOSv3/northbridge/amd/geodelx/raminit.h
Modified:
   LinuxBIOSv3/northbridge/amd/geodelx/Makefile
   LinuxBIOSv3/northbridge/amd/geodelx/raminit.c
   LinuxBIOSv3/northbridge/intel/i440bxemulation/dts
   LinuxBIOSv3/northbridge/intel/i440bxemulation/i440bx.c
Log:
Bring V2 LX support over to V3.
Signed-off-by: Ronald G. Minnich <[EMAIL PROTECTED]>

Acked-by: Stefan Reinauer <[EMAIL PROTECTED]>



Modified: LinuxBIOSv3/northbridge/amd/geodelx/Makefile
===================================================================
--- LinuxBIOSv3/northbridge/amd/geodelx/Makefile        2007-06-27 21:07:10 UTC 
(rev 387)
+++ LinuxBIOSv3/northbridge/amd/geodelx/Makefile        2007-06-27 21:12:57 UTC 
(rev 388)
@@ -19,7 +19,7 @@
 ## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
 ##
 
-STAGE2_CHIPSET_OBJ += $(obj)/northbridge/amd/geodelx/geodelx.o
+STAGE2_CHIPSET_OBJ += $(obj)/northbridge/amd/geodelx/geodelx.o 
$(obj)/northbridge/amd/geodelx/geodelxinit.o
 
 $(obj)/northbridge/amd/geodelx/%.o: $(src)/northbridge/amd/geodelx/%.c
        $(Q)mkdir -p $(obj)/northbridge/amd/geodelx

Added: LinuxBIOSv3/northbridge/amd/geodelx/geodelx.c
===================================================================
--- LinuxBIOSv3/northbridge/amd/geodelx/geodelx.c                               
(rev 0)
+++ LinuxBIOSv3/northbridge/amd/geodelx/geodelx.c       2007-06-27 21:12:57 UTC 
(rev 388)
@@ -0,0 +1,438 @@
+/*
+ * This file is part of the LinuxBIOS project.
+ *
+ * Copyright (C) 2007 Advanced Micro Devices, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ */
+
+#include <types.h>
+#include <lib.h>
+#include <console.h>
+#include <post_code.h>
+#include <device/device.h>
+#include <device/pci.h>
+#include <string.h>
+#include <msr.h>
+#include <io.h>
+#include <amd_geodelx.h>
+#include "geodelx.h"
+
+/* here is programming for the various MSRs.*/
+#define IM_QWAIT 0x100000
+
+#define DMCF_WRITE_SERIALIZE_REQUEST (2<<12) /* 2 outstanding */       /* set 
in high nibl */
+#define DMCF_SERIAL_LOAD_MISSES  (2)   /* enabled */
+
+/* these are the 8-bit attributes for controlling RCONF registers
+ * RCONF is Region CONFiguraiton, and controls caching and other
+ * attributes of a region.  Just like MTRRs, only different.
+  */
+#define CACHE_DISABLE (1<<0)
+#define WRITE_ALLOCATE (1<<1)
+#define WRITE_PROTECT (1<<2)
+#define WRITE_THROUGH (1<<3)
+#define WRITE_COMBINE (1<<4)
+#define WRITE_SERIALIZE (1<<5)
+
+/* ram has none of this stuff */
+#define RAM_PROPERTIES (0)
+#define DEVICE_PROPERTIES (WRITE_SERIALIZE|CACHE_DISABLE)
+#define ROM_PROPERTIES (WRITE_SERIALIZE|WRITE_PROTECT|CACHE_DISABLE)
+#define MSR_WS_CD_DEFAULT (0x21212121)
+
+/* RCONF registers 1810-1817 give you 8 registers with which to
+ * program protection regions the are region configuration range
+ * registers, or RRCF in msr terms, the are a straight base, top
+ * address assign, since they are 4k aligned.
+ */
+/* so no left-shift needed for top or base */
+#define RRCF_LOW(base,properties) (base|(1<<8)|properties)
+#define RRCF_LOW_CD(base)      RRCF_LOW(base, CACHE_DISABLE)
+
+/* build initializer for P2D MSR */
+/* this is complex enough that you are going to need to RTFM if you really 
want to understand it. */
+#define P2D_BM(msr, pdid1, bizarro, pbase, pmask) {msr, 
{.hi=(pdid1<<29)|(bizarro<<28)|(pbase>>24), .lo=(pbase<<8)|pmask}}
+#define P2D_BMO(msr, pdid1, bizarro, poffset, pbase, pmask) {msr, 
{.hi=(pdid1<<29)|(bizarro<<28)|(poffset<<8)|(pbase>>24), .lo=(pbase<<8)|pmask}}
+#define P2D_R(msr, pdid1, bizarro, pmax, pmin) {msr, 
{.hi=(pdid1<<29)|(bizarro<<28)|(pmax>>12), .lo=(pmax<<20)|pmin}}
+#define P2D_RO(msr, pdid1, bizarro, poffset, pmax, pmin) {msr, 
{.hi=(pdid1<<29)|(bizarro<<28)|(poffset<<8)|(pmax>>12), .lo=(pmax<<20)|pmin}}
+#define P2D_SC(msr, pdid1, bizarro, wen, ren,pscbase) {msr, 
{.hi=(pdid1<<29)|(bizarro<<28)|(wen), .lo=(ren<<16)|(pscbase>>18)}}
+#define IOD_BM(msr, pdid1, bizarro, ibase, imask) {msr, 
{.hi=(pdid1<<29)|(bizarro<<28)|(ibase>>12), .lo=(ibase<<20)|imask}}
+#define IOD_SC(msr, pdid1, bizarro, en, wen, ren, ibase) {msr, 
{.hi=(pdid1<<29)|(bizarro<<28), .lo=(en<<24)|(wen<<21)|(ren<<20)|(ibase<<3)}}
+
+#define BRIDGE_IO_MASK (IORESOURCE_IO | IORESOURCE_MEM)
+
+extern void graphics_init(void);
+extern void cpu_bug(void);
+extern void chipsetinit(void);
+extern void print_conf(void);
+extern u32 get_systop(void);
+
+void northbridge_init_early(void);
+void setup_realmode_idt(void);
+void do_vsmbios(void);
+
+struct msr_defaults {
+       int msr_no;
+       msr_t msr;
+} msr_defaults[] = {
+       {
+               0x1700, {
+       .hi = 0,.lo = IM_QWAIT}}, {
+               0x1800, {
+       .hi = DMCF_WRITE_SERIALIZE_REQUEST,.lo =
+                           DMCF_SERIAL_LOAD_MISSES}},
+           /* 1808 will be done down below, so we have to do 180a->1817 (well, 
1813 really) */
+           /* for 180a, for now, we assume VSM will configure it */
+           /* 180b is left at reset value,a0000-bffff is non-cacheable */
+           /* 180c, c0000-dffff is set to write serialize and non-cachable */
+           /* oops, 180c will be set by cpu bug handling in cpubug.c */
+           //{0x180c, {.hi = MSR_WS_CD_DEFAULT, .lo = MSR_WS_CD_DEFAULT}},
+           /* 180d is left at default, e0000-fffff is non-cached */
+           /* we will assume 180e, the ssm region configuration, is left at 
default or set by VSM */
+           /* we will not set 0x180f, the DMM,yet */
+           //{0x1810, {.hi=0xee7ff000, .lo=RRCF_LOW(0xee000000, 
WRITE_COMBINE|CACHE_DISABLE)}},
+           //{0x1811, {.hi = 0xefffb000, .lo = RRCF_LOW_CD(0xefff8000)}},
+           //{0x1812, {.hi = 0xefff7000, .lo = RRCF_LOW_CD(0xefff4000)}},
+           //{0x1813, {.hi = 0xefff3000, .lo = RRCF_LOW_CD(0xefff0000)}},
+           /* now for GLPCI routing */
+           /* GLIU0 */
+           P2D_BM(MSR_GLIU0_BASE1, 0x1, 0x0, 0x0, 0xfff80),
+           P2D_BM(MSR_GLIU0_BASE2, 0x1, 0x0, 0x80000, 0xfffe0),
+           P2D_SC(MSR_GLIU0_SHADOW, 0x1, 0x0, 0x0, 0xff03, 0xC0000),
+           /* GLIU1 */
+           P2D_BM(MSR_GLIU1_BASE1, 0x1, 0x0, 0x0, 0xfff80),
+           P2D_BM(MSR_GLIU1_BASE2, 0x1, 0x0, 0x80000, 0xfffe0),
+           P2D_SC(MSR_GLIU1_SHADOW, 0x1, 0x0, 0x0, 0xff03, 0xC0000), {
+       0}
+};
+
+/** 
+  * Size up ram. All we need to here is read the MSR for DRAM and grab
+  * out the sizing bits.  Note that this code depends on initram
+  * having run. It uses the MSRs, not the SPDs, and the MSRs of course
+  * are set up by initram.
+  */
+int sizeram(void)
+{
+       msr_t msr;
+       int sizem = 0;
+       unsigned short dimm;
+
+       /* Get the RAM size from the memory controller as calculated and set by 
auto_size_dimm() */
+       msr = rdmsr(MC_CF07_DATA);
+       printk(BIOS_DEBUG,"sizeram: _MSR MC_CF07_DATA: %08x:%08x\n", msr.hi, 
msr.lo);
+
+       /* dimm 0 */
+       dimm = msr.hi;
+       /* installed? */
+       if ((dimm & 7) != 7) {
+               /* 1:8MB, 2:16MB, 3:32MB, 4:64MB, ... 7:512MB, 8:1GB */
+               sizem = 4 << ((dimm >> 12) & 0x0F);     }
+
+       /* dimm 1 */
+       dimm = msr.hi >> 16;
+       /* installed? */
+       if ((dimm & 7) != 7) {
+               /* 1:8MB, 2:16MB, 3:32MB, 4:64MB, ... 7:512MB, 8:1GB */
+               sizem += 4 << ((dimm >> 12) & 0x0F);
+       }
+
+       printk(BIOS_DEBUG,"sizeram: sizem 0x%xMB\n", sizem);
+       return sizem;
+}
+
+/** 
+  * enable_shadow. Currently not set up. 
+  * @param dev The nortbridge device. 
+  */
+static void enable_shadow(struct device * dev)
+{
+}
+
+/**
+  * init the northbridge pci device. Right now this a no op. We leave
+  * it here as a hook for later use.  
+  * @param dev The nortbridge
+  * device.
+   */
+static void geodelx_northbridge_init(struct device * dev)
+{
+       //msr_t msr;
+
+       printk(BIOS_SPEW,">> Entering northbridge.c: %s\n", __FUNCTION__);
+
+       enable_shadow(dev);
+       /*
+        * Swiss cheese
+        */
+       //msr = rdmsr(MSR_GLIU0_SHADOW);
+
+       //msr.hi |= 0x3;
+       //msr.lo |= 0x30000;
+
+       //printk(BIOS_DEBUG,"MSR 0x%08X is now 0x%08X:0x%08X\n", 
MSR_GLIU0_SHADOW, msr.hi, msr.lo);
+       //printk(BIOS_DEBUG,"MSR 0x%08X is now 0x%08X:0x%08X\n", 
MSR_GLIU1_SHADOW, msr.hi, msr.lo);
+}
+
+/** 
+  * Set resources for the PCI northbridge device. This function is
+  * required due to VSA interactions.
+  * @param dev The nortbridge device. 
+  */
+void geodelx_northbridge_set_resources(struct device *dev)
+{
+       struct resource *resource, *last;
+       unsigned link;
+       u8 line;
+
+       last = &dev->resource[dev->resources];
+
+       for (resource = &dev->resource[0]; resource < last; resource++) {
+
+               // andrei: do not change the base address, it will make the VSA 
virtual registers unusable
+               //pci_set_resource(dev, resource);
+               // FIXME: static allocation may conflict with dynamic mappings!
+       }
+
+       for (link = 0; link < dev->links; link++) {
+               struct bus *bus;
+               bus = &dev->link[link];
+               if (bus->children) {
+                       printk(BIOS_DEBUG, "my_dev_set_resources: 
phase4_assign_resources %d\n", bus);
+                       phase4_assign_resources(bus);
+               }
+       }
+
+       /* set a default latency timer */
+       pci_write_config8(dev, PCI_LATENCY_TIMER, 0x40);
+
+       /* set a default secondary latency timer */
+       if ((dev->hdr_type & 0x7f) == PCI_HEADER_TYPE_BRIDGE) {
+               pci_write_config8(dev, PCI_SEC_LATENCY_TIMER, 0x40);
+       }
+
+       /* zero the irq settings */
+       line = pci_read_config8(dev, PCI_INTERRUPT_PIN);
+       if (line) {
+               pci_write_config8(dev, PCI_INTERRUPT_LINE, 0);
+       }
+
+       /* set the cache line size, so far 64 bytes is good for everyone */
+       pci_write_config8(dev, PCI_CACHE_LINE_SIZE, 64 >> 2);
+}
+
+
+
+/** 
+  * Set resources for the PCI domain. Just set up basic global ranges
+  * for IO and memory Allocation of sub-resources draws on these
+  * top-level resources in the usual hierarchical manner.
+  * @param dev The nortbridge device. 
+  */
+static void geodelx_pci_domain_read_resources(struct device * dev)
+{
+       struct resource *resource;
+       printk(BIOS_SPEW,">> Entering northbridge.c: %s\n", __FUNCTION__);
+
+       /* Initialize the system wide io space constraints */
+       resource = new_resource(dev, IOINDEX_SUBTRACTIVE(0, 0));
+       resource->limit = 0xffffUL;
+       resource->flags =
+           IORESOURCE_IO | IORESOURCE_SUBTRACTIVE | IORESOURCE_ASSIGNED;
+
+       /* Initialize the system wide memory resources constraints */
+       resource = new_resource(dev, IOINDEX_SUBTRACTIVE(1, 0));
+       resource->limit = 0xffffffffULL;
+       resource->flags =
+           IORESOURCE_MEM | IORESOURCE_SUBTRACTIVE | IORESOURCE_ASSIGNED;
+}
+
+/** 
+  * Create a ram resource, by taking the passed-in size and createing
+  * a resource record.
+  * @param dev the device
+  * @param index a resource index
+  * @param basek base memory address in k
+  * @param sizek size of memory in k
+  */
+static void ram_resource(struct device * dev, unsigned long index,
+                        unsigned long basek, unsigned long sizek)
+{
+       struct resource *resource;
+
+       if (!sizek)
+               return;
+
+       resource = new_resource(dev, index);
+       resource->base = ((resource_t) basek) << 10;
+       resource->size = ((resource_t) sizek) << 10;
+       resource->flags = IORESOURCE_MEM | IORESOURCE_CACHEABLE |
+           IORESOURCE_FIXED | IORESOURCE_STORED | IORESOURCE_ASSIGNED;
+}
+
+/** 
+  * Set resources in the pci domain. Also, as a side effect, create a
+  * ram resource in the child which, interestingly enough, is the
+  * north bridge pci device, for later allocation of address space.
+  * @param dev the device
+  */
+ static void geodelx_pci_domain_set_resources(struct device * dev)
+{
+       int idx;
+       struct device * mc_dev;
+
+       printk(BIOS_SPEW,">> Entering northbridge.c: %s\n", __FUNCTION__);
+
+       mc_dev = dev->link[0].children;
+       if (mc_dev) {
+               /* Report the memory regions */
+               idx = 10;
+               ram_resource(dev, idx++, 0, 640);
+               /* Systop - 1 MB -> KB*/
+               ram_resource(dev, idx++, 1024, (get_systop() - 0x100000) / 
1024);
+       }
+
+       phase4_assign_resources(&dev->link[0]);
+}
+
+/**
+  * enable the pci domain. A littly tricky on this chipset due to the
+  * VSA interactions.  This must happen before any PCI scans happen.
+  * we do early northbridge init to make sure pci scans will work, but
+  * the weird part is we actually have to run some code in x86 mode to
+  * get the VSM installed, since the VSM actually handles some PCI bus
+  * scan tasks via the System Management Interrupt.  Yes, it gets
+  * tricky ...
+  * @param dev the device
+  */
+static void geodelx_pci_domain_phase2(struct device * dev)
+{
+
+       printk(BIOS_SPEW,">> Entering northbridge.c: %s\n", __FUNCTION__);
+
+       northbridge_init_early();
+#warning cpu bug has been moved to initram stage
+//     cpu_bug();
+       chipsetinit();
+
+       setup_realmode_idt();
+
+       printk(BIOS_DEBUG,"Before VSA:\n");
+       // print_conf();
+#warning Not doing vsm bios -- linux will fail. 
+//     do_vsmbios();           // do the magic stuff here, so prepare your 
tambourine ;)
+
+       printk(BIOS_DEBUG,"After VSA:\n");
+       // print_conf();
+
+#warning graphics_init is disabled. 
+//     graphics_init();
+       pci_set_method(dev);
+}
+
+/**
+  * Support for scan bus from the "tippy top" -- i.e. the pci domain,
+  * not the 0:0.0 device.
+  * @param dev The pci domain device
+  * @param max max number of devices to scan. 
+  */
+static unsigned int geodelx_pci_domain_scan_bus(struct device * dev, unsigned 
int max)
+{
+       printk(BIOS_SPEW,">> Entering northbridge.c: %s\n", __FUNCTION__);
+
+       max = pci_scan_bus(&dev->link[0], PCI_DEVFN(0, 0), 0xff, max);
+       return max;
+}
+
+
+/**
+  * Support for apic cluster init. TODO should we do this in phase 2?
+  * It is now done in phase 6
+  * @param dev The pci domain device
+  */
+static void cpu_bus_init(struct device * dev)
+{
+       printk(BIOS_SPEW,">> Entering northbridge.c: %s\n", __FUNCTION__);
+       printk(BIOS_SPEW,">> Exiting northbridge.c: %s\n", __FUNCTION__);
+
+}
+
+static void cpu_bus_noop(struct device * dev)
+{
+}
+
+/* the same hardware, being multifunction, has several roles. In this
+  * case, the north is a pci domain controller, apic cluster, and the
+  * traditional 0:0.0 device
+  */
+
+/* Here are the operations for when the northbridge is running a PCI
+ *    domain.
+ */
+struct device_operations geodelx_pcidomainops = {
+       .constructor             = default_device_constructor,
+       .phase2_setup_scan_bus  = geodelx_pci_domain_phase2,
+       .phase3_scan             = geodelx_pci_domain_scan_bus,
+       .phase4_read_resources   = geodelx_pci_domain_read_resources,
+       .phase4_set_resources    = geodelx_pci_domain_set_resources,
+       .phase5_enable_resources = enable_childrens_resources,
+       .phase6_init             = 0,
+       .ops_pci_bus             = &pci_cf8_conf1,
+
+};
+
+/* Here are the operations for when the northbridge is running an APIC
+ *   cluster.
+ */
+struct device_operations geodelx_apicops = {
+       .constructor             = default_device_constructor,
+       .phase3_scan             = 0,
+       .phase4_read_resources   = cpu_bus_noop,
+       .phase4_set_resources    = cpu_bus_noop,
+       .phase5_enable_resources = cpu_bus_noop,
+       .phase6_init             = cpu_bus_init,
+       .ops_pci_bus             = &pci_cf8_conf1,
+};
+
+/* Here are the operations for when the northbridge is running a PCI
+ * device.
+ */
+struct device_operations geodelx_pci_ops = {
+       .constructor             = default_device_constructor,
+       .phase3_scan             = geodelx_pci_domain_scan_bus,
+       .phase4_read_resources   = geodelx_pci_domain_read_resources,
+       .phase4_set_resources    = geodelx_northbridge_set_resources,
+       .phase5_enable_resources = enable_childrens_resources,
+       .phase6_init             = geodelx_northbridge_init,
+       .ops_pci_bus             = &pci_cf8_conf1,
+
+};
+
+
+/* The constructor for the device. */
+/* Domain ops and apic cluster ops and pci device ops are different */
+struct constructor geodelx_north_constructors[] = {
+  {.id = {.type = DEVICE_ID_PCI_DOMAIN,
+         .u = {.pci_domain = {.vendor = 0x8086,.device = 0x7190}}},
+   &geodelx_pcidomainops},
+  {.id = {.type = DEVICE_ID_APIC_CLUSTER,
+         .u = {.apic_cluster = {.vendor = 0x8086,.device = 0x7190}}},
+   &geodelx_apicops},
+  {.id = {.type = DEVICE_ID_PCI,
+         .u = {.pci = {.vendor = 0x8086,.device = 0x7190}}},
+   &geodelx_pci_ops},
+  {.ops = 0},
+};

Added: LinuxBIOSv3/northbridge/amd/geodelx/geodelx.h
===================================================================
--- LinuxBIOSv3/northbridge/amd/geodelx/geodelx.h                               
(rev 0)
+++ LinuxBIOSv3/northbridge/amd/geodelx/geodelx.h       2007-06-27 21:12:57 UTC 
(rev 388)
@@ -0,0 +1,22 @@
+/*
+ * This file is part of the LinuxBIOS project.
+ *
+ * Copyright (C) 2007 Advanced Micro Devices, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.        See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ */
+#ifndef NORTHBRIDGE_AMD_LX_H
+#define NORTHBRIDGE_AMD_LX_H
+
+#endif                         /* NORTHBRIDGE_AMD_LX_H */

Modified: LinuxBIOSv3/northbridge/amd/geodelx/raminit.c
===================================================================
--- LinuxBIOSv3/northbridge/amd/geodelx/raminit.c       2007-06-27 21:07:10 UTC 
(rev 387)
+++ LinuxBIOSv3/northbridge/amd/geodelx/raminit.c       2007-06-27 21:12:57 UTC 
(rev 388)
@@ -28,6 +28,7 @@
 #include <msr.h>
 #include <spd.h>
 #include <io.h>
+#include <hlt.h>
 #include <amd_geodelx.h>
 #include <southbridge/amd/cs5536/cs5536.h>
 

Added: LinuxBIOSv3/northbridge/amd/geodelx/raminit.h
===================================================================
--- LinuxBIOSv3/northbridge/amd/geodelx/raminit.h                               
(rev 0)
+++ LinuxBIOSv3/northbridge/amd/geodelx/raminit.h       2007-06-27 21:12:57 UTC 
(rev 388)
@@ -0,0 +1,23 @@
+/*
+ * This file is part of the LinuxBIOS project.
+ *
+ * Copyright (C) 2007 Advanced Micro Devices
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ */
+
+void sdram_set_registers(void);
+void sdram_set_spd_registers(u8 dimm0, u8 dimm1);
+void sdram_enable(u8 dimm0, u8 dimm1);

Modified: LinuxBIOSv3/northbridge/intel/i440bxemulation/dts
===================================================================
--- LinuxBIOSv3/northbridge/intel/i440bxemulation/dts   2007-06-27 21:07:10 UTC 
(rev 387)
+++ LinuxBIOSv3/northbridge/intel/i440bxemulation/dts   2007-06-27 21:12:57 UTC 
(rev 388)
@@ -1 +1,20 @@
+/*
+ * This file is part of the LinuxBIOS project.
+
+ * Copyright 2007 Ronald G. Minnich <[EMAIL PROTECTED]>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ */
  { ramsize = "128"; constructor = "i440bx_constructors";};

Modified: LinuxBIOSv3/northbridge/intel/i440bxemulation/i440bx.c
===================================================================
--- LinuxBIOSv3/northbridge/intel/i440bxemulation/i440bx.c      2007-06-27 
21:07:10 UTC (rev 387)
+++ LinuxBIOSv3/northbridge/intel/i440bxemulation/i440bx.c      2007-06-27 
21:12:57 UTC (rev 388)
@@ -44,7 +44,7 @@
 #include <device/pci.h>
 #include <string.h>
 #include "i440bx.h"
-#include "config.h"
+#include "statictree.h"
 
 /* Here are the ops for 440BX as a PCI domain. */
 /* A PCI domain contains the I/O and memory resource address space below it. */
@@ -88,10 +88,12 @@
        struct device *mc_dev;
        u32 tolmk;              /* Top of low mem, Kbytes. */
        int idx;
-       struct northbridge_intel_i440bx_config *device_configuration =
+       struct northbridge_intel_i440bxemulation_config *device_configuration =
            dev->device_configuration;
        tolmk = device_configuration->ramsize * 1024;
+       printk(BIOS_DEBUG, "pci dom set re child is %p, confi %p tolmk %x\n", 
dev, device_configuration, tolmk);
        mc_dev = dev->link[0].children;
+       printk(BIOS_DEBUG, "child is %p\n", mc_dev);
        if (mc_dev) {
                idx = 10;
                ram_resource(dev, idx++, 0, tolmk);


-- 
linuxbios mailing list
[email protected]
http://www.linuxbios.org/mailman/listinfo/linuxbios

Reply via email to