diff --git a/drivers/pci/pci_auto.c b/drivers/pci/pci_auto.c
index a7af8cb..7ff282b 100644
--- a/drivers/pci/pci_auto.c
+++ b/drivers/pci/pci_auto.c
@@ -14,12 +14,6 @@
 #include <errno.h>
 #include <pci.h>
 
-#ifdef DEBUG
-#define DEBUGF(x...) printf(x)
-#else
-#define DEBUGF(x...)
-#endif /* DEBUG */
-
 /* the user can define CONFIG_SYS_PCI_CACHE_LINE_SIZE to avoid problems */
 #ifndef CONFIG_SYS_PCI_CACHE_LINE_SIZE
 #define CONFIG_SYS_PCI_CACHE_LINE_SIZE	8
@@ -50,20 +44,21 @@
 	pci_addr_t addr;
 
 	if (!res) {
-		DEBUGF("No resource");
+		debug("No resource");
 		goto error;
 	}
 
 	addr = ((res->bus_lower - 1) | (size - 1)) + 1;
 
 	if (addr - res->bus_start + size > res->size) {
-		DEBUGF("No room in resource");
+		debug("No room in resource");
 		goto error;
 	}
 
 	res->bus_lower = addr + size;
 
-	DEBUGF("address=0x%llx bus_lower=0x%llx", (u64)addr, (u64)res->bus_lower);
+	debug("address=0x%llx bus_lower=0x%llx", (unsigned long long)addr,
+	      (unsigned long long)res->bus_lower);
 
 	*bar = addr;
 	return 0;
@@ -122,7 +117,8 @@
 			bar_res = io;
 #endif
 
-			DEBUGF("PCI Autoconfig: BAR %d, I/O, size=0x%llx, ", bar_nr, (u64)bar_size);
+			debug("PCI Autoconfig: BAR %d, I/O, size=0x%llx, ",
+			      bar_nr, (unsigned long long)bar_size);
 		} else {
 			if ((bar_response & PCI_BASE_ADDRESS_MEM_TYPE_MASK) ==
 			     PCI_BASE_ADDRESS_MEM_TYPE_64) {
@@ -152,7 +148,8 @@
 				bar_res = mem;
 #endif
 
-			DEBUGF("PCI Autoconfig: BAR %d, Mem, size=0x%llx, ", bar_nr, (u64)bar_size);
+			debug("PCI Autoconfig: BAR %d, Mem, size=0x%llx, ",
+			      bar_nr, (unsigned long long)bar_size);
 		}
 
 #ifndef CONFIG_PCI_ENUM_ONLY
@@ -179,7 +176,7 @@
 		cmdstat |= (bar_response & PCI_BASE_ADDRESS_SPACE) ?
 			PCI_COMMAND_IO : PCI_COMMAND_MEMORY;
 
-		DEBUGF("\n");
+		debug("\n");
 
 		bar_nr++;
 	}
@@ -193,14 +190,15 @@
 		pci_hose_read_config_dword(hose, dev, rom_addr, &bar_response);
 		if (bar_response) {
 			bar_size = -(bar_response & ~1);
-			DEBUGF("PCI Autoconfig: ROM, size=%#x, ", bar_size);
+			debug("PCI Autoconfig: ROM, size=%#x, ",
+			      (unsigned int)bar_size);
 			if (pciauto_region_allocate(mem, bar_size,
 						    &bar_value) == 0) {
 				pci_hose_write_config_dword(hose, dev, rom_addr,
 							    bar_value);
 			}
 			cmdstat |= PCI_COMMAND_MEMORY;
-			DEBUGF("\n");
+			debug("\n");
 		}
 	}
 
@@ -411,7 +409,7 @@
 	if (hose->pci_mem) {
 		pciauto_region_init(hose->pci_mem);
 
-		DEBUGF("PCI Autoconfig: Bus Memory region: [0x%llx-0x%llx],\n"
+		debug("PCI Autoconfig: Bus Memory region: [0x%llx-0x%llx],\n"
 		       "\t\tPhysical Memory [%llx-%llxx]\n",
 		    (u64)hose->pci_mem->bus_start,
 		    (u64)(hose->pci_mem->bus_start + hose->pci_mem->size - 1),
@@ -422,7 +420,7 @@
 	if (hose->pci_prefetch) {
 		pciauto_region_init(hose->pci_prefetch);
 
-		DEBUGF("PCI Autoconfig: Bus Prefetchable Mem: [0x%llx-0x%llx],\n"
+		debug("PCI Autoconfig: Bus Prefetchable Mem: [0x%llx-0x%llx],\n"
 		       "\t\tPhysical Memory [%llx-%llx]\n",
 		    (u64)hose->pci_prefetch->bus_start,
 		    (u64)(hose->pci_prefetch->bus_start +
@@ -435,7 +433,7 @@
 	if (hose->pci_io) {
 		pciauto_region_init(hose->pci_io);
 
-		DEBUGF("PCI Autoconfig: Bus I/O region: [0x%llx-0x%llx],\n"
+		debug("PCI Autoconfig: Bus I/O region: [0x%llx-0x%llx],\n"
 		       "\t\tPhysical Memory: [%llx-%llx]\n",
 		    (u64)hose->pci_io->bus_start,
 		    (u64)(hose->pci_io->bus_start + hose->pci_io->size - 1),
@@ -475,8 +473,8 @@
 
 	switch (class) {
 	case PCI_CLASS_BRIDGE_PCI:
-		DEBUGF("PCI Autoconfig: Found P2P bridge, device %d\n",
-		       PCI_DEV(dev));
+		debug("PCI Autoconfig: Found P2P bridge, device %d\n",
+		      PCI_DEV(dev));
 
 		pciauto_setup_device(hose, dev, 2, pci_mem,
 				     pci_prefetch, pci_io);
@@ -512,8 +510,8 @@
 		pciauto_setup_device(hose, dev, 0, pci_mem,
 				     pci_prefetch, pci_io);
 
-		DEBUGF("PCI Autoconfig: Found P2CardBus bridge, device %d\n",
-			PCI_DEV(dev));
+		debug("PCI Autoconfig: Found P2CardBus bridge, device %d\n",
+		      PCI_DEV(dev));
 
 #ifndef CONFIG_DM_PCI
 		hose->current_busno++;
@@ -522,8 +520,8 @@
 
 #if defined(CONFIG_PCIAUTO_SKIP_HOST_BRIDGE)
 	case PCI_CLASS_BRIDGE_OTHER:
-		DEBUGF("PCI Autoconfig: Skipping bridge device %d\n",
-		       PCI_DEV(dev));
+		debug("PCI Autoconfig: Skipping bridge device %d\n",
+		      PCI_DEV(dev));
 		break;
 #endif
 #if defined(CONFIG_MPC834x) && !defined(CONFIG_VME8349)
@@ -534,14 +532,14 @@
 		 * device claiming resources io/mem/irq.. we only allow for
 		 * the PIMMR window to be allocated (BAR0 - 1MB size)
 		 */
-		DEBUGF("PCI Autoconfig: Broken bridge found, only minimal config\n");
+		debug("PCI Autoconfig: Broken bridge found, only minimal config\n");
 		pciauto_setup_device(hose, dev, 0, hose->pci_mem,
 			hose->pci_prefetch, hose->pci_io);
 		break;
 #endif
 
 	case PCI_CLASS_PROCESSOR_POWERPC: /* an agent or end-point */
-		DEBUGF("PCI AutoConfig: Found PowerPC device\n");
+		debug("PCI AutoConfig: Found PowerPC device\n");
 
 	default:
 		pciauto_setup_device(hose, dev, 6, pci_mem,
