diff options
| -rw-r--r-- | arch/powerpc/include/asm/fsl_pci.h | 43 | ||||
| -rw-r--r-- | drivers/pci/fsl_pci_init.c | 5 | ||||
| -rw-r--r-- | drivers/pci/pci.c | 12 | ||||
| -rw-r--r-- | include/pci.h | 1 | 
4 files changed, 20 insertions, 41 deletions
| diff --git a/arch/powerpc/include/asm/fsl_pci.h b/arch/powerpc/include/asm/fsl_pci.h index fa035142f..5cbe139d5 100644 --- a/arch/powerpc/include/asm/fsl_pci.h +++ b/arch/powerpc/include/asm/fsl_pci.h @@ -27,8 +27,7 @@ int fsl_setup_hose(struct pci_controller *hose, unsigned long addr);  int fsl_is_pci_agent(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_compat, -			struct pci_controller *hose, unsigned long ctrl_addr); +void ft_fsl_pci_setup(void *blob, const char *compat, unsigned long ctrl_addr);  /*   * Common PCI/PCIE Register structure for mpc85xx and mpc86xx @@ -201,54 +200,18 @@ int fsl_pci_init_port(struct fsl_pci_info *pci_info,  }  #define __FT_FSL_PCI_SETUP(blob, compat, num) \ -	ft_fsl_pci_setup(blob, compat, &pci##num##_hose, \ -			 CONFIG_SYS_PCI##num##_ADDR) - -#define __FT_FSL_PCI_DEL(blob, compat, num) \ -	ft_fsl_pci_setup(blob, compat, NULL, CONFIG_SYS_PCI##num##_ADDR) +	ft_fsl_pci_setup(blob, compat, CONFIG_SYS_PCI##num##_ADDR)  #define __FT_FSL_PCIE_SETUP(blob, compat, num) \ -	ft_fsl_pci_setup(blob, compat, &pcie##num##_hose, \ -			 CONFIG_SYS_PCIE##num##_ADDR) - -#define __FT_FSL_PCIE_DEL(blob, compat, num) \ -	ft_fsl_pci_setup(blob, compat, NULL, CONFIG_SYS_PCIE##num##_ADDR) +	ft_fsl_pci_setup(blob, compat, CONFIG_SYS_PCIE##num##_ADDR) -#ifdef CONFIG_PCI1  #define FT_FSL_PCI1_SETUP __FT_FSL_PCI_SETUP(blob, FSL_PCI_COMPAT, 1) -#else -#define FT_FSL_PCI1_SETUP __FT_FSL_PCI_DEL(blob, FSL_PCI_COMPAT, 1) -#endif - -#ifdef CONFIG_PCI2  #define FT_FSL_PCI2_SETUP __FT_FSL_PCI_SETUP(blob, FSL_PCI_COMPAT, 2) -#else -#define FT_FSL_PCI2_SETUP __FT_FSL_PCI_DEL(blob, FSL_PCI_COMPAT, 2) -#endif -#ifdef CONFIG_PCIE1  #define FT_FSL_PCIE1_SETUP __FT_FSL_PCIE_SETUP(blob, FSL_PCIE_COMPAT, 1) -#else -#define FT_FSL_PCIE1_SETUP __FT_FSL_PCIE_DEL(blob, FSL_PCIE_COMPAT, 1) -#endif - -#ifdef CONFIG_PCIE2  #define FT_FSL_PCIE2_SETUP __FT_FSL_PCIE_SETUP(blob, FSL_PCIE_COMPAT, 2) -#else -#define FT_FSL_PCIE2_SETUP __FT_FSL_PCIE_DEL(blob, FSL_PCIE_COMPAT, 2) -#endif - -#ifdef CONFIG_PCIE3  #define FT_FSL_PCIE3_SETUP __FT_FSL_PCIE_SETUP(blob, FSL_PCIE_COMPAT, 3) -#else -#define FT_FSL_PCIE3_SETUP __FT_FSL_PCIE_DEL(blob, FSL_PCIE_COMPAT, 3) -#endif - -#ifdef CONFIG_PCIE4  #define FT_FSL_PCIE4_SETUP __FT_FSL_PCIE_SETUP(blob, FSL_PCIE_COMPAT, 4) -#else -#define FT_FSL_PCIE4_SETUP __FT_FSL_PCIE_DEL(blob, FSL_PCIE_COMPAT, 4) -#endif  #if defined(CONFIG_FSL_CORENET)  #define FSL_PCIE_COMPAT	"fsl,p4080-pcie" diff --git a/drivers/pci/fsl_pci_init.c b/drivers/pci/fsl_pci_init.c index 5b34dcbb0..71ab02b88 100644 --- a/drivers/pci/fsl_pci_init.c +++ b/drivers/pci/fsl_pci_init.c @@ -518,11 +518,14 @@ void fsl_pci_config_unlock(struct pci_controller *hose)  #include <fdt_support.h>  void ft_fsl_pci_setup(void *blob, const char *pci_compat, -			struct pci_controller *hose, unsigned long ctrl_addr) +			unsigned long ctrl_addr)  {  	int off;  	u32 bus_range[2];  	phys_addr_t p_ctrl_addr = (phys_addr_t)ctrl_addr; +	struct pci_controller *hose; + +	hose = find_hose_by_cfg_addr((void *)(ctrl_addr));  	/* convert ctrl_addr to true physical address */  	p_ctrl_addr = (phys_addr_t)ctrl_addr - CONFIG_SYS_CCSRBAR; diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 702ac6782..cdfc4fb01 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -165,6 +165,18 @@ struct pci_controller *pci_bus_to_hose (int bus)  	return NULL;  } +struct pci_controller *find_hose_by_cfg_addr(void *cfg_addr) +{ +	struct pci_controller *hose; + +	for (hose = hose_head; hose; hose = hose->next) { +		if (hose->cfg_addr == cfg_addr) +			return hose; +	} + +	return NULL; +} +  int pci_last_busno(void)  {  	struct pci_controller *hose = hose_head; diff --git a/include/pci.h b/include/pci.h index c45600603..e80b6bdf5 100644 --- a/include/pci.h +++ b/include/pci.h @@ -511,6 +511,7 @@ extern int pci_hose_write_config_word_via_dword(struct pci_controller *hose,  extern void *pci_map_bar(pci_dev_t pdev, int bar, int flags);  extern void pci_register_hose(struct pci_controller* hose);  extern struct pci_controller* pci_bus_to_hose(int bus); +extern struct pci_controller *find_hose_by_cfg_addr(void *cfg_addr);  extern int pci_hose_scan(struct pci_controller *hose);  extern int pci_hose_scan_bus(struct pci_controller *hose, int bus); |