usbdebug: Drop duplicates of EHCI BAR relocation code

All the additional work that needs to be done in EHCI BAR relocation
is independent of the hardware platform and was functionally identical
in all the copies removed.

When USBDEBUG is not selected, PCI EHCI controllers use standard
pci_dev_read_resources() call.

With USBDEBUG selected, PCI EHCI controller's device_operations
.read_resources is replaced with pci_ehci_read_resources() call,
which in turn will replace the device_operations .set_resources call.
The replacement for .set_resources reconfigures usbdebug driver side,
and calls the original .set_resources to configure hardware side.

Change-Id: I8e136a5da4efedf60b6dd7068c0488153efaaf8e
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: http://review.coreboot.org/3412
Reviewed-by: Aaron Durbin <adurbin@google.com>
Tested-by: build bot (Jenkins)
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
diff --git a/src/southbridge/amd/agesa/hudson/usb.c b/src/southbridge/amd/agesa/hudson/usb.c
index f5ec056..f5d0d4c 100644
--- a/src/southbridge/amd/agesa/hudson/usb.c
+++ b/src/southbridge/amd/agesa/hudson/usb.c
@@ -34,33 +34,9 @@
 {
 }
 
-static void usb_set_resources(struct device *dev)
-{
-#if CONFIG_USBDEBUG
-	struct resource *res;
-	u32 base;
-	u32 old_debug;
-
-	old_debug = get_ehci_debug();
-	set_ehci_debug(0);
-#endif
-	pci_dev_set_resources(dev);
-
-#if CONFIG_USBDEBUG
-	res = find_resource(dev, 0x10);
-	set_ehci_debug(old_debug);
-	if (!res)
-		return;
-	base = res->base;
-	set_ehci_base(base);
-	report_resource_stored(dev, res, "");
-#endif
-
-}
-
 static struct device_operations usb_ops = {
-	.read_resources = pci_dev_read_resources,
-	.set_resources = usb_set_resources, /* pci_dev_set_resources, */
+	.read_resources = pci_ehci_read_resources,
+	.set_resources = pci_dev_set_resources,
 	.enable_resources = pci_dev_enable_resources,
 	.init = usb_init,
 	.scan_bus = 0,
@@ -100,8 +76,8 @@
 
 /*
 static struct device_operations usb_ops2 = {
-	.read_resources = pci_dev_read_resources,
-	.set_resources = usb_set_resources,
+	.read_resources = pci_ehci_read_resources,
+	.set_resources = pci_dev_set_resources,
 	.enable_resources = pci_dev_enable_resources,
 	.init = usb_init2,
 	.scan_bus = 0,
diff --git a/src/southbridge/amd/cimx/sb700/late.c b/src/southbridge/amd/cimx/sb700/late.c
index b259a7b..e2ecdc3 100644
--- a/src/southbridge/amd/cimx/sb700/late.c
+++ b/src/southbridge/amd/cimx/sb700/late.c
@@ -25,6 +25,7 @@
 #include <device/smbus.h>       /* smbus_bus_operations */
 #include <pc80/mc146818rtc.h>
 #include <console/console.h>    /* printk */
+#include <usbdebug.h>
 #include "lpc.h"                /* lpc_read_resources */
 #include "Platform.h"   /* Platfrom Specific Definitions */
 #include "sb_cimx.h"
@@ -120,38 +121,9 @@
 	.device = PCI_DEVICE_ID_ATI_SB700_SATA, //SATA IDE Mode 4390
 };
 
-#if CONFIG_USBDEBUG
-static void usb_set_resources(struct device *dev)
-{
-	struct resource *res;
-	u32 base;
-	u32 old_debug;
-
-	printk(BIOS_SPEW, "SB700 - Late.c - %s - Start.\n", __func__);
-	old_debug = get_ehci_debug();
-	set_ehci_debug(0);
-
-	pci_dev_set_resources(dev);
-
-	res = find_resource(dev, 0x10);
-	set_ehci_debug(old_debug);
-	if (!res)
-		return;
-	base = res->base;
-	set_ehci_base(base);
-	report_resource_stored(dev, res, "");
-	printk(BIOS_SPEW, "SB700 - Late.c - %s - End.\n", __func__);
-}
-#endif
-
-
 static struct device_operations usb_ops = {
-	.read_resources = pci_dev_read_resources,
-#if CONFIG_USBDEBUG
-	.set_resources = usb_set_resources,
-#else
+	.read_resources = pci_ehci_read_resources,
 	.set_resources = pci_dev_set_resources,
-#endif
 	.enable_resources = pci_dev_enable_resources,
 	.init = 0,
 	.scan_bus = 0,
diff --git a/src/southbridge/amd/cimx/sb800/late.c b/src/southbridge/amd/cimx/sb800/late.c
index 74b2d08..90b26ae 100644
--- a/src/southbridge/amd/cimx/sb800/late.c
+++ b/src/southbridge/amd/cimx/sb800/late.c
@@ -26,6 +26,7 @@
 #include <pc80/mc146818rtc.h>
 #include <console/console.h>	/* printk */
 #include <arch/acpi.h>
+#include <usbdebug.h>
 #include "lpc.h"		/* lpc_read_resources */
 #include "SBPLATFORM.h" 	/* Platfrom Specific Definitions */
 #include "cfg.h"		/* sb800 Cimx configuration */
@@ -179,37 +180,9 @@
 	.device = PCI_DEVICE_ID_ATI_SB800_SATA_RAID5,
 };
 
-#if CONFIG_USBDEBUG
-static void usb_set_resources(struct device *dev)
-{
-	struct resource *res;
-	u32 base;
-	u32 old_debug;
-
-	printk(BIOS_DEBUG, "SB800 - Late.c - %s - Start.\n", __func__);
-	old_debug = get_ehci_debug();
-	set_ehci_debug(0);
-
-	pci_dev_set_resources(dev);
-
-	res = find_resource(dev, 0x10);
-	set_ehci_debug(old_debug);
-	if (!res)
-		return;
-	base = res->base;
-	set_ehci_base(base);
-	report_resource_stored(dev, res, "");
-	printk(BIOS_DEBUG, "SB800 - Late.c - %s - End.\n", __func__);
-}
-#endif
-
 static struct device_operations usb_ops = {
-	.read_resources = pci_dev_read_resources,
-#if CONFIG_USBDEBUG
-	.set_resources = usb_set_resources,
-#else
+	.read_resources = pci_ehci_read_resources,
 	.set_resources = pci_dev_set_resources,
-#endif
 	.enable_resources = pci_dev_enable_resources,
 	.init = 0,
 	.scan_bus = 0,
diff --git a/src/southbridge/amd/cimx/sb900/late.c b/src/southbridge/amd/cimx/sb900/late.c
index 947e882..d2ce72c 100644
--- a/src/southbridge/amd/cimx/sb900/late.c
+++ b/src/southbridge/amd/cimx/sb900/late.c
@@ -24,6 +24,7 @@
 #include <device/smbus.h>	/* smbus_bus_operations */
 #include <pc80/mc146818rtc.h>
 #include <console/console.h>	/* printk */
+#include <usbdebug.h>
 #include "lpc.h"		/* lpc_read_resources */
 #include "SbPlatform.h" 	/* Platfrom Specific Definitions */
 #include "chip.h" 		/* struct southbridge_amd_cimx_sb900_config */
@@ -174,31 +175,6 @@
 #endif
 };
 
-
-#if CONFIG_USBDEBUG
-static void usb_set_resources(struct device *dev)
-{
-	struct resource *res;
-	u32 base;
-	u32 old_debug;
-
-	printk(BIOS_DEBUG, "SB900 - Late.c - usb_set_resources - Start.\n");
-	old_debug = get_ehci_debug();
-	set_ehci_debug(0);
-
-	pci_dev_set_resources(dev);
-
-	res = find_resource(dev, 0x10);
-	set_ehci_debug(old_debug);
-	if (!res)
-		return;
-	base = res->base;
-	set_ehci_base(base);
-	report_resource_stored(dev, res, "");
-	printk(BIOS_DEBUG, "SB900 - Late.c - usb_set_resources - End.\n");
-}
-#endif
-
 static void usb_init(struct device *dev)
 {
 	printk(BIOS_DEBUG, "SB900 - Late.c - usb_init - Start.\n");
@@ -208,12 +184,8 @@
 }
 
 static struct device_operations usb_ops = {
-	.read_resources = pci_dev_read_resources,
-#if CONFIG_USBDEBUG
-	.set_resources = usb_set_resources,
-#else
+	.read_resources = pci_ehci_read_resources,
 	.set_resources = pci_dev_set_resources,
-#endif
 	.enable_resources = pci_dev_enable_resources,
 	.init = usb_init,
 	.scan_bus = 0,
diff --git a/src/southbridge/amd/sb600/usb.c b/src/southbridge/amd/sb600/usb.c
index 1ca4ad6..d551661 100644
--- a/src/southbridge/amd/sb600/usb.c
+++ b/src/southbridge/amd/sb600/usb.c
@@ -130,33 +130,9 @@
 	pci_write_config8(dev, 0x54, byte);
 }
 
-static void usb_set_resources(struct device *dev)
-{
-#if CONFIG_USBDEBUG
-	struct resource *res;
-	u32 base;
-	u32 old_debug;
-
-	old_debug = get_ehci_debug();
-	set_ehci_debug(0);
-#endif
-	pci_dev_set_resources(dev);
-
-#if CONFIG_USBDEBUG
-	res = find_resource(dev, 0x10);
-	set_ehci_debug(old_debug);
-	if (!res)
-		return;
-	base = res->base;
-	set_ehci_base(base);
-	report_resource_stored(dev, res, "");
-#endif
-
-}
-
 static struct device_operations usb_ops = {
-	.read_resources = pci_dev_read_resources,
-	.set_resources = usb_set_resources, /* pci_dev_set_resources, */
+	.read_resources = pci_ehci_read_resources,
+	.set_resources = pci_dev_set_resources,
 	.enable_resources = pci_dev_enable_resources,
 	.init = usb_init,
 	/*.enable           = sb600_enable, */
@@ -180,8 +156,8 @@
 };
 
 static struct device_operations usb_ops2 = {
-	.read_resources = pci_dev_read_resources,
-	.set_resources = usb_set_resources, /* pci_dev_set_resources, */
+	.read_resources = pci_ehci_read_resources,
+	.set_resources = pci_dev_set_resources,
 	.enable_resources = pci_dev_enable_resources,
 	.init = usb_init2,
 	/*.enable           = sb600_enable, */
diff --git a/src/southbridge/amd/sb700/usb.c b/src/southbridge/amd/sb700/usb.c
index 44f0caa..d3a9f3e 100644
--- a/src/southbridge/amd/sb700/usb.c
+++ b/src/southbridge/amd/sb700/usb.c
@@ -182,32 +182,9 @@
 	printk(BIOS_DEBUG, "rpr 6.23, final dword=%x\n", dword);
 }
 
-static void usb_set_resources(struct device *dev)
-{
-#if CONFIG_USBDEBUG
-	struct resource *res;
-	u32 base;
-	u32 old_debug;
-
-	old_debug = get_ehci_debug();
-	set_ehci_debug(0);
-#endif
-	pci_dev_set_resources(dev);
-
-#if CONFIG_USBDEBUG
-	res = find_resource(dev, 0x10);
-	set_ehci_debug(old_debug);
-	if (!res)
-		return;
-	base = res->base;
-	set_ehci_base(base);
-	report_resource_stored(dev, res, "");
-#endif
-}
-
 static struct device_operations usb_ops = {
-	.read_resources = pci_dev_read_resources,
-	.set_resources = usb_set_resources, /* pci_dev_set_resources, */
+	.read_resources = pci_ehci_read_resources,
+	.set_resources = pci_dev_set_resources,
 	.enable_resources = pci_dev_enable_resources,
 	.init = usb_init,
 	.scan_bus = 0,
@@ -247,8 +224,8 @@
 };
 
 static struct device_operations usb_ops2 = {
-	.read_resources = pci_dev_read_resources,
-	.set_resources = usb_set_resources, /* pci_dev_set_resources, */
+	.read_resources = pci_ehci_read_resources,
+	.set_resources = pci_dev_set_resources,
 	.enable_resources = pci_dev_enable_resources,
 	.init = usb_init2,
 	.scan_bus = 0,
diff --git a/src/southbridge/amd/sb800/usb.c b/src/southbridge/amd/sb800/usb.c
index d326b8c..305a7e6 100644
--- a/src/southbridge/amd/sb800/usb.c
+++ b/src/southbridge/amd/sb800/usb.c
@@ -147,33 +147,9 @@
 #endif
 }
 
-static void usb_set_resources(struct device *dev)
-{
-#if CONFIG_USBDEBUG
-	struct resource *res;
-	u32 base;
-	u32 old_debug;
-
-	old_debug = get_ehci_debug();
-	set_ehci_debug(0);
-#endif
-	pci_dev_set_resources(dev);
-
-#if CONFIG_USBDEBUG
-	res = find_resource(dev, 0x10);
-	set_ehci_debug(old_debug);
-	if (!res)
-		return;
-	base = res->base;
-	set_ehci_base(base);
-	report_resource_stored(dev, res, "");
-#endif
-
-}
-
 static struct device_operations usb_ops = {
-	.read_resources = pci_dev_read_resources,
-	.set_resources = usb_set_resources, /* pci_dev_set_resources, */
+	.read_resources = pci_ehci_read_resources,
+	.set_resources = pci_dev_set_resources,
 	.enable_resources = pci_dev_enable_resources,
 	.init = usb_init,
 	.scan_bus = 0,
@@ -212,8 +188,8 @@
 };
 
 static struct device_operations usb_ops2 = {
-	.read_resources = pci_dev_read_resources,
-	.set_resources = usb_set_resources, /* pci_dev_set_resources, */
+	.read_resources = pci_ehci_read_resources,
+	.set_resources = pci_dev_set_resources,
 	.enable_resources = pci_dev_enable_resources,
 	.init = usb_init2,
 	.scan_bus = 0,
diff --git a/src/southbridge/intel/bd82x6x/usb_ehci.c b/src/southbridge/intel/bd82x6x/usb_ehci.c
index aec230c..d2bf690 100644
--- a/src/southbridge/intel/bd82x6x/usb_ehci.c
+++ b/src/southbridge/intel/bd82x6x/usb_ehci.c
@@ -65,37 +65,13 @@
 	pci_write_config8(dev, 0x80, access_cntl);
 }
 
-static void usb_ehci_set_resources(struct device *dev)
-{
-#if CONFIG_USBDEBUG
-	struct resource *res;
-	u32 base;
-	u32 usb_debug;
-
-	usb_debug = get_ehci_debug();
-	set_ehci_debug(0);
-#endif
-	pci_dev_set_resources(dev);
-
-#if CONFIG_USBDEBUG
-	res = find_resource(dev, 0x10);
-	set_ehci_debug(usb_debug);
-	if (!res) return;
-	base = res->base;
-	set_ehci_base(base);
-	report_resource_stored(dev, res, "");
-#endif
-}
-
-
-
 static struct pci_operations lops_pci = {
 	.set_subsystem	= &usb_ehci_set_subsystem,
 };
 
 static struct device_operations usb_ehci_ops = {
-	.read_resources		= pci_dev_read_resources,
-	.set_resources		= usb_ehci_set_resources,
+	.read_resources		= pci_ehci_read_resources,
+	.set_resources		= pci_dev_set_resources,
 	.enable_resources	= pci_dev_enable_resources,
 	.init			= usb_ehci_init,
 	.scan_bus		= 0,
diff --git a/src/southbridge/intel/i82801gx/usb_ehci.c b/src/southbridge/intel/i82801gx/usb_ehci.c
index 4c9be71..8dcda39 100644
--- a/src/southbridge/intel/i82801gx/usb_ehci.c
+++ b/src/southbridge/intel/i82801gx/usb_ehci.c
@@ -83,37 +83,13 @@
 	pci_write_config8(dev, 0x80, access_cntl);
 }
 
-static void usb_ehci_set_resources(struct device *dev)
-{
-#if CONFIG_USBDEBUG
-	struct resource *res;
-	u32 base;
-	u32 usb_debug;
-
-	usb_debug = get_ehci_debug();
-	set_ehci_debug(0);
-#endif
-	pci_dev_set_resources(dev);
-
-#if CONFIG_USBDEBUG
-	res = find_resource(dev, 0x10);
-	set_ehci_debug(usb_debug);
-	if (!res) return;
-	base = res->base;
-	set_ehci_base(base);
-	report_resource_stored(dev, res, "");
-#endif
-}
-
-
-
 static struct pci_operations lops_pci = {
 	.set_subsystem	= &usb_ehci_set_subsystem,
 };
 
 static struct device_operations usb_ehci_ops = {
-	.read_resources		= pci_dev_read_resources,
-	.set_resources		= usb_ehci_set_resources,
+	.read_resources		= pci_ehci_read_resources,
+	.set_resources		= pci_dev_set_resources,
 	.enable_resources	= pci_dev_enable_resources,
 	.init			= usb_ehci_init,
 	.scan_bus		= 0,
diff --git a/src/southbridge/intel/i82801ix/usb_ehci.c b/src/southbridge/intel/i82801ix/usb_ehci.c
index 7f91174..b6c0edd 100644
--- a/src/southbridge/intel/i82801ix/usb_ehci.c
+++ b/src/southbridge/intel/i82801ix/usb_ehci.c
@@ -58,29 +58,6 @@
 	pci_write_config8(dev, 0x80, access_cntl);
 }
 
-static void usb_ehci_set_resources(struct device *dev)
-{
-#if CONFIG_USBDEBUG
-	struct resource *res;
-	u32 base;
-	u32 usb_debug;
-
-	usb_debug = get_ehci_debug();
-	set_ehci_debug(0);
-#endif
-	pci_dev_set_resources(dev);
-
-#if CONFIG_USBDEBUG
-	res = find_resource(dev, 0x10);
-	set_ehci_debug(usb_debug);
-	if (!res) return;
-	base = res->base;
-	set_ehci_base(base);
-	report_resource_stored(dev, res, "");
-#endif
-}
-
-
 static const unsigned short pci_device_ids[] = {
 	0x293a,
 	0x293c,
@@ -92,8 +69,8 @@
 };
 
 static struct device_operations usb_ehci_ops = {
-	.read_resources		= pci_dev_read_resources,
-	.set_resources		= usb_ehci_set_resources,
+	.read_resources		= pci_ehci_read_resources,
+	.set_resources		= pci_dev_set_resources,
 	.enable_resources	= pci_dev_enable_resources,
 	.init			= usb_ehci_init,
 	.scan_bus		= 0,
diff --git a/src/southbridge/intel/lynxpoint/usb_ehci.c b/src/southbridge/intel/lynxpoint/usb_ehci.c
index b0297a2..fd7c659 100644
--- a/src/southbridge/intel/lynxpoint/usb_ehci.c
+++ b/src/southbridge/intel/lynxpoint/usb_ehci.c
@@ -65,37 +65,13 @@
 	pci_write_config8(dev, 0x80, access_cntl);
 }
 
-static void usb_ehci_set_resources(struct device *dev)
-{
-#if CONFIG_USBDEBUG
-	struct resource *res;
-	u32 base;
-	u32 usb_debug;
-
-	usb_debug = get_ehci_debug();
-	set_ehci_debug(0);
-#endif
-	pci_dev_set_resources(dev);
-
-#if CONFIG_USBDEBUG
-	res = find_resource(dev, 0x10);
-	set_ehci_debug(usb_debug);
-	if (!res) return;
-	base = res->base;
-	set_ehci_base(base);
-	report_resource_stored(dev, res, "");
-#endif
-}
-
-
-
 static struct pci_operations lops_pci = {
 	.set_subsystem	= &usb_ehci_set_subsystem,
 };
 
 static struct device_operations usb_ehci_ops = {
-	.read_resources		= pci_dev_read_resources,
-	.set_resources		= usb_ehci_set_resources,
+	.read_resources		= pci_ehci_read_resources,
+	.set_resources		= pci_dev_set_resources,
 	.enable_resources	= pci_dev_enable_resources,
 	.init			= usb_ehci_init,
 	.scan_bus		= 0,
diff --git a/src/southbridge/nvidia/mcp55/usb2.c b/src/southbridge/nvidia/mcp55/usb2.c
index c97b25e..1f129ec 100644
--- a/src/southbridge/nvidia/mcp55/usb2.c
+++ b/src/southbridge/nvidia/mcp55/usb2.c
@@ -37,32 +37,9 @@
 	pci_write_config32(dev, 0xf8, dword);
 }
 
-static void usb2_set_resources(struct device *dev)
-{
-#if CONFIG_USBDEBUG
-	struct resource *res;
-	unsigned base;
-	unsigned old_debug;
-
-	old_debug = get_ehci_debug();
-	set_ehci_debug(0);
-#endif
-	pci_dev_set_resources(dev);
-
-#if CONFIG_USBDEBUG
-	res = find_resource(dev, 0x10);
-	set_ehci_debug(old_debug);
-	if (!res) return;
-	base = res->base;
-	set_ehci_base(base);
-	report_resource_stored(dev, res, "");
-#endif
-
-}
-
 static struct device_operations usb2_ops  = {
-	.read_resources	= pci_dev_read_resources,
-	.set_resources	= usb2_set_resources,
+	.read_resources	= pci_ehci_read_resources,
+	.set_resources	= pci_dev_set_resources,
 	.enable_resources	= pci_dev_enable_resources,
 	.init		= usb2_init,
 //	.enable		= mcp55_enable,
diff --git a/src/southbridge/sis/sis966/usb2.c b/src/southbridge/sis/sis966/usb2.c
index a5d4127..195c982 100644
--- a/src/southbridge/sis/sis966/usb2.c
+++ b/src/southbridge/sis/sis966/usb2.c
@@ -112,28 +112,6 @@
         print_debug("USB 2.0 INIT:<----------\n");
 }
 
-static void usb2_set_resources(struct device *dev)
-{
-#if CONFIG_USBDEBUG
-	struct resource *res;
-	unsigned base;
-	unsigned old_debug;
-
-	old_debug = get_ehci_debug();
-	set_ehci_debug(0);
-#endif
-	pci_dev_set_resources(dev);
-
-#if CONFIG_USBDEBUG
-	res = find_resource(dev, 0x10);
-	set_ehci_debug(old_debug);
-	if (!res) return;
-	base = res->base;
-	set_ehci_base(base);
-	report_resource_stored(dev, res, "");
-#endif
-}
-
 static void lpci_set_subsystem(device_t dev, unsigned vendor, unsigned device)
 {
 	pci_write_config32(dev, 0x40,
@@ -145,8 +123,8 @@
 };
 
 static struct device_operations usb2_ops  = {
-	.read_resources	= pci_dev_read_resources,
-	.set_resources	= usb2_set_resources,
+	.read_resources	= pci_ehci_read_resources,
+	.set_resources	= pci_dev_set_resources,
 	.enable_resources	= pci_dev_enable_resources,
 	.init		= usb2_init,
 //	.enable		= sis966_enable,