]> git.karo-electronics.de Git - karo-tx-uboot.git/blobdiff - drivers/pci/pci.c
rename CFG_ macros to CONFIG_SYS
[karo-tx-uboot.git] / drivers / pci / pci.c
index 7944b6684aeee601b2ec7bd380728988ac469c9e..41780dbe74130e889f13bcf3460f936fce2be69d 100644 (file)
 
 #include <common.h>
 
-#ifdef CONFIG_PCI
-
 #include <command.h>
 #include <asm/processor.h>
 #include <asm/io.h>
 #include <pci.h>
 
 #define PCI_HOSE_OP(rw, size, type)                                    \
-int pci_hose_##rw##_config_##size(struct pci_controller *hose,                 \
-                                 pci_dev_t dev,                        \
+int pci_hose_##rw##_config_##size(struct pci_controller *hose,         \
+                                 pci_dev_t dev,                        \
                                  int offset, type value)               \
 {                                                                      \
        return hose->rw##_##size(hose, dev, offset, value);             \
@@ -77,7 +75,7 @@ PCI_OP(write, dword, u32, )
 
 #define PCI_READ_VIA_DWORD_OP(size, type, off_mask)                    \
 int pci_hose_read_config_##size##_via_dword(struct pci_controller *hose,\
-                                       pci_dev_t dev,                  \
+                                       pci_dev_t dev,                  \
                                        int offset, type val)           \
 {                                                                      \
        u32 val32;                                                      \
@@ -94,7 +92,7 @@ int pci_hose_read_config_##size##_via_dword(struct pci_controller *hose,\
 
 #define PCI_WRITE_VIA_DWORD_OP(size, type, off_mask, val_mask)         \
 int pci_hose_write_config_##size##_via_dword(struct pci_controller *hose,\
-                                            pci_dev_t dev,             \
+                                            pci_dev_t dev,             \
                                             int offset, type val)      \
 {                                                                      \
        u32 val32, mask, ldata, shift;                                  \
@@ -159,7 +157,7 @@ pci_dev_t pci_find_devices(struct pci_device_id *ids, int index)
 
        for (hose = hose_head; hose; hose = hose->next)
        {
-#ifdef CFG_SCSI_SCAN_BUS_REVERSE
+#ifdef CONFIG_SYS_SCSI_SCAN_BUS_REVERSE
                for (bus = hose->last_busno; bus >= hose->first_busno; bus--)
 #else
                for (bus = hose->first_busno; bus <= hose->last_busno; bus++)
@@ -221,7 +219,7 @@ pci_dev_t pci_find_device(unsigned int vendor, unsigned int device, int index)
  */
 
 unsigned long pci_hose_phys_to_bus (struct pci_controller *hose,
-                                   unsigned long phys_addr,
+                                   phys_addr_t phys_addr,
                                    unsigned long flags)
 {
        struct pci_region *res;
@@ -253,9 +251,9 @@ Done:
        return 0;
 }
 
-unsigned long pci_hose_bus_to_phys(struct pci_controller* hose,
-                                  unsigned long bus_addr,
-                                  unsigned long flags)
+phys_addr_t pci_hose_bus_to_phys(struct pci_controller* hose,
+                                unsigned long bus_addr,
+                                unsigned long flags)
 {
        struct pci_region *res;
        int i;
@@ -411,6 +409,40 @@ void pci_cfgfunc_do_nothing(struct pci_controller *hose,
 extern int pciauto_config_device(struct pci_controller *hose, pci_dev_t dev);
 extern void pciauto_config_init(struct pci_controller *hose);
 
+int __pci_skip_dev(struct pci_controller *hose, pci_dev_t dev)
+{
+       /*
+        * Check if pci device should be skipped in configuration
+        */
+       if (dev == PCI_BDF(hose->first_busno, 0, 0)) {
+#if defined(CONFIG_PCI_CONFIG_HOST_BRIDGE) /* don't skip host bridge */
+               /*
+                * Only skip configuration if "pciconfighost" is not set
+                */
+               if (getenv("pciconfighost") == NULL)
+                       return 1;
+#else
+               return 1;
+#endif
+       }
+
+       return 0;
+}
+int pci_skip_dev(struct pci_controller *hose, pci_dev_t dev)
+       __attribute__((weak, alias("__pci_skip_dev")));
+
+#ifdef CONFIG_PCI_SCAN_SHOW
+int __pci_print_dev(struct pci_controller *hose, pci_dev_t dev)
+{
+       if (dev == PCI_BDF(hose->first_busno, 0, 0))
+               return 0;
+
+       return 1;
+}
+int pci_print_dev(struct pci_controller *hose, pci_dev_t dev)
+       __attribute__((weak, alias("__pci_print_dev")));
+#endif /* CONFIG_PCI_SCAN_SHOW */
+
 int pci_hose_scan_bus(struct pci_controller *hose, int bus)
 {
        unsigned int sub_bus, found_multi=0;
@@ -423,25 +455,10 @@ int pci_hose_scan_bus(struct pci_controller *hose, int bus)
 
        for (dev =  PCI_BDF(bus,0,0);
             dev <  PCI_BDF(bus,PCI_MAX_PCI_DEVICES-1,PCI_MAX_PCI_FUNCTIONS-1);
-            dev += PCI_BDF(0,0,1))
-       {
+            dev += PCI_BDF(0,0,1)) {
 
-       /* Bus 0 is not necessarily PCI bridge. */
-#if defined(CONFIG_PCI_SKIP_HOST_BRIDGE)
-               /* Skip our host bridge */
-               if ( dev == PCI_BDF(hose->first_busno,0,0) ) {
-#if defined(CONFIG_PCI_CONFIG_HOST_BRIDGE)              /* don't skip host bridge */
-                       /*
-                        * Only skip hostbridge configuration if "pciconfighost" is not set
-                        */
-                       if (getenv("pciconfighost") == NULL) {
-                               continue; /* Skip our host bridge */
-                       }
-#else /* CONFIG_PCI_CONFIG_HOST_BRIDGE */
-                       continue; /* Skip our host bridge */
-#endif /* CONFIG_PCI_CONFIG_HOST_BRIDGE */
-               }
-#endif /* CONFIG_PCI_SKIP_HOST_BRIDGE */
+               if (pci_skip_dev(hose, dev))
+                       continue;
 
                if (PCI_FUNC(dev) && !found_multi)
                        continue;
@@ -477,18 +494,14 @@ int pci_hose_scan_bus(struct pci_controller *hose, int bus)
                                hose->fixup_irq(hose, dev);
 
 #ifdef CONFIG_PCI_SCAN_SHOW
-#if defined(CONFIG_PCI_SKIP_HOST_BRIDGE)
-                       /* Skip our host bridge */
-                       if ( dev != PCI_BDF(hose->first_busno,0,0) )
-#endif
-                       {
-                           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);
+                       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
                }
@@ -529,5 +542,3 @@ void pci_init(void)
        /* now call board specific pci_init()... */
        pci_init_board();
 }
-
-#endif /* CONFIG_PCI */