[coreboot] [commit] r5633 - in trunk/src: devices drivers/i2c/adt7463 include/device mainboard/emulation/qemu-x86 mainboard/tyan/s2881 northbridge/amd/amdfam10 northbridge/amd/amdk8 northbridge/amd/gx1 northb...

repository service svn at coreboot.org
Thu Jun 17 18:16:57 CEST 2010


Author: myles
Date: Thu Jun 17 18:16:56 2010
New Revision: 5633
URL: https://tracker.coreboot.org/trac/coreboot/changeset/5633

Log:
Always enable parent resources before child resources.

Always initialize parents before children.

Move s2881 code into a driver.

Signed-off-by: Myles Watson <mylesgw at gmail.com>
Acked-by: Peter Stuge <peter at stuge.se>

Added:
   trunk/src/drivers/i2c/adt7463/
   trunk/src/drivers/i2c/adt7463/adt7463.c   (contents, props changed)
      - copied, changed from r5632, trunk/src/mainboard/tyan/s2881/mainboard.c
   trunk/src/drivers/i2c/adt7463/chip.h   (contents, props changed)
      - copied, changed from r5632, trunk/src/drivers/i2c/adm1027/chip.h
Modified:
   trunk/src/devices/cardbus_device.c
   trunk/src/devices/device.c
   trunk/src/devices/pci_device.c
   trunk/src/devices/root_device.c
   trunk/src/include/device/device.h
   trunk/src/mainboard/emulation/qemu-x86/northbridge.c
   trunk/src/mainboard/tyan/s2881/mainboard.c
   trunk/src/northbridge/amd/amdfam10/northbridge.c
   trunk/src/northbridge/amd/amdk8/northbridge.c
   trunk/src/northbridge/amd/gx1/northbridge.c
   trunk/src/northbridge/amd/gx2/northbridge.c
   trunk/src/northbridge/amd/lx/northbridge.c
   trunk/src/northbridge/intel/e7501/northbridge.c
   trunk/src/northbridge/intel/e7520/northbridge.c
   trunk/src/northbridge/intel/e7525/northbridge.c
   trunk/src/northbridge/intel/i3100/northbridge.c
   trunk/src/northbridge/intel/i3100/pciexp_porta_ep80579.c
   trunk/src/northbridge/intel/i440bx/northbridge.c
   trunk/src/northbridge/intel/i440lx/northbridge.c
   trunk/src/northbridge/intel/i82810/northbridge.c
   trunk/src/northbridge/intel/i82830/northbridge.c
   trunk/src/northbridge/intel/i855/northbridge.c
   trunk/src/northbridge/intel/i945/northbridge.c
   trunk/src/northbridge/via/cn400/northbridge.c
   trunk/src/northbridge/via/cn700/northbridge.c
   trunk/src/northbridge/via/cx700/cx700_lpc.c
   trunk/src/northbridge/via/cx700/northbridge.c
   trunk/src/northbridge/via/vt8601/northbridge.c
   trunk/src/northbridge/via/vt8623/northbridge.c
   trunk/src/northbridge/via/vx800/northbridge.c
   trunk/src/northbridge/via/vx800/vx800_lpc.c
   trunk/src/southbridge/amd/amd8111/amd8111_lpc.c
   trunk/src/southbridge/amd/cs5530/cs5530_isa.c
   trunk/src/southbridge/amd/cs5535/cs5535.c
   trunk/src/southbridge/amd/cs5536/cs5536.c
   trunk/src/southbridge/amd/sb600/sb600_lpc.c
   trunk/src/southbridge/amd/sb700/sb700_lpc.c
   trunk/src/southbridge/broadcom/bcm5785/bcm5785_lpc.c
   trunk/src/southbridge/intel/esb6300/esb6300_lpc.c
   trunk/src/southbridge/intel/i3100/i3100_lpc.c
   trunk/src/southbridge/intel/i82801ax/i82801ax_lpc.c
   trunk/src/southbridge/intel/i82801bx/i82801bx_lpc.c
   trunk/src/southbridge/intel/i82801cx/i82801cx_lpc.c
   trunk/src/southbridge/intel/i82801dx/i82801dx_lpc.c
   trunk/src/southbridge/intel/i82801ex/i82801ex_lpc.c
   trunk/src/southbridge/intel/i82801gx/i82801gx_lpc.c
   trunk/src/southbridge/intel/i82801gx/i82801gx_pci.c
   trunk/src/southbridge/nvidia/ck804/ck804_lpc.c
   trunk/src/southbridge/nvidia/mcp55/mcp55_lpc.c
   trunk/src/southbridge/sis/sis966/sis966_lpc.c
   trunk/src/southbridge/via/vt8235/vt8235_lpc.c
   trunk/src/southbridge/via/vt8237r/vt8237r_lpc.c

Modified: trunk/src/devices/cardbus_device.c
==============================================================================
--- trunk/src/devices/cardbus_device.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/devices/cardbus_device.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -170,8 +170,6 @@
 	pci_write_config16(dev, PCI_BRIDGE_CONTROL, ctrl);
 
 	pci_dev_enable_resources(dev);
-
-	enable_childrens_resources(dev);
 }
 
 struct device_operations default_cardbus_ops_bus = {

Modified: trunk/src/devices/device.c
==============================================================================
--- trunk/src/devices/device.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/devices/device.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -782,33 +782,34 @@
 }
 
 /**
- * @brief Enable the resources for a specific device
+ * @brief Enable the resources for devices on a link
  *
- * @param dev the device whose resources are to be enabled
+ * @param link the link whose devices' resources are to be enabled
  *
  * Enable resources of the device by calling the device specific
  * enable_resources() method.
  *
  * The parent's resources should be enabled first to avoid having enabling
  * order problem. This is done by calling the parent's enable_resources()
- * method and let that method to call it's children's enable_resoruces()
- * method via the (global) enable_childrens_resources().
+ * method before its childrens' enable_resources() methods.
  *
- * Indirect mutual recursion:
- *	enable_resources() -> device_operations::enable_resource()
- *	device_operations::enable_resource() -> enable_children_resources()
- *	enable_children_resources() -> enable_resources()
  */
-void enable_resources(struct device *dev)
+static void enable_resources(struct bus *link)
 {
-	if (!dev->enabled) {
-		return;
+	struct device *dev;
+	struct bus *c_link;
+
+	for (dev = link->children; dev; dev = dev->sibling) {
+		if (dev->enabled && dev->ops && dev->ops->enable_resources) {
+			dev->ops->enable_resources(dev);
+		}
 	}
-	if (!dev->ops || !dev->ops->enable_resources) {
-		printk(BIOS_ERR, "%s missing enable_resources\n", dev_path(dev));
-		return;
+
+	for (dev = link->children; dev; dev = dev->sibling) {
+		for (c_link = dev->link_list; c_link; c_link = c_link->next) {
+			enable_resources(c_link);
+		}
 	}
-	dev->ops->enable_resources(dev);
 }
 
 /**
@@ -1036,39 +1037,77 @@
  */
 void dev_enable(void)
 {
+	struct bus *link;
+
 	printk(BIOS_INFO, "Enabling resources...\n");
 
 	/* now enable everything. */
-	enable_resources(&dev_root);
+	for (link = dev_root.link_list; link; link = link->next)
+		enable_resources(link);
 
 	printk(BIOS_INFO, "done.\n");
 }
 
 /**
- * @brief Initialize all devices in the global device list.
+ * @brief Initialize a specific device
+ *
+ * @param dev the device to be initialized
+ *
+ * The parent should be initialized first to avoid having an ordering
+ * problem. This is done by calling the parent's init()
+ * method before its childrens' init() methods.
  *
- * Starting at the first device on the global device link list,
- * walk the list and call the device's init() method to do deivce
- * specific setup.
  */
-void dev_initialize(void)
+static void init_dev(struct device *dev)
+{
+	if (!dev->enabled) {
+		return;
+	}
+
+	if (!dev->initialized && dev->ops && dev->ops->init) {
+		if (dev->path.type == DEVICE_PATH_I2C) {
+			printk(BIOS_DEBUG, "smbus: %s[%d]->",
+			       dev_path(dev->bus->dev), dev->bus->link_num);
+		}
+
+		printk(BIOS_DEBUG, "%s init\n", dev_path(dev));
+		dev->initialized = 1;
+		dev->ops->init(dev);
+	}
+}
+
+static void init_link(struct bus *link)
 {
 	struct device *dev;
+	struct bus *c_link;
 
-	printk(BIOS_INFO, "Initializing devices...\n");
-	for (dev = all_devices; dev; dev = dev->next) {
-		if (dev->enabled && !dev->initialized &&
-		    dev->ops && dev->ops->init) {
-			if (dev->path.type == DEVICE_PATH_I2C) {
-				printk(BIOS_DEBUG, "smbus: %s[%d]->",
-					     dev_path(dev->bus->dev),
-					     dev->bus->link_num);
-			}
-			printk(BIOS_DEBUG, "%s init\n", dev_path(dev));
-			dev->initialized = 1;
-			dev->ops->init(dev);
+	for (dev = link->children; dev; dev = dev->sibling) {
+		init_dev(dev);
+	}
+
+	for (dev = link->children; dev; dev = dev->sibling) {
+		for (c_link = dev->link_list; c_link; c_link = c_link->next) {
+			init_link(c_link);
 		}
 	}
+}
+
+/**
+ * @brief Initialize all devices in the global device tree.
+ *
+ * Starting at the root device, call the device's init() method to do device-
+ * specific setup, then call each child's init() method.
+ */
+void dev_initialize(void)
+{
+	struct bus *link;
+
+	printk(BIOS_INFO, "Initializing devices...\n");
+
+	/* now initialize everything. */
+	for (link = dev_root.link_list; link; link = link->next)
+		init_link(link);
+
 	printk(BIOS_INFO, "Devices initialized\n");
 	show_all_devs(BIOS_SPEW, "After init.");
 }

Modified: trunk/src/devices/pci_device.c
==============================================================================
--- trunk/src/devices/pci_device.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/devices/pci_device.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -621,7 +621,6 @@
 	pci_write_config16(dev, PCI_BRIDGE_CONTROL, ctrl);
 
 	pci_dev_enable_resources(dev);
-	enable_childrens_resources(dev);
 }
 
 void pci_bus_reset(struct bus *bus)

Modified: trunk/src/devices/root_device.c
==============================================================================
--- trunk/src/devices/root_device.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/devices/root_device.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -32,7 +32,7 @@
  * that encompass the resources for the entire system.
  * @param root Pointer to the device structure for the system root device
  */
-void root_dev_read_resources(device_t root)
+static void root_dev_read_resources(device_t root)
 {
 	printk(BIOS_ERR, "%s should never be called.\n", __func__);
 }
@@ -44,7 +44,7 @@
  * and every device under it which are all of the devices.
  * @param root Pointer to the device structure for the system root device
  */
-void root_dev_set_resources(device_t root)
+static void root_dev_set_resources(device_t root)
 {
 	printk(BIOS_ERR, "%s should never be called.\n", __func__);
 }
@@ -115,33 +115,8 @@
 	return max;
 }
 
-/**
- * @brief Enable resources for children devices
- *
- * @param dev the device whos children's resources are to be enabled
- *
- * This function is called by the global enable_resource() indirectly via the
- * device_operation::enable_resources() method of devices.
- *
- * Indirect mutual recursion:
- *	enable_childrens_resources() -> enable_resources()
- *	enable_resources() -> device_operation::enable_resources()
- *	device_operation::enable_resources() -> enable_children_resources()
- */
-void enable_childrens_resources(device_t dev)
-{
-	struct bus *link;
-	for(link = dev->link_list; link; link = link->next) {
-		device_t child;
-		for(child = link->children; child; child = child->sibling) {
-			enable_resources(child);
-		}
-	}
-}
-
-void root_dev_enable_resources(device_t dev)
+static void root_dev_enable_resources(device_t dev)
 {
-	enable_childrens_resources(dev);
 }
 
 /**
@@ -152,16 +127,16 @@
  *
  * This function is the default scan_bus() method of the root device.
  */
-unsigned int root_dev_scan_bus(device_t root, unsigned int max)
+static unsigned int root_dev_scan_bus(device_t root, unsigned int max)
 {
 	return scan_static_bus(root, max);
 }
 
-void root_dev_init(device_t root)
+static void root_dev_init(device_t root)
 {
 }
 
-void root_dev_reset(struct bus *bus)
+static void root_dev_reset(struct bus *bus)
 {
 	printk(BIOS_INFO, "Reseting board...\n");
 	hard_reset();

Copied and modified: trunk/src/drivers/i2c/adt7463/adt7463.c (from r5632, trunk/src/mainboard/tyan/s2881/mainboard.c)
==============================================================================
--- trunk/src/mainboard/tyan/s2881/mainboard.c	Thu Jun 17 00:21:19 2010	(r5632, copy source)
+++ trunk/src/drivers/i2c/adt7463/adt7463.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -28,6 +28,8 @@
 /**
  * Do some S2881-specific HWM initialization for the ADT7463 chip.
  *
+ * Should be factored out so that it can be more general.
+ *
  * See Analog Devices ADT7463 datasheet, Rev C (2004):
  * http://www.analog.com/en/prod/0,,766_825_ADT7463,00.html
  */
@@ -98,56 +100,23 @@
 	printk(BIOS_DEBUG, "ADT7463 properly initialized\n");
 }
 
-static void dummy_noop(device_t dummy)
+static void adt7463_noop(device_t dummy)
 {
 }
 
-static struct device_operations dummy_operations = {
-	.read_resources		= dummy_noop,
-	.set_resources		= dummy_noop,
-	.enable_resources	= dummy_noop,
+static struct device_operations adt7463_operations = {
+	.read_resources		= adt7463_noop,
+	.set_resources		= adt7463_noop,
+	.enable_resources	= adt7463_noop,
 	.init			= adt7463_init,
 };
 
-static unsigned int scan_root_bus(device_t root, unsigned int max)
-{
-	struct device_path path;
-	device_t dummy;
-
-	max = root_dev_scan_bus(root, max);
-
-	printk(BIOS_DEBUG, "scan_root_bus ok\n");
-
-	/* The following is a little silly. We need a hook into the boot
-	 * process *after* the ADT7463 device has been initialized. So we
-	 * create this dummy device, and we put the ADT7463 S2881 specific
-	 * settings in its init function, which gets called
-	 * as the last device to be initialized.
-	 */
-
-	path.type = DEVICE_PATH_PNP;
-	path.pnp.port = 0;
-	path.pnp.device = 0;
-	dummy = alloc_dev(root->link_list, &path);
-	dummy->ops = &dummy_operations;
-
-	return max;
-}
-
-static struct device_operations mainboard_operations = {
-	.read_resources		= root_dev_read_resources,
-	.set_resources		= root_dev_set_resources,
-	.enable_resources	= root_dev_enable_resources,
-	.init			= root_dev_init,
-	.scan_bus		= scan_root_bus,
-};
-
 static void enable_dev(struct device *dev)
 {
-	dev->ops = &mainboard_operations;
+	dev->ops = &adt7463_operations;
 }
 
 struct chip_operations mainboard_ops = {
-	CHIP_NAME("Tyan S2881 Mainboard")
+	CHIP_NAME("adt7463")
 	.enable_dev = enable_dev,
 };

Copied and modified: trunk/src/drivers/i2c/adt7463/chip.h (from r5632, trunk/src/drivers/i2c/adm1027/chip.h)
==============================================================================
--- trunk/src/drivers/i2c/adm1027/chip.h	Thu Jun 17 00:21:19 2010	(r5632, copy source)
+++ trunk/src/drivers/i2c/adt7463/chip.h	Thu Jun 17 18:16:56 2010	(r5633)
@@ -1,4 +1,4 @@
-extern struct chip_operations drivers_i2c_adm1027_ops;
+extern struct chip_operations drivers_i2c_adt7463_ops;
 
-struct drivers_i2c_adm1027_config {
+struct drivers_i2c_adt7463_config {
 };

Modified: trunk/src/include/device/device.h
==============================================================================
--- trunk/src/include/device/device.h	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/include/device/device.h	Thu Jun 17 18:16:56 2010	(r5633)
@@ -107,7 +107,6 @@
 int reset_bus(struct bus *bus);
 unsigned int scan_bus(struct device *bus, unsigned int max);
 void assign_resources(struct bus *bus);
-void enable_resources(struct device *dev);
 void enumerate_static_device(void);
 void enumerate_static_devices(void);
 const char *dev_path(device_t dev);
@@ -146,12 +145,5 @@
 extern struct device_operations default_dev_ops_root;
 void pci_domain_read_resources(struct device *dev);
 unsigned int pci_domain_scan_bus(struct device *dev, unsigned int max);
-void root_dev_read_resources(device_t dev);
-void root_dev_set_resources(device_t dev);
 unsigned int scan_static_bus(device_t bus, unsigned int max);
-void enable_childrens_resources(device_t dev);
-void root_dev_enable_resources(device_t dev);
-unsigned int root_dev_scan_bus(device_t root, unsigned int max);
-void root_dev_init(device_t dev);
-void root_dev_reset(struct bus *bus);
 #endif /* DEVICE_H */

Modified: trunk/src/mainboard/emulation/qemu-x86/northbridge.c
==============================================================================
--- trunk/src/mainboard/emulation/qemu-x86/northbridge.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/mainboard/emulation/qemu-x86/northbridge.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -122,8 +122,8 @@
 static struct device_operations pci_domain_ops = {
 	.read_resources		= cpu_pci_domain_read_resources,
 	.set_resources		= cpu_pci_domain_set_resources,
-	.enable_resources	= enable_childrens_resources,
-	.init			= 0,
+	.enable_resources	= NULL,
+	.init			= NULL,
 	.scan_bus		= pci_domain_scan_bus,
 };
 

Modified: trunk/src/mainboard/tyan/s2881/mainboard.c
==============================================================================
--- trunk/src/mainboard/tyan/s2881/mainboard.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/mainboard/tyan/s2881/mainboard.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -21,133 +21,8 @@
  */
 
 #include <device/device.h>
-#include <console/console.h>
-#include <device/smbus.h>
 #include "chip.h"
 
-/**
- * Do some S2881-specific HWM initialization for the ADT7463 chip.
- *
- * See Analog Devices ADT7463 datasheet, Rev C (2004):
- * http://www.analog.com/en/prod/0,,766_825_ADT7463,00.html
- */
-static void adt7463_init(device_t dev)
-{
-	device_t smbus_dev, adt7463;
-	struct device_path path;
-	int result;
-
-	/* Find the SMBus controller (AMD-8111). */
-	smbus_dev = dev_find_device(0x1022, 0x746b, 0);
-	if (!smbus_dev)
-		die("SMBus controller not found\n");
-	printk(BIOS_DEBUG, "SMBus controller found\n");
-
-	/* Find the ADT7463 device. */
-	path.type = DEVICE_PATH_I2C;
-	path.i2c.device = 0x2d;
-	adt7463 = find_dev_path(smbus_dev->link_list, &path);
-	if (!adt7463)
-		die("ADT7463 not found\n");
-	printk(BIOS_DEBUG, "ADT7463 found\n");
-
-	/* Set all fans to 'Fastest Speed Calculated by All 3 Temperature
-	 * Channels Controls PWMx'.
-	 */
-	result = smbus_write_byte(adt7463, 0x5c, 0xc2);
-	result = smbus_write_byte(adt7463, 0x5d, 0xc2);
-	result = smbus_write_byte(adt7463, 0x5e, 0xc2);
-
-	/* Make sure that our fans never stop when temp. falls below Tmin,
-	 * but rather keep going at minimum duty cycle (applies to automatic
-	 * fan control mode only).
-	 */
-	result = smbus_write_byte(adt7463, 0x62, 0xc0);
-
-	/* Set minimum PWM duty cycle to 25%, rather than the default 50%. */
-	result = smbus_write_byte(adt7463, 0x64, 0x40);
-	result = smbus_write_byte(adt7463, 0x65, 0x40);
-	result = smbus_write_byte(adt7463, 0x66, 0x40);
-
-	/* Set Tmin to 55C, rather than the default 90C. Above this temperature
-	 * the fans will start blowing harder as temperature increases
-	 * (automatic mode only).
-	 */
-	result = smbus_write_byte(adt7463, 0x67, 0x37);
-	result = smbus_write_byte(adt7463, 0x68, 0x37);
-	result = smbus_write_byte(adt7463, 0x69, 0x37);
-
-	/* Set THERM limit to 70C, rather than the default 100C.
-	 * The fans will kick in at 100% if the sensors reach this temperature,
-	 * (only in automatic mode, but supposedly even when hardware is
-	 * locked up). This is a failsafe measure.
-	 */
-	result = smbus_write_byte(adt7463, 0x6a, 0x46);
-	result = smbus_write_byte(adt7463, 0x6b, 0x46);
-	result = smbus_write_byte(adt7463, 0x6c, 0x46);
-
-	/* Remote temperature 1 offset (LSB == 0.25C). */
-	result = smbus_write_byte(adt7463, 0x70, 0x02);
-
-	/* Remote temperature 2 offset (LSB == 0.25C). */
-	result = smbus_write_byte(adt7463, 0x72, 0x01);
-
-	/* Set TACH measurements to normal (1/second). */
-	result = smbus_write_byte(adt7463, 0x78, 0xf0);
-
-	printk(BIOS_DEBUG, "ADT7463 properly initialized\n");
-}
-
-static void dummy_noop(device_t dummy)
-{
-}
-
-static struct device_operations dummy_operations = {
-	.read_resources		= dummy_noop,
-	.set_resources		= dummy_noop,
-	.enable_resources	= dummy_noop,
-	.init			= adt7463_init,
-};
-
-static unsigned int scan_root_bus(device_t root, unsigned int max)
-{
-	struct device_path path;
-	device_t dummy;
-
-	max = root_dev_scan_bus(root, max);
-
-	printk(BIOS_DEBUG, "scan_root_bus ok\n");
-
-	/* The following is a little silly. We need a hook into the boot
-	 * process *after* the ADT7463 device has been initialized. So we
-	 * create this dummy device, and we put the ADT7463 S2881 specific
-	 * settings in its init function, which gets called
-	 * as the last device to be initialized.
-	 */
-
-	path.type = DEVICE_PATH_PNP;
-	path.pnp.port = 0;
-	path.pnp.device = 0;
-	dummy = alloc_dev(root->link_list, &path);
-	dummy->ops = &dummy_operations;
-
-	return max;
-}
-
-static struct device_operations mainboard_operations = {
-	.read_resources		= root_dev_read_resources,
-	.set_resources		= root_dev_set_resources,
-	.enable_resources	= root_dev_enable_resources,
-	.init			= root_dev_init,
-	.scan_bus		= scan_root_bus,
-};
-
-static void enable_dev(struct device *dev)
-{
-	dev->ops = &mainboard_operations;
-}
-
 struct chip_operations mainboard_ops = {
 	CHIP_NAME("Tyan S2881 Mainboard")
-	.enable_dev = enable_dev,
 };

Modified: trunk/src/northbridge/amd/amdfam10/northbridge.c
==============================================================================
--- trunk/src/northbridge/amd/amdfam10/northbridge.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/northbridge/amd/amdfam10/northbridge.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -604,12 +604,6 @@
 	}
 }
 
-static void amdfam10_enable_resources(device_t dev)
-{
-	pci_dev_enable_resources(dev);
-	enable_childrens_resources(dev);
-}
-
 static void mcf0_control_init(struct device *dev)
 {
 }
@@ -617,7 +611,7 @@
 static struct device_operations northbridge_operations = {
 	.read_resources	  = amdfam10_read_resources,
 	.set_resources	  = amdfam10_set_resources,
-	.enable_resources = amdfam10_enable_resources,
+	.enable_resources = pci_dev_enable_resources,
 	.init		  = mcf0_control_init,
 	.scan_bus	  = amdfam10_scan_chains,
 	.enable		  = 0,
@@ -1145,8 +1139,8 @@
 static struct device_operations pci_domain_ops = {
 	.read_resources	  = amdfam10_domain_read_resources,
 	.set_resources	  = amdfam10_domain_set_resources,
-	.enable_resources = enable_childrens_resources,
-	.init		  = 0,
+	.enable_resources = NULL,
+	.init		  = NULL,
 	.scan_bus	  = amdfam10_domain_scan_bus,
 #if CONFIG_MMCONF_SUPPORT_DEFAULT
 	.ops_pci_bus	  = &pci_ops_mmconf,

Modified: trunk/src/northbridge/amd/amdk8/northbridge.c
==============================================================================
--- trunk/src/northbridge/amd/amdk8/northbridge.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/northbridge/amd/amdk8/northbridge.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -574,12 +574,6 @@
 	}
 }
 
-static void amdk8_enable_resources(device_t dev)
-{
-	pci_dev_enable_resources(dev);
-	enable_childrens_resources(dev);
-}
-
 static void mcf0_control_init(struct device *dev)
 {
 #if 0
@@ -593,7 +587,7 @@
 static struct device_operations northbridge_operations = {
 	.read_resources	  = amdk8_read_resources,
 	.set_resources	  = amdk8_set_resources,
-	.enable_resources = amdk8_enable_resources,
+	.enable_resources = pci_dev_enable_resources,
 	.init		  = mcf0_control_init,
 	.scan_bus	  = amdk8_scan_chains,
 	.enable		  = 0,
@@ -1119,8 +1113,8 @@
 static struct device_operations pci_domain_ops = {
 	.read_resources	  = amdk8_domain_read_resources,
 	.set_resources	  = amdk8_domain_set_resources,
-	.enable_resources = enable_childrens_resources,
-	.init		  = 0,
+	.enable_resources = NULL,
+	.init		  = NULL,
 	.scan_bus	  = amdk8_domain_scan_bus,
 	.ops_pci_bus	  = &pci_cf8_conf1,
 };

Modified: trunk/src/northbridge/amd/gx1/northbridge.c
==============================================================================
--- trunk/src/northbridge/amd/gx1/northbridge.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/northbridge/amd/gx1/northbridge.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -169,8 +169,8 @@
 static struct device_operations pci_domain_ops = {
         .read_resources   = pci_domain_read_resources,
         .set_resources    = pci_domain_set_resources,
-        .enable_resources = enable_childrens_resources,
-        .init             = 0,
+        .enable_resources = NULL,
+        .init             = NULL,
         .scan_bus         = pci_domain_scan_bus,
 };
 

Modified: trunk/src/northbridge/amd/gx2/northbridge.c
==============================================================================
--- trunk/src/northbridge/amd/gx2/northbridge.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/northbridge/amd/gx2/northbridge.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -448,8 +448,8 @@
 static struct device_operations pci_domain_ops = {
         .read_resources   = pci_domain_read_resources,
         .set_resources    = pci_domain_set_resources,
-        .enable_resources = enable_childrens_resources,
-        .init             = 0,
+        .enable_resources = NULL,
+        .init             = NULL,
         .scan_bus         = pci_domain_scan_bus,
 };
 

Modified: trunk/src/northbridge/amd/lx/northbridge.c
==============================================================================
--- trunk/src/northbridge/amd/lx/northbridge.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/northbridge/amd/lx/northbridge.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -441,7 +441,7 @@
 static struct device_operations pci_domain_ops = {
 	.read_resources = pci_domain_read_resources,
 	.set_resources = pci_domain_set_resources,
-	.enable_resources = enable_childrens_resources,
+	.enable_resources = NULL,
 	.scan_bus = pci_domain_scan_bus,
 	.enable = pci_domain_enable,
 };

Modified: trunk/src/northbridge/intel/e7501/northbridge.c
==============================================================================
--- trunk/src/northbridge/intel/e7501/northbridge.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/northbridge/intel/e7501/northbridge.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -141,8 +141,8 @@
 static struct device_operations pci_domain_ops = {
         .read_resources   = pci_domain_read_resources,
         .set_resources    = pci_domain_set_resources,
-        .enable_resources = enable_childrens_resources,
-        .init             = 0,
+        .enable_resources = NULL,
+        .init             = NULL,
         .scan_bus         = pci_domain_scan_bus,
 	.ops_pci_bus      = &pci_cf8_conf1,
 };

Modified: trunk/src/northbridge/intel/e7520/northbridge.c
==============================================================================
--- trunk/src/northbridge/intel/e7520/northbridge.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/northbridge/intel/e7520/northbridge.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -163,8 +163,8 @@
 static struct device_operations pci_domain_ops = {
 	.read_resources   = pci_domain_read_resources,
 	.set_resources    = pci_domain_set_resources,
-	.enable_resources = enable_childrens_resources,
-	.init             = 0,
+	.enable_resources = NULL,
+	.init             = NULL,
 	.scan_bus         = e7520_domain_scan_bus,
 	.ops_pci_bus      = &pci_cf8_conf1, /* Do we want to use the memory mapped space here? */
 };

Modified: trunk/src/northbridge/intel/e7525/northbridge.c
==============================================================================
--- trunk/src/northbridge/intel/e7525/northbridge.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/northbridge/intel/e7525/northbridge.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -163,8 +163,8 @@
 static struct device_operations pci_domain_ops = {
 	.read_resources   = pci_domain_read_resources,
 	.set_resources    = pci_domain_set_resources,
-	.enable_resources = enable_childrens_resources,
-	.init             = 0,
+	.enable_resources = NULL,
+	.init             = NULL,
 	.scan_bus         = e7525_domain_scan_bus,
 	.ops_pci_bus      = &pci_cf8_conf1, /* Do we want to use the memory mapped space here? */
 };

Modified: trunk/src/northbridge/intel/i3100/northbridge.c
==============================================================================
--- trunk/src/northbridge/intel/i3100/northbridge.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/northbridge/intel/i3100/northbridge.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -184,8 +184,8 @@
 static struct device_operations pci_domain_ops = {
 	.read_resources   = pci_domain_read_resources,
 	.set_resources    = pci_domain_set_resources,
-	.enable_resources = enable_childrens_resources,
-	.init             = 0,
+	.enable_resources = NULL,
+	.init             = NULL,
 	.scan_bus         = i3100_domain_scan_bus,
 	.ops_pci_bus      = &pci_cf8_conf1, /* Do we want to use the memory mapped space here? */
 };

Modified: trunk/src/northbridge/intel/i3100/pciexp_porta_ep80579.c
==============================================================================
--- trunk/src/northbridge/intel/i3100/pciexp_porta_ep80579.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/northbridge/intel/i3100/pciexp_porta_ep80579.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -64,7 +64,6 @@
 		dev->command |= PCI_COMMAND_MEMORY;
 	}
 	pci_dev_enable_resources(dev);
-	enable_childrens_resources(dev);
 }
 
 

Modified: trunk/src/northbridge/intel/i440bx/northbridge.c
==============================================================================
--- trunk/src/northbridge/intel/i440bx/northbridge.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/northbridge/intel/i440bx/northbridge.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -124,8 +124,8 @@
 static struct device_operations pci_domain_ops = {
 	.read_resources		= pci_domain_read_resources,
 	.set_resources		= i440bx_domain_set_resources,
-	.enable_resources	= enable_childrens_resources,
-	.init			= 0,
+	.enable_resources	= NULL,
+	.init			= NULL,
 	.scan_bus		= pci_domain_scan_bus,
 };
 

Modified: trunk/src/northbridge/intel/i440lx/northbridge.c
==============================================================================
--- trunk/src/northbridge/intel/i440lx/northbridge.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/northbridge/intel/i440lx/northbridge.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -152,8 +152,8 @@
 static struct device_operations pci_domain_ops = {
 	.read_resources		= pci_domain_read_resources,
 	.set_resources		= i440lx_domain_set_resources,
-	.enable_resources	= enable_childrens_resources,
-	.init			= 0,
+	.enable_resources	= NULL,
+	.init			= NULL,
 	.scan_bus		= pci_domain_scan_bus,
 };
 

Modified: trunk/src/northbridge/intel/i82810/northbridge.c
==============================================================================
--- trunk/src/northbridge/intel/i82810/northbridge.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/northbridge/intel/i82810/northbridge.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -184,8 +184,8 @@
 static struct device_operations pci_domain_ops = {
 	.read_resources		= pci_domain_read_resources,
 	.set_resources		= pci_domain_set_resources,
-	.enable_resources	= enable_childrens_resources,
-	.init			= 0,
+	.enable_resources	= NULL,
+	.init			= NULL,
 	.scan_bus		= pci_domain_scan_bus,
 };
 

Modified: trunk/src/northbridge/intel/i82830/northbridge.c
==============================================================================
--- trunk/src/northbridge/intel/i82830/northbridge.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/northbridge/intel/i82830/northbridge.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -164,8 +164,8 @@
 static struct device_operations pci_domain_ops = {
 	.read_resources		= pci_domain_read_resources,
 	.set_resources		= pci_domain_set_resources,
-	.enable_resources	= enable_childrens_resources,
-	.init			= 0,
+	.enable_resources	= NULL,
+	.init			= NULL,
 	.scan_bus		= pci_domain_scan_bus,
 };
 

Modified: trunk/src/northbridge/intel/i855/northbridge.c
==============================================================================
--- trunk/src/northbridge/intel/i855/northbridge.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/northbridge/intel/i855/northbridge.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -140,8 +140,8 @@
 static struct device_operations pci_domain_ops = {
         .read_resources   = pci_domain_read_resources,
         .set_resources    = pci_domain_set_resources,
-        .enable_resources = enable_childrens_resources,
-        .init             = 0,
+        .enable_resources = NULL,
+        .init             = NULL,
         .scan_bus         = pci_domain_scan_bus,
 };
 

Modified: trunk/src/northbridge/intel/i945/northbridge.c
==============================================================================
--- trunk/src/northbridge/intel/i945/northbridge.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/northbridge/intel/i945/northbridge.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -224,8 +224,8 @@
 static struct device_operations pci_domain_ops = {
 	.read_resources   = pci_domain_read_resources,
 	.set_resources    = pci_domain_set_resources,
-	.enable_resources = enable_childrens_resources,
-	.init             = 0,
+	.enable_resources = NULL,
+	.init             = NULL,
 	.scan_bus         = pci_domain_scan_bus,
 #if CONFIG_MMCONF_SUPPORT_DEFAULT
 	.ops_pci_bus	  = &pci_ops_mmconf,

Modified: trunk/src/northbridge/via/cn400/northbridge.c
==============================================================================
--- trunk/src/northbridge/via/cn400/northbridge.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/northbridge/via/cn400/northbridge.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -283,8 +283,8 @@
 static struct device_operations pci_domain_ops = {
 	.read_resources   = cn400_domain_read_resources,
 	.set_resources    = cn400_domain_set_resources,
-	.enable_resources = enable_childrens_resources,
-	.init             = 0,
+	.enable_resources = NULL,
+	.init             = NULL,
 	.scan_bus         = cn400_domain_scan_bus,
 };
 

Modified: trunk/src/northbridge/via/cn700/northbridge.c
==============================================================================
--- trunk/src/northbridge/via/cn700/northbridge.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/northbridge/via/cn700/northbridge.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -205,8 +205,8 @@
 static struct device_operations pci_domain_ops = {
 	.read_resources   = pci_domain_read_resources,
 	.set_resources    = pci_domain_set_resources,
-	.enable_resources = enable_childrens_resources,
-	.init             = 0,
+	.enable_resources = NULL,
+	.init             = NULL,
 	.scan_bus         = pci_domain_scan_bus,
 };
 

Modified: trunk/src/northbridge/via/cx700/cx700_lpc.c
==============================================================================
--- trunk/src/northbridge/via/cx700/cx700_lpc.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/northbridge/via/cx700/cx700_lpc.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -270,7 +270,6 @@
 {
 	/* Enable SuperIO decoding */
 	pci_dev_enable_resources(dev);
-	enable_childrens_resources(dev);
 }
 
 static void cx700_lpc_init(struct device *dev)

Modified: trunk/src/northbridge/via/cx700/northbridge.c
==============================================================================
--- trunk/src/northbridge/via/cx700/northbridge.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/northbridge/via/cx700/northbridge.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -134,8 +134,8 @@
 static struct device_operations pci_domain_ops = {
 	.read_resources	  = pci_domain_read_resources,
 	.set_resources	  = pci_domain_set_resources,
-	.enable_resources = enable_childrens_resources,
-	.init		  = 0,
+	.enable_resources = NULL,
+	.init		  = NULL,
 	.scan_bus	  = pci_domain_scan_bus,
 };
 

Modified: trunk/src/northbridge/via/vt8601/northbridge.c
==============================================================================
--- trunk/src/northbridge/via/vt8601/northbridge.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/northbridge/via/vt8601/northbridge.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -146,8 +146,8 @@
 static struct device_operations pci_domain_ops = {
         .read_resources   = pci_domain_read_resources,
         .set_resources    = pci_domain_set_resources,
-        .enable_resources = enable_childrens_resources,
-        .init             = 0,
+        .enable_resources = NULL,
+        .init             = NULL,
         .scan_bus         = pci_domain_scan_bus,
 };
 

Modified: trunk/src/northbridge/via/vt8623/northbridge.c
==============================================================================
--- trunk/src/northbridge/via/vt8623/northbridge.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/northbridge/via/vt8623/northbridge.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -207,8 +207,8 @@
 static struct device_operations pci_domain_ops = {
         .read_resources   = pci_domain_read_resources,
         .set_resources    = pci_domain_set_resources,
-        .enable_resources = enable_childrens_resources,
-        .init             = 0,
+        .enable_resources = NULL,
+        .init             = NULL,
         .scan_bus         = pci_domain_scan_bus,
 };
 

Modified: trunk/src/northbridge/via/vx800/northbridge.c
==============================================================================
--- trunk/src/northbridge/via/vx800/northbridge.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/northbridge/via/vx800/northbridge.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -181,8 +181,8 @@
 static struct device_operations pci_domain_ops = {
 	.read_resources = pci_domain_read_resources,
 	.set_resources = pci_domain_set_resources,
-	.enable_resources = enable_childrens_resources,
-	.init = 0,
+	.enable_resources = NULL,
+	.init = NULL,
 	.scan_bus = pci_domain_scan_bus,
 };
 

Modified: trunk/src/northbridge/via/vx800/vx800_lpc.c
==============================================================================
--- trunk/src/northbridge/via/vx800/vx800_lpc.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/northbridge/via/vx800/vx800_lpc.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -322,16 +322,6 @@
 	pci_dev_set_resources(dev);
 }
 
-static void vx800_enable_resources(device_t dev)
-{
-	/* vx800 is not a pci bridge and has no resources of its own (other than
-	   standard PC i/o addresses). however it does control the isa bus and so
-	   we need to manually call enable childrens resources on that bus */
-	/* TODO: do we even care about ISA? If so, for what? SuperIO on LPC bus */
-	pci_dev_enable_resources(dev);
-	enable_childrens_resources(dev);
-}
-
 static void southbridge_init(struct device *dev)
 {
 	printk(BIOS_DEBUG, "vx800 sb init\n");
@@ -375,8 +365,8 @@
 static struct device_operations vx800_lpc_ops = {
 	.read_resources = vx800_read_resources,
 	.set_resources = vx800_set_resources,
-	.enable_resources = vx800_enable_resources,
-	.init = &southbridge_init,
+	.enable_resources = pci_dev_enable_resources,
+	.init = southbridge_init,
 	.scan_bus = scan_static_bus,
 };
 

Modified: trunk/src/southbridge/amd/amd8111/amd8111_lpc.c
==============================================================================
--- trunk/src/southbridge/amd/amd8111/amd8111_lpc.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/southbridge/amd/amd8111/amd8111_lpc.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -106,12 +106,6 @@
 	res->flags = IORESOURCE_MEM | IORESOURCE_ASSIGNED | IORESOURCE_FIXED;
 }
 
-static void amd8111_lpc_enable_resources(device_t dev)
-{
-	pci_dev_enable_resources(dev);
-	enable_childrens_resources(dev);
-}
-
 static void lpci_set_subsystem(device_t dev, unsigned vendor, unsigned device)
 {
 	pci_write_config32(dev, 0x70,
@@ -125,7 +119,7 @@
 static struct device_operations lpc_ops  = {
 	.read_resources   = amd8111_lpc_read_resources,
 	.set_resources    = pci_dev_set_resources,
-	.enable_resources = amd8111_lpc_enable_resources,
+	.enable_resources = pci_dev_enable_resources,
 	.init             = lpc_init,
 	.scan_bus         = scan_static_bus,
 	.enable           = amd8111_enable,

Modified: trunk/src/southbridge/amd/cs5530/cs5530_isa.c
==============================================================================
--- trunk/src/southbridge/amd/cs5530/cs5530_isa.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/southbridge/amd/cs5530/cs5530_isa.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -47,17 +47,10 @@
 {
 }
 
-static void cs5530_pci_dev_enable_resources(device_t dev)
-{
-	// TODO: Needed?
-	pci_dev_enable_resources(dev);
-	enable_childrens_resources(dev);
-}
-
 static struct device_operations isa_ops = {
 	.read_resources		= cs5530_read_resources,
 	.set_resources		= pci_dev_set_resources,
-	.enable_resources	= cs5530_pci_dev_enable_resources,
+	.enable_resources	= pci_dev_enable_resources,
 	.init			= isa_init,
 	.enable			= 0,
 	.scan_bus		= scan_static_bus,

Modified: trunk/src/southbridge/amd/cs5535/cs5535.c
==============================================================================
--- trunk/src/southbridge/amd/cs5535/cs5535.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/southbridge/amd/cs5535/cs5535.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -87,17 +87,10 @@
 	res->flags = IORESOURCE_MEM | IORESOURCE_ASSIGNED | IORESOURCE_FIXED;
 }
 
-static void cs5535_pci_dev_enable_resources(device_t dev)
-{
-	printk(BIOS_DEBUG, "%s()\n", __func__);
-	pci_dev_enable_resources(dev);
-	enable_childrens_resources(dev);
-}
-
 static struct device_operations southbridge_ops = {
 	.read_resources   = cs5535_read_resources,
 	.set_resources    = pci_dev_set_resources,
-	.enable_resources = cs5535_pci_dev_enable_resources,
+	.enable_resources = pci_dev_enable_resources,
 	.init             = southbridge_init,
 	.enable           = southbridge_enable,
 	.scan_bus         = scan_static_bus,

Modified: trunk/src/southbridge/amd/cs5536/cs5536.c
==============================================================================
--- trunk/src/southbridge/amd/cs5536/cs5536.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/southbridge/amd/cs5536/cs5536.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -667,17 +667,10 @@
 
 }
 
-static void cs5536_pci_dev_enable_resources(device_t dev)
-{
-	printk(BIOS_DEBUG, "%s()\n", __func__);
-	pci_dev_enable_resources(dev);
-	enable_childrens_resources(dev);
-}
-
 static struct device_operations southbridge_ops = {
 	.read_resources = cs5536_read_resources,
 	.set_resources = pci_dev_set_resources,
-	.enable_resources = cs5536_pci_dev_enable_resources,
+	.enable_resources = pci_dev_enable_resources,
 	.init = southbridge_init,
 //      .enable                   = southbridge_enable,
 	.scan_bus = scan_static_bus,

Modified: trunk/src/southbridge/amd/sb600/sb600_lpc.c
==============================================================================
--- trunk/src/southbridge/amd/sb600/sb600_lpc.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/southbridge/amd/sb600/sb600_lpc.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -96,13 +96,6 @@
  *
  * @param dev the device whos children's resources are to be enabled
  *
- * This function is call by the global enable_resources() indirectly via the
- * device_operation::enable_resources() method of devices.
- *
- * Indirect mutual recursion:
- *      enable_childrens_resources() -> enable_resources()
- *      enable_resources() -> device_operation::enable_resources()
- *      device_operation::enable_resources() -> enable_children_resources()
  */
 static void sb600_lpc_enable_childrens_resources(device_t dev)
 {
@@ -118,7 +111,6 @@
 		device_t child;
 		for (child = link->children; child;
 		     child = child->sibling) {
-			enable_resources(child);
 			if (child->enabled
 			    && (child->path.type == DEVICE_PATH_PNP)) {
 				struct resource *res;

Modified: trunk/src/southbridge/amd/sb700/sb700_lpc.c
==============================================================================
--- trunk/src/southbridge/amd/sb700/sb700_lpc.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/southbridge/amd/sb700/sb700_lpc.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -108,13 +108,6 @@
  *
  * @param dev the device whos children's resources are to be enabled
  *
- * This function is call by the global enable_resources() indirectly via the
- * device_operation::enable_resources() method of devices.
- *
- * Indirect mutual recursion:
- *      enable_childrens_resources() -> enable_resources()
- *      enable_resources() -> device_operation::enable_resources()
- *      device_operation::enable_resources() -> enable_children_resources()
  */
 static void sb700_lpc_enable_childrens_resources(device_t dev)
 {
@@ -130,7 +123,6 @@
 		device_t child;
 		for (child = link->children; child;
 		     child = child->sibling) {
-			enable_resources(child);
 			if (child->enabled
 			    && (child->path.type == DEVICE_PATH_PNP)) {
 				struct resource *res;

Modified: trunk/src/southbridge/broadcom/bcm5785/bcm5785_lpc.c
==============================================================================
--- trunk/src/southbridge/broadcom/bcm5785/bcm5785_lpc.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/southbridge/broadcom/bcm5785/bcm5785_lpc.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -57,13 +57,6 @@
  *
  * @param dev the device whos children's resources are to be enabled
  *
- * This function is call by the global enable_resources() indirectly via the
- * device_operation::enable_resources() method of devices.
- *
- * Indirect mutual recursion:
- *      enable_childrens_resources() -> enable_resources()
- *      enable_resources() -> device_operation::enable_resources()
- *      device_operation::enable_resources() -> enable_children_resources()
  */
 static void bcm5785_lpc_enable_childrens_resources(device_t dev)
 {
@@ -75,7 +68,6 @@
 	for (link = dev->link_list; link; link = link->next) {
                 device_t child;
                 for (child = link->children; child; child = child->sibling) {
-                        enable_resources(child);
 			if(child->enabled && (child->path.type == DEVICE_PATH_PNP)) {
 				struct resource *res;
 				for(res = child->resource_list; res; res = res->next) {

Modified: trunk/src/southbridge/intel/esb6300/esb6300_lpc.c
==============================================================================
--- trunk/src/southbridge/intel/esb6300/esb6300_lpc.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/southbridge/intel/esb6300/esb6300_lpc.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -351,8 +351,6 @@
 	gpio_cntl = pci_read_config8(dev, 0x5c);
 	gpio_cntl |= (1 << 4);
 	pci_write_config8(dev, 0x5c, gpio_cntl);
-
-	enable_childrens_resources(dev);
 }
 
 static struct pci_operations lops_pci = {

Modified: trunk/src/southbridge/intel/i3100/i3100_lpc.c
==============================================================================
--- trunk/src/southbridge/intel/i3100/i3100_lpc.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/southbridge/intel/i3100/i3100_lpc.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -404,8 +404,6 @@
 
 	/* Enable the RCBA */
 	pci_write_config32(dev, RCBA, pci_read_config32(dev, RCBA) | (1 << 0));
-
-	enable_childrens_resources(dev);
 }
 
 static struct pci_operations lops_pci = {

Modified: trunk/src/southbridge/intel/i82801ax/i82801ax_lpc.c
==============================================================================
--- trunk/src/southbridge/intel/i82801ax/i82801ax_lpc.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/southbridge/intel/i82801ax/i82801ax_lpc.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -332,16 +332,10 @@
 	res->flags = IORESOURCE_MEM | IORESOURCE_ASSIGNED | IORESOURCE_FIXED;
 }
 
-static void i82801ax_lpc_enable_resources(device_t dev)
-{
-	pci_dev_enable_resources(dev);
-	enable_childrens_resources(dev);
-}
-
 static struct device_operations lpc_ops = {
 	.read_resources		= i82801ax_lpc_read_resources,
 	.set_resources		= pci_dev_set_resources,
-	.enable_resources	= i82801ax_lpc_enable_resources,
+	.enable_resources	= pci_dev_enable_resources,
 	.init			= lpc_init,
 	.scan_bus		= scan_static_bus,
 	.enable			= i82801ax_enable,

Modified: trunk/src/southbridge/intel/i82801bx/i82801bx_lpc.c
==============================================================================
--- trunk/src/southbridge/intel/i82801bx/i82801bx_lpc.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/southbridge/intel/i82801bx/i82801bx_lpc.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -332,16 +332,10 @@
 	res->flags = IORESOURCE_MEM | IORESOURCE_ASSIGNED | IORESOURCE_FIXED;
 }
 
-static void i82801bx_lpc_enable_resources(device_t dev)
-{
-	pci_dev_enable_resources(dev);
-	enable_childrens_resources(dev);
-}
-
 static struct device_operations lpc_ops = {
 	.read_resources		= i82801bx_lpc_read_resources,
 	.set_resources		= pci_dev_set_resources,
-	.enable_resources	= i82801bx_lpc_enable_resources,
+	.enable_resources	= pci_dev_enable_resources,
 	.init			= lpc_init,
 	.scan_bus		= scan_static_bus,
 	.enable			= i82801bx_enable,

Modified: trunk/src/southbridge/intel/i82801cx/i82801cx_lpc.c
==============================================================================
--- trunk/src/southbridge/intel/i82801cx/i82801cx_lpc.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/southbridge/intel/i82801cx/i82801cx_lpc.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -229,16 +229,10 @@
 	res->flags = IORESOURCE_MEM | IORESOURCE_ASSIGNED | IORESOURCE_FIXED;
 }
 
-static void i82801cx_lpc_enable_resources(device_t dev)
-{
-	pci_dev_enable_resources(dev);
-	enable_childrens_resources(dev);
-}
-
 static struct device_operations lpc_ops  = {
 	.read_resources   = i82801cx_lpc_read_resources,
 	.set_resources    = pci_dev_set_resources,
-	.enable_resources = i82801cx_lpc_enable_resources,
+	.enable_resources = pci_dev_enable_resources,
 	.init             = lpc_init,
 	.scan_bus         = scan_static_bus,
 	.enable           = 0,

Modified: trunk/src/southbridge/intel/i82801dx/i82801dx_lpc.c
==============================================================================
--- trunk/src/southbridge/intel/i82801dx/i82801dx_lpc.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/southbridge/intel/i82801dx/i82801dx_lpc.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -322,16 +322,10 @@
 	res->flags = IORESOURCE_MEM | IORESOURCE_ASSIGNED | IORESOURCE_FIXED;
 }
 
-static void i82801dx_lpc_enable_resources(device_t dev)
-{
-	pci_dev_enable_resources(dev);
-	enable_childrens_resources(dev);
-}
-
 static struct device_operations lpc_ops = {
 	.read_resources		= i82801dx_lpc_read_resources,
 	.set_resources		= pci_dev_set_resources,
-	.enable_resources	= i82801dx_lpc_enable_resources,
+	.enable_resources	= pci_dev_enable_resources,
 	.init			= lpc_init,
 	.scan_bus		= scan_static_bus,
 	.enable			= i82801dx_enable,

Modified: trunk/src/southbridge/intel/i82801ex/i82801ex_lpc.c
==============================================================================
--- trunk/src/southbridge/intel/i82801ex/i82801ex_lpc.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/southbridge/intel/i82801ex/i82801ex_lpc.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -335,8 +335,6 @@
 	gpio_cntl = pci_read_config8(dev, 0x5c);
 	gpio_cntl |= (1 << 4);
 	pci_write_config8(dev, 0x5c, gpio_cntl);
-
-	enable_childrens_resources(dev);
 }
 
 static struct pci_operations lops_pci = {

Modified: trunk/src/southbridge/intel/i82801gx/i82801gx_lpc.c
==============================================================================
--- trunk/src/southbridge/intel/i82801gx/i82801gx_lpc.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/southbridge/intel/i82801gx/i82801gx_lpc.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -481,12 +481,6 @@
 	res->flags = IORESOURCE_MEM | IORESOURCE_ASSIGNED | IORESOURCE_FIXED;
 }
 
-static void i82801gx_lpc_enable_resources(device_t dev)
-{
-	pci_dev_enable_resources(dev);
-	enable_childrens_resources(dev);
-}
-
 static void set_subsystem(device_t dev, unsigned vendor, unsigned device)
 {
 	if (!vendor || !device) {
@@ -505,7 +499,7 @@
 static struct device_operations device_ops = {
 	.read_resources		= i82801gx_lpc_read_resources,
 	.set_resources		= pci_dev_set_resources,
-	.enable_resources	= i82801gx_lpc_enable_resources,
+	.enable_resources	= pci_dev_enable_resources,
 	.init			= lpc_init,
 	.scan_bus		= scan_static_bus,
 	.enable			= i82801gx_enable,

Modified: trunk/src/southbridge/intel/i82801gx/i82801gx_pci.c
==============================================================================
--- trunk/src/southbridge/intel/i82801gx/i82801gx_pci.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/southbridge/intel/i82801gx/i82801gx_pci.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -110,8 +110,6 @@
 
 	/* This is the reason we need our own pci_bus_enable_resources */
 	ich_pci_dev_enable_resources(dev);
-
-	enable_childrens_resources(dev);
 }
 
 static void set_subsystem(device_t dev, unsigned vendor, unsigned device)

Modified: trunk/src/southbridge/nvidia/ck804/ck804_lpc.c
==============================================================================
--- trunk/src/southbridge/nvidia/ck804/ck804_lpc.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/southbridge/nvidia/ck804/ck804_lpc.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -222,12 +222,6 @@
  * This function is called by the global enable_resources() indirectly via the
  * device_operation::enable_resources() method of devices.
  *
- * Indirect mutual recursion:
- *      enable_childrens_resources() -> enable_resources()
- *      enable_resources() -> device_operation::enable_resources()
- *      device_operation::enable_resources() -> enable_children_resources()
- *
- * @param dev The device whose children's resources are to be enabled.
  */
 static void ck804_lpc_enable_childrens_resources(device_t dev)
 {
@@ -240,7 +234,6 @@
 	for (link = dev->link_list; link; link = link->next) {
 		device_t child;
 		for (child = link->children; child; child = child->sibling) {
-			enable_resources(child);
 			if (child->enabled && (child->path.type == DEVICE_PATH_PNP)) {
 				struct resource *res;
 				for (res = child->resource_list; res; res = res->next) {

Modified: trunk/src/southbridge/nvidia/mcp55/mcp55_lpc.c
==============================================================================
--- trunk/src/southbridge/nvidia/mcp55/mcp55_lpc.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/southbridge/nvidia/mcp55/mcp55_lpc.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -195,13 +195,6 @@
  *
  * @param dev the device whos children's resources are to be enabled
  *
- * This function is called by the global enable_resources() indirectly via the
- * device_operation::enable_resources() method of devices.
- *
- * Indirect mutual recursion:
- *      enable_childrens_resources() -> enable_resources()
- *      enable_resources() -> device_operation::enable_resources()
- *      device_operation::enable_resources() -> enable_children_resources()
  */
 static void mcp55_lpc_enable_childrens_resources(device_t dev)
 {
@@ -215,7 +208,6 @@
 	for (link = dev->link_list; link; link = link->next) {
 		device_t child;
 		for (child = link->children; child; child = child->sibling) {
-			enable_resources(child);
 			if(child->enabled && (child->path.type == DEVICE_PATH_PNP)) {
 				struct resource *res;
 				for(res = child->resource_list; res; res = res->next) {

Modified: trunk/src/southbridge/sis/sis966/sis966_lpc.c
==============================================================================
--- trunk/src/southbridge/sis/sis966/sis966_lpc.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/southbridge/sis/sis966/sis966_lpc.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -188,13 +188,6 @@
  *
  * @param dev the device whos children's resources are to be enabled
  *
- * This function is call by the global enable_resources() indirectly via the
- * device_operation::enable_resources() method of devices.
- *
- * Indirect mutual recursion:
- *      enable_childrens_resources() -> enable_resources()
- *      enable_resources() -> device_operation::enable_resources()
- *      device_operation::enable_resources() -> enable_children_resources()
  */
 static void sis966_lpc_enable_childrens_resources(device_t dev)
 {
@@ -208,7 +201,6 @@
 	for (link = dev->link_list; link; link = link->next) {
 		device_t child;
 		for (child = link->children; child; child = child->sibling) {
-			enable_resources(child);
 			if(child->enabled && (child->path.type == DEVICE_PATH_PNP)) {
 				struct resource *res;
 				for(res = child->resource_list; res; res = res->next) {

Modified: trunk/src/southbridge/via/vt8235/vt8235_lpc.c
==============================================================================
--- trunk/src/southbridge/via/vt8235/vt8235_lpc.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/southbridge/via/vt8235/vt8235_lpc.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -241,14 +241,6 @@
 	pci_dev_set_resources(dev);
 }
 
-static void vt8235_enable_resources(device_t dev)
-{
-	/* vt8235 is not a pci bridge and has no resources of its own (other than standard PC i/o addresses)
-           however it does control the isa bus and so we need to manually call enable childrens resources on that bus */
-	pci_dev_enable_resources(dev);
-	enable_childrens_resources(dev);
-}
-
 static void southbridge_init(struct device *dev)
 {
 	vt8235_init(dev);
@@ -258,8 +250,8 @@
 static struct device_operations vt8235_lpc_ops = {
 	.read_resources   = vt8235_read_resources,
 	.set_resources    = vt8235_set_resources,
-	.enable_resources = vt8235_enable_resources,
-	.init             = &southbridge_init,
+	.enable_resources = pci_dev_enable_resources,
+	.init             = southbridge_init,
 	.scan_bus         = scan_static_bus,
 };
 

Modified: trunk/src/southbridge/via/vt8237r/vt8237r_lpc.c
==============================================================================
--- trunk/src/southbridge/via/vt8237r/vt8237r_lpc.c	Thu Jun 17 00:21:19 2010	(r5632)
+++ trunk/src/southbridge/via/vt8237r/vt8237r_lpc.c	Thu Jun 17 18:16:56 2010	(r5633)
@@ -505,17 +505,6 @@
 	res->flags = IORESOURCE_IO | IORESOURCE_ASSIGNED | IORESOURCE_FIXED;
 }
 
-/**
- * The VT8237R is not a PCI bridge and has no resources of its own (other
- * than standard PC I/O addresses), however it does control the ISA bus
- * and so we need to manually call enable childrens resources on that bus.
- */
-static void vt8237r_enable_resources(device_t dev)
-{
-	pci_dev_enable_resources(dev);
-	enable_childrens_resources(dev);
-}
-
 static void init_keyboard(struct device *dev)
 {
 	u8 regval = pci_read_config8(dev, 0x51);
@@ -535,16 +524,16 @@
 static const struct device_operations vt8237r_lpc_ops_s = {
 	.read_resources		= vt8237r_read_resources,
 	.set_resources		= pci_dev_set_resources,
-	.enable_resources	= vt8237r_enable_resources,
-	.init			= &vt8237s_init,
+	.enable_resources	= pci_dev_enable_resources,
+	.init			= vt8237s_init,
 	.scan_bus		= scan_static_bus,
 };
 
 static const struct device_operations vt8237r_lpc_ops_r = {
 	.read_resources		= vt8237r_read_resources,
 	.set_resources		= pci_dev_set_resources,
-	.enable_resources	= vt8237r_enable_resources,
-	.init			= &vt8237r_init,
+	.enable_resources	= pci_dev_enable_resources,
+	.init			= vt8237r_init,
 	.scan_bus		= scan_static_bus,
 };
 




More information about the coreboot mailing list