|
@@ -1,5 +1,5 @@
|
|
|
/*
|
|
|
- * Copyright 2007,2009 Freescale Semiconductor, Inc.
|
|
|
+ * Copyright 2007,2009-2010 Freescale Semiconductor, Inc.
|
|
|
*
|
|
|
* This program is free software; you can redistribute it and/or
|
|
|
* modify it under the terms of the GNU General Public License as
|
|
@@ -29,8 +29,8 @@ 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_alias,
|
|
|
- struct pci_controller *hose);
|
|
|
+void ft_fsl_pci_setup(void *blob, const char *pci_compat,
|
|
|
+ struct pci_controller *hose, unsigned long ctrl_addr);
|
|
|
|
|
|
/*
|
|
|
* Common PCI/PCIE Register structure for mpc85xx and mpc86xx
|
|
@@ -202,4 +202,82 @@ int fsl_pci_init_port(struct fsl_pci_info *pci_info,
|
|
|
x.pci_num = num; \
|
|
|
}
|
|
|
|
|
|
+#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)
|
|
|
+
|
|
|
+#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)
|
|
|
+
|
|
|
+#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"
|
|
|
+#define FT_FSL_PCI_SETUP \
|
|
|
+ FT_FSL_PCIE1_SETUP; \
|
|
|
+ FT_FSL_PCIE2_SETUP; \
|
|
|
+ FT_FSL_PCIE3_SETUP; \
|
|
|
+ FT_FSL_PCIE4_SETUP;
|
|
|
+#elif defined(CONFIG_MPC85xx)
|
|
|
+#define FSL_PCI_COMPAT "fsl,mpc8540-pci"
|
|
|
+#define FSL_PCIE_COMPAT "fsl,mpc8548-pcie"
|
|
|
+#define FT_FSL_PCI_SETUP \
|
|
|
+ FT_FSL_PCI1_SETUP; \
|
|
|
+ FT_FSL_PCI2_SETUP; \
|
|
|
+ FT_FSL_PCIE1_SETUP; \
|
|
|
+ FT_FSL_PCIE2_SETUP; \
|
|
|
+ FT_FSL_PCIE3_SETUP;
|
|
|
+#elif defined(CONFIG_MPC86xx)
|
|
|
+#define FSL_PCI_COMPAT "fsl,mpc8610-pci"
|
|
|
+#define FSL_PCIE_COMPAT "fsl,mpc8641-pcie"
|
|
|
+#define FT_FSL_PCI_SETUP \
|
|
|
+ FT_FSL_PCI1_SETUP; \
|
|
|
+ FT_FSL_PCIE1_SETUP; \
|
|
|
+ FT_FSL_PCIE2_SETUP;
|
|
|
+#else
|
|
|
+#error FT_FSL_PCI_SETUP not defined
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
#endif
|