}
 }
 
-static char *pci_classes_str(u8 class)
-{
-       switch (class) {
-       case PCI_CLASS_NOT_DEFINED:
-               return "Build before PCI Rev2.0";
-               break;
-       case PCI_BASE_CLASS_STORAGE:
-               return "Mass storage controller";
-               break;
-       case PCI_BASE_CLASS_NETWORK:
-               return "Network controller";
-               break;
-       case PCI_BASE_CLASS_DISPLAY:
-               return "Display controller";
-               break;
-       case PCI_BASE_CLASS_MULTIMEDIA:
-               return "Multimedia device";
-               break;
-       case PCI_BASE_CLASS_MEMORY:
-               return "Memory controller";
-               break;
-       case PCI_BASE_CLASS_BRIDGE:
-               return "Bridge device";
-               break;
-       case PCI_BASE_CLASS_COMMUNICATION:
-               return "Simple comm. controller";
-               break;
-       case PCI_BASE_CLASS_SYSTEM:
-               return "Base system peripheral";
-               break;
-       case PCI_BASE_CLASS_INPUT:
-               return "Input device";
-               break;
-       case PCI_BASE_CLASS_DOCKING:
-               return "Docking station";
-               break;
-       case PCI_BASE_CLASS_PROCESSOR:
-               return "Processor";
-               break;
-       case PCI_BASE_CLASS_SERIAL:
-               return "Serial bus controller";
-               break;
-       case PCI_BASE_CLASS_INTELLIGENT:
-               return "Intelligent controller";
-               break;
-       case PCI_BASE_CLASS_SATELLITE:
-               return "Satellite controller";
-               break;
-       case PCI_BASE_CLASS_CRYPT:
-               return "Cryptographic device";
-               break;
-       case PCI_BASE_CLASS_SIGNAL_PROCESSING:
-               return "DSP";
-               break;
-       case PCI_CLASS_OTHERS:
-               return "Does not fit any class";
-               break;
-       default:
-       return  "???";
-               break;
-       };
-}
 
 /*
  * Subroutine:  pci_header_show_brief
 
        printf("0x%.4x     0x%.4x     %-23s 0x%.2x\n",
               vendor, device,
-              pci_classes_str(class), subclass);
+              pci_class_str(class), subclass);
 }
 
 /*
        PRINT ("  status register =             0x%.4x\n", word, PCI_STATUS);
        PRINT ("  revision ID =                 0x%.2x\n", byte, PCI_REVISION_ID);
        PRINT2("  class code =                  0x%.2x (%s)\n", byte, PCI_CLASS_CODE,
-                                                               pci_classes_str);
+                                                               pci_class_str);
        PRINT ("  sub class code =              0x%.2x\n", byte, PCI_CLASS_SUB_CODE);
        PRINT ("  programming interface =       0x%.2x\n", byte, PCI_CLASS_PROG);
        PRINT ("  cache line =                  0x%.2x\n", byte, PCI_CACHE_LINE_SIZE);
 
 extern int pciauto_config_device(struct pci_controller *hose, pci_dev_t dev);
 extern void pciauto_config_init(struct pci_controller *hose);
 
+#if defined(CONFIG_CMD_PCI) || defined(CONFIG_PCI_SCAN_SHOW)
+const char * pci_class_str(u8 class)
+{
+       switch (class) {
+       case PCI_CLASS_NOT_DEFINED:
+               return "Build before PCI Rev2.0";
+               break;
+       case PCI_BASE_CLASS_STORAGE:
+               return "Mass storage controller";
+               break;
+       case PCI_BASE_CLASS_NETWORK:
+               return "Network controller";
+               break;
+       case PCI_BASE_CLASS_DISPLAY:
+               return "Display controller";
+               break;
+       case PCI_BASE_CLASS_MULTIMEDIA:
+               return "Multimedia device";
+               break;
+       case PCI_BASE_CLASS_MEMORY:
+               return "Memory controller";
+               break;
+       case PCI_BASE_CLASS_BRIDGE:
+               return "Bridge device";
+               break;
+       case PCI_BASE_CLASS_COMMUNICATION:
+               return "Simple comm. controller";
+               break;
+       case PCI_BASE_CLASS_SYSTEM:
+               return "Base system peripheral";
+               break;
+       case PCI_BASE_CLASS_INPUT:
+               return "Input device";
+               break;
+       case PCI_BASE_CLASS_DOCKING:
+               return "Docking station";
+               break;
+       case PCI_BASE_CLASS_PROCESSOR:
+               return "Processor";
+               break;
+       case PCI_BASE_CLASS_SERIAL:
+               return "Serial bus controller";
+               break;
+       case PCI_BASE_CLASS_INTELLIGENT:
+               return "Intelligent controller";
+               break;
+       case PCI_BASE_CLASS_SATELLITE:
+               return "Satellite controller";
+               break;
+       case PCI_BASE_CLASS_CRYPT:
+               return "Cryptographic device";
+               break;
+       case PCI_BASE_CLASS_SIGNAL_PROCESSING:
+               return "DSP";
+               break;
+       case PCI_CLASS_OTHERS:
+               return "Does not fit any class";
+               break;
+       default:
+       return  "???";
+               break;
+       };
+}
+#endif /* CONFIG_CMD_PCI || CONFIG_PCI_SCAN_SHOW */
+
 int __pci_skip_dev(struct pci_controller *hose, pci_dev_t dev)
 {
        /*
 
                pci_hose_read_config_word(hose, dev, PCI_VENDOR_ID, &vendor);
 
-               if (vendor != 0xffff && vendor != 0x0000) {
+               if (vendor == 0xffff || vendor == 0x0000)
+                       continue;
 
-                       if (!PCI_FUNC(dev))
-                               found_multi = header_type & 0x80;
+               if (!PCI_FUNC(dev))
+                       found_multi = header_type & 0x80;
 
-                       debug ("PCI Scan: Found Bus %d, Device %d, Function %d\n",
-                               PCI_BUS(dev), PCI_DEV(dev), PCI_FUNC(dev) );
+               debug ("PCI Scan: Found Bus %d, Device %d, Function %d\n",
+                       PCI_BUS(dev), PCI_DEV(dev), PCI_FUNC(dev) );
 
-                       pci_hose_read_config_word(hose, dev, PCI_DEVICE_ID, &device);
-                       pci_hose_read_config_word(hose, dev, PCI_CLASS_DEVICE, &class);
+               pci_hose_read_config_word(hose, dev, PCI_DEVICE_ID, &device);
+               pci_hose_read_config_word(hose, dev, PCI_CLASS_DEVICE, &class);
 
-                       cfg = pci_find_config(hose, class, vendor, device,
-                                             PCI_BUS(dev), PCI_DEV(dev), PCI_FUNC(dev));
-                       if (cfg) {
-                               cfg->config_device(hose, dev, cfg);
-                               sub_bus = max(sub_bus, hose->current_busno);
+               cfg = pci_find_config(hose, class, vendor, device,
+                                     PCI_BUS(dev), PCI_DEV(dev), PCI_FUNC(dev));
+               if (cfg) {
+                       cfg->config_device(hose, dev, cfg);
+                       sub_bus = max(sub_bus, hose->current_busno);
 #ifdef CONFIG_PCI_PNP
-                       } else {
-                               int n = pciauto_config_device(hose, dev);
+               } else {
+                       int n = pciauto_config_device(hose, dev);
 
-                               sub_bus = max(sub_bus, n);
+                       sub_bus = max(sub_bus, n);
 #endif
-                       }
-                       if (hose->fixup_irq)
-                               hose->fixup_irq(hose, dev);
+               }
+               if (hose->fixup_irq)
+                       hose->fixup_irq(hose, dev);
 
 #ifdef CONFIG_PCI_SCAN_SHOW
-                       if (pci_print_dev(hose, dev)) {
-                               unsigned char int_line;
-
-                               pci_hose_read_config_byte(hose, dev, PCI_INTERRUPT_LINE,
-                                                         &int_line);
-                               printf("        %02x  %02x  %04x  %04x  %04x  %02x\n",
-                                      PCI_BUS(dev), PCI_DEV(dev), vendor, device, class,
-                                      int_line);
-                       }
-#endif
+               if (pci_print_dev(hose, dev)) {
+                       printf("        %02x:%02x.%x - %04x:%04x - %s\n",
+                              PCI_BUS(dev), PCI_DEV(dev), PCI_FUNC(dev),
+                              vendor, device, pci_class_str(class >> 8));
                }
+#endif
        }
 
        return sub_bus;