hose->region_count = r - hose->regions;
                hose->first_busno=first_free_busno;
 
-               pci_setup_indirect(hose, (int) &pci->cfg_addr, (int) &pci->cfg_data);
-
-               fsl_pci_init(hose);
+               fsl_pci_init(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data);
 
                first_free_busno=hose->last_busno+1;
                printf("    PCIE1 on bus %02x - %02x\n",
                               PCI_REGION_IO);
                hose->region_count = r - hose->regions;
                hose->first_busno=first_free_busno;
-               pci_setup_indirect(hose, (int) &pci->cfg_addr, (int) &pci->cfg_data);
 
-               fsl_pci_init(hose);
+               fsl_pci_init(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data);
                first_free_busno=hose->last_busno+1;
                printf ("PCI1 on bus %02x - %02x\n",
                        hose->first_busno,hose->last_busno);
                               PCI_REGION_IO);
                hose->region_count = r - hose->regions;
                hose->first_busno=first_free_busno;
-               pci_setup_indirect(hose, (int) &pci->cfg_addr, (int) &pci->cfg_data);
 
-               fsl_pci_init(hose);
+               fsl_pci_init(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data);
                first_free_busno=hose->last_busno+1;
                printf ("PCI2 on bus %02x - %02x\n",
                        hose->first_busno,hose->last_busno);
 
                hose->region_count = r - hose->regions;
 
                hose->first_busno=first_free_busno;
-               pci_setup_indirect(hose, (int) &pci->cfg_addr, (int) &pci->cfg_data);
 
-               fsl_pci_init(hose);
+               fsl_pci_init(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data);
 
                first_free_busno=hose->last_busno+1;
                printf ("    PCIE3 on bus %02x - %02x\n",
                hose->region_count = r - hose->regions;
                hose->first_busno=first_free_busno;
 
-               pci_setup_indirect(hose, (int) &pci->cfg_addr, (int) &pci->cfg_data);
-
-               fsl_pci_init(hose);
+               fsl_pci_init(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data);
 
                first_free_busno=hose->last_busno+1;
                printf("    PCIE1 on bus %02x - %02x\n",
 #endif
                hose->region_count = r - hose->regions;
                hose->first_busno=first_free_busno;
-               pci_setup_indirect(hose, (int) &pci->cfg_addr, (int) &pci->cfg_data);
 
-               fsl_pci_init(hose);
+               fsl_pci_init(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data);
                first_free_busno=hose->last_busno+1;
                printf ("    PCIE2 on bus %02x - %02x\n",
                        hose->first_busno,hose->last_busno);
 #endif
                hose->region_count = r - hose->regions;
                hose->first_busno=first_free_busno;
-               pci_setup_indirect(hose, (int) &pci->cfg_addr, (int) &pci->cfg_data);
 
-               fsl_pci_init(hose);
+               fsl_pci_init(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data);
                first_free_busno=hose->last_busno+1;
                printf ("PCI on bus %02x - %02x\n",
                        hose->first_busno,hose->last_busno);
 
 #endif
                hose->region_count = r - hose->regions;
                hose->first_busno=first_free_busno;
-               pci_setup_indirect(hose, (int) &pci->cfg_addr, (int) &pci->cfg_data);
 
-               fsl_pci_init(hose);
+               fsl_pci_init(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data);
 
                first_free_busno=hose->last_busno+1;
                printf ("    PCIE3 on bus %02x - %02x\n",
                hose->region_count = r - hose->regions;
                hose->first_busno=first_free_busno;
 
-               pci_setup_indirect(hose, (int) &pci->cfg_addr, (int) &pci->cfg_data);
-
-               fsl_pci_init(hose);
+               fsl_pci_init(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data);
 
                first_free_busno=hose->last_busno+1;
                printf("    PCIE1 on bus %02x - %02x\n",
 #endif
                hose->region_count = r - hose->regions;
                hose->first_busno=first_free_busno;
-               pci_setup_indirect(hose, (int) &pci->cfg_addr, (int) &pci->cfg_data);
 
-               fsl_pci_init(hose);
+               fsl_pci_init(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data);
                first_free_busno=hose->last_busno+1;
                printf ("    PCIE2 on bus %02x - %02x\n",
                        hose->first_busno,hose->last_busno);
 #endif
                hose->region_count = r - hose->regions;
                hose->first_busno=first_free_busno;
-               pci_setup_indirect(hose, (int) &pci->cfg_addr, (int) &pci->cfg_data);
 
-               fsl_pci_init(hose);
+               fsl_pci_init(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data);
                first_free_busno=hose->last_busno+1;
                printf ("PCI on bus %02x - %02x\n",
                        hose->first_busno,hose->last_busno);
 
                        table->config_device += gd->reloc_off;
 
                hose->first_busno=first_free_busno;
-               pci_setup_indirect(hose, (int) &pci->cfg_addr, (int) &pci->cfg_data);
 
-               fsl_pci_init(hose);
+               fsl_pci_init(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data);
                first_free_busno=hose->last_busno+1;
                printf ("PCI on bus %02x - %02x\n",hose->first_busno,hose->last_busno);
 #ifdef CONFIG_PCIX_CHECK
                hose->region_count = r - hose->regions;
 
                hose->first_busno=first_free_busno;
-               pci_setup_indirect(hose, (int) &pci->cfg_addr, (int) &pci->cfg_data);
 
-               fsl_pci_init(hose);
+               fsl_pci_init(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data);
                printf ("PCIE on bus %d - %d\n",hose->first_busno,hose->last_busno);
 
                first_free_busno=hose->last_busno+1;
 
                hose->region_count = r - hose->regions;
 
                hose->first_busno = first_free_busno;
-               pci_setup_indirect(hose, (int) &pci->cfg_addr, (int) &pci->cfg_data);
 
-               fsl_pci_init(hose);
+               fsl_pci_init(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data);
                first_free_busno = hose->last_busno+1;
                printf ("PCI on bus %02x - %02x\n",hose->first_busno,hose->last_busno);
        } else {
                hose->region_count = r - hose->regions;
 
                hose->first_busno=first_free_busno;
-               pci_setup_indirect(hose, (int) &pci->cfg_addr, (int) &pci->cfg_data);
 
-               fsl_pci_init(hose);
+               fsl_pci_init(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data);
                printf ("PCIE on bus %02x - %02x\n",hose->first_busno,hose->last_busno);
 
                first_free_busno=hose->last_busno+1;
 
                hose->region_count = r - hose->regions;
 
                hose->first_busno=first_free_busno;
-               pci_setup_indirect(hose, (int) &pci->cfg_addr,
-                                       (int) &pci->cfg_data);
 
-               fsl_pci_init(hose);
+               fsl_pci_init(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data);
                printf ("PCIE on bus %02x - %02x\n",
                                hose->first_busno,hose->last_busno);
 
 
 
                        hose->region_count = r - hose->regions;
                        hose->first_busno=first_free_busno;
-                       pci_setup_indirect(hose, (int) &pci->cfg_addr, (int) &pci->cfg_data);
 
-                       fsl_pci_init(hose);
+                       fsl_pci_init(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data);
 
                        first_free_busno=hose->last_busno+1;
                        printf ("    PCIE3 on bus %02x - %02x\n",
 
                        hose->region_count = r - hose->regions;
                        hose->first_busno=first_free_busno;
-                       pci_setup_indirect(hose, (int) &pci->cfg_addr, (int) &pci->cfg_data);
 
-                       fsl_pci_init(hose);
+                       fsl_pci_init(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data);
                        first_free_busno=hose->last_busno+1;
                        printf ("    PCIE2 on bus %02x - %02x\n",
                                        hose->first_busno,hose->last_busno);
                        hose->region_count = r - hose->regions;
                        hose->first_busno=first_free_busno;
 
-                       pci_setup_indirect(hose, (int) &pci->cfg_addr, (int) &pci->cfg_data);
-
-                       fsl_pci_init(hose);
+                       fsl_pci_init(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data);
 
                        first_free_busno=hose->last_busno+1;
                        printf("    PCIE1 on bus %02x - %02x\n",
 
                hose->region_count = r - hose->regions;
 
                hose->first_busno = first_free_busno;
-               pci_setup_indirect(hose, (int)&pci->cfg_addr,
-                                (int)&pci->cfg_data);
 
-               fsl_pci_init(hose);
+               fsl_pci_init(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data);
 
                first_free_busno = hose->last_busno + 1;
                printf(" PCI-Express 1 on bus %02x - %02x\n",
                hose->region_count = r - hose->regions;
 
                hose->first_busno = first_free_busno;
-               pci_setup_indirect(hose, (int)&pci->cfg_addr,
-                                (int)&pci->cfg_data);
 
-               fsl_pci_init(hose);
+               fsl_pci_init(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data);
 
                first_free_busno = hose->last_busno + 1;
                printf(" PCI-Express 2 on bus %02x - %02x\n",
                hose->region_count = r - hose->regions;
 
                hose->first_busno = first_free_busno;
-               pci_setup_indirect(hose, (int) &pci->cfg_addr,
-                                (int) &pci->cfg_data);
 
-               fsl_pci_init(hose);
+               fsl_pci_init(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data);
 
                first_free_busno = hose->last_busno + 1;
                printf(" PCI on bus %02x - %02x\n",
 
                hose->region_count = r - hose->regions;
 
                hose->first_busno=first_free_busno;
-               pci_setup_indirect(hose, (int) &pci->cfg_addr, (int) &pci->cfg_data);
 
-               fsl_pci_init(hose);
+               fsl_pci_init(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data);
 
                first_free_busno=hose->last_busno+1;
                printf ("    PCI-EXPRESS 1 on bus %02x - %02x\n",
        hose->region_count = r - hose->regions;
 
        hose->first_busno=first_free_busno;
-       pci_setup_indirect(hose, (int) &pci->cfg_addr, (int) &pci->cfg_data);
 
-       fsl_pci_init(hose);
+       fsl_pci_init(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data);
 
        first_free_busno=hose->last_busno+1;
        printf ("    PCI-EXPRESS 2 on bus %02x - %02x\n",
 
 
                hose->region_count = r - hose->regions;
                hose->first_busno = first_free_busno;
-               pci_setup_indirect(hose, (int)&pci->cfg_addr,
-                                 (int)&pci->cfg_data);
 
-               fsl_pci_init(hose);
+               fsl_pci_init(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data);
                first_free_busno = hose->last_busno+1;
                printf("    PCIE2 on bus %02x - %02x\n",
                        hose->first_busno, hose->last_busno);
 
                hose->region_count = r - hose->regions;
                hose->first_busno = first_free_busno;
-               pci_setup_indirect(hose, (int)&pci->cfg_addr,
-                                 (int)&pci->cfg_data);
 
-               fsl_pci_init(hose);
+               fsl_pci_init(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data);
 
                first_free_busno = hose->last_busno+1;
                printf("    PCIE3 on bus %02x - %02x\n",
                hose->region_count = r - hose->regions;
                hose->first_busno = first_free_busno;
 
-               pci_setup_indirect(hose, (int)&pci->cfg_addr,
-                                 (int)&pci->cfg_data);
-
-               fsl_pci_init(hose);
+               fsl_pci_init(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data);
 
                first_free_busno = hose->last_busno+1;
                printf("    PCIE1 on bus %02x - %02x\n",
 
                        table->config_device += gd->reloc_off;
 
                hose->first_busno=first_free_busno;
-               pci_setup_indirect(hose, (int) &pci->cfg_addr, (int) &pci->cfg_data);
 
-               fsl_pci_init(hose);
+               fsl_pci_init(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data);
                first_free_busno=hose->last_busno+1;
                printf ("PCI on bus %02x - %02x\n",hose->first_busno,hose->last_busno);
 #ifdef CONFIG_PCIX_CHECK
                hose->region_count = r - hose->regions;
 
                hose->first_busno=first_free_busno;
-               pci_setup_indirect(hose, (int) &pci->cfg_addr, (int) &pci->cfg_data);
 
-               fsl_pci_init(hose);
+               fsl_pci_init(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data);
                printf ("PCIE on bus %d - %d\n",hose->first_busno,hose->last_busno);
 
                first_free_busno=hose->last_busno+1;
 
                hose->region_count = r - hose->regions;
 
                hose->first_busno=first_free_busno;
-               pci_setup_indirect(hose, (int) &pci->cfg_addr, (int) &pci->cfg_data);
 
-               fsl_pci_init(hose);
+               fsl_pci_init(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data);
 
                first_free_busno=hose->last_busno+1;
                printf ("    PCI-EXPRESS 1 on bus %02x - %02x\n",
        hose->region_count = r - hose->regions;
 
        hose->first_busno=first_free_busno;
-       pci_setup_indirect(hose, (int) &pci->cfg_addr, (int) &pci->cfg_data);
 
-       fsl_pci_init(hose);
+       fsl_pci_init(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data);
 
        first_free_busno=hose->last_busno+1;
        printf ("    PCI-EXPRESS 2 on bus %02x - %02x\n",
 
                hose->region_count = r - hose->regions;
 
                hose->first_busno = first_free_busno;
-               pci_setup_indirect (hose, (int)&pci->cfg_addr,
-                                   (int)&pci->cfg_data);
 
-               fsl_pci_init (hose);
+               fsl_pci_init(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data);
 
                printf ("       PCI on bus %02x..%02x\n",
                        hose->first_busno, hose->last_busno);
                hose->region_count = r - hose->regions;
 
                hose->first_busno = first_free_busno;
-               pci_setup_indirect(hose, (int)&pci->cfg_addr,
-                                  (int)&pci->cfg_data);
 
-               fsl_pci_init (hose);
+               fsl_pci_init(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data);
                printf ("       PCIe on bus %02x..%02x\n",
                        hose->first_busno, hose->last_busno);
 
 
                hose->region_count = r - hose->regions;
 
                hose->first_busno = first_free_busno;
-               pci_setup_indirect(hose, (int)&pci->cfg_addr,
-                                  (int)&pci->cfg_data);
 
-               fsl_pci_init(hose);
+               fsl_pci_init(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data);
 
                /* Unlock inbound PCI configuration cycles */
                if (!host)
                hose->region_count = r - hose->regions;
 
                hose->first_busno = first_free_busno;
-               pci_setup_indirect(hose, (int)&pci->cfg_addr,
-                                       (int) &pci->cfg_data);
 
-               fsl_pci_init(hose);
+               fsl_pci_init(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data);
 
                /* Unlock inbound PCI configuration cycles */
                if (!host)
                hose->region_count = r - hose->regions;
 
                hose->first_busno = first_free_busno;
-               pci_setup_indirect(hose, (int)&pci->cfg_addr,
-                                       (int)&pci->cfg_data);
 
-               fsl_pci_init(hose);
+               fsl_pci_init(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data);
 
                /* Unlock inbound PCI configuration cycles */
                if (!host)
                hose->region_count = r - hose->regions;
 
                hose->first_busno = first_free_busno;
-               pci_setup_indirect(hose, (int)&pci->cfg_addr,
-                                       (int)&pci->cfg_data);
 
-               fsl_pci_init(hose);
+               fsl_pci_init(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data);
 
                /* Unlock inbound PCI configuration cycles */
                if (!host)
 
        return r - rgn_base;
 }
 
-void fsl_pci_init(struct pci_controller *hose)
+void fsl_pci_init(struct pci_controller *hose, u32 cfg_addr, u32 cfg_data)
 {
        u16 temp16;
        u32 temp32;
        int r;
        int bridge;
        int inbound = 0;
-       volatile ccsr_fsl_pci_t *pci = (ccsr_fsl_pci_t *) hose->cfg_addr;
+       volatile ccsr_fsl_pci_t *pci = (ccsr_fsl_pci_t *)cfg_addr;
        pci_dev_t dev = PCI_BDF(busno,0,0);
 
        /* Initialize ATMU registers based on hose regions and flags */
        int neg_link_w;
 #endif
 
+       pci_setup_indirect(hose, cfg_addr, cfg_data);
+
        for (r=0; r<hose->region_count; r++) {
                u32 sz = (__ilog2_u64((u64)hose->regions[r].size) - 1);
                if (hose->regions[r].flags & PCI_REGION_SYS_MEMORY) { /* inbound */
 
 #define __FSL_PCI_H_
 
 int fsl_pci_setup_inbound_windows(struct pci_region *r);
-void fsl_pci_init(struct pci_controller *hose);
+void fsl_pci_init(struct pci_controller *hose, u32 cfg_addr, u32 cfg_data);
 void fsl_pci_config_unlock(struct pci_controller *hose);
 void ft_fsl_pci_setup(void *blob, const char *pci_alias,
                        struct pci_controller *hose);