ppc4xx: Add pci_pre_init() for 405 boards
This patch adds support for calling a plattform dependant pci_pre_init() function for 405 boards. This can be used to move the current pci_405gp_fixup_irq() function into the board code. This patch also makes the CFG_PCI_PRE_INIT define obsolete. A default function with 'weak' attribute is used when a board specific pci_pre_init() is not implemented. Signed-off-by: Matthias Fuchs <matthias.fuchs@esd-electronics.com>
This commit is contained in:
parent
3a1f5c81b0
commit
5a1c9ff0c4
@ -77,11 +77,21 @@
|
|||||||
#include <asm/processor.h>
|
#include <asm/processor.h>
|
||||||
#include <pci.h>
|
#include <pci.h>
|
||||||
|
|
||||||
|
#ifdef CONFIG_PCI
|
||||||
|
|
||||||
DECLARE_GLOBAL_DATA_PTR;
|
DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
#if defined(CONFIG_405GP) || defined(CONFIG_405EP)
|
/*
|
||||||
|
* Board-specific pci initialization
|
||||||
|
* Platform code can reimplement pci_pre_init() if needed
|
||||||
|
*/
|
||||||
|
int __pci_pre_init(struct pci_controller *hose)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
int pci_pre_init(struct pci_controller *hose) __attribute__((weak, alias("__pci_pre_init")));
|
||||||
|
|
||||||
#ifdef CONFIG_PCI
|
#if defined(CONFIG_405GP) || defined(CONFIG_405EP)
|
||||||
|
|
||||||
#if defined(CONFIG_PMC405)
|
#if defined(CONFIG_PMC405)
|
||||||
ushort pmc405_pci_subsys_deviceid(void);
|
ushort pmc405_pci_subsys_deviceid(void);
|
||||||
@ -191,6 +201,13 @@ void pci_405gp_init(struct pci_controller *hose)
|
|||||||
if (hose->pci_fb)
|
if (hose->pci_fb)
|
||||||
pciauto_region_init(hose->pci_fb);
|
pciauto_region_init(hose->pci_fb);
|
||||||
|
|
||||||
|
/* Let board change/modify hose & do initial checks */
|
||||||
|
if (pci_pre_init (hose) == 0) {
|
||||||
|
printf("PCI: Board-specific initialization failed.\n");
|
||||||
|
printf("PCI: Configuration aborted.\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
pci_register_hose(hose);
|
pci_register_hose(hose);
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------+
|
/*--------------------------------------------------------------------------+
|
||||||
@ -416,14 +433,12 @@ void pci_init_board(void)
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* CONFIG_PCI */
|
|
||||||
|
|
||||||
#endif /* CONFIG_405GP */
|
#endif /* CONFIG_405GP */
|
||||||
|
|
||||||
/*-----------------------------------------------------------------------------+
|
/*-----------------------------------------------------------------------------+
|
||||||
* CONFIG_440
|
* CONFIG_440
|
||||||
*-----------------------------------------------------------------------------*/
|
*-----------------------------------------------------------------------------*/
|
||||||
#if defined(CONFIG_440) && defined(CONFIG_PCI)
|
#if defined(CONFIG_440)
|
||||||
|
|
||||||
static struct pci_controller ppc440_hose = {0};
|
static struct pci_controller ppc440_hose = {0};
|
||||||
|
|
||||||
@ -496,14 +511,12 @@ void pci_440_init (struct pci_controller *hose)
|
|||||||
|
|
||||||
pci_setup_indirect(hose, PCIX0_CFGADR, PCIX0_CFGDATA);
|
pci_setup_indirect(hose, PCIX0_CFGADR, PCIX0_CFGDATA);
|
||||||
|
|
||||||
#if defined(CFG_PCI_PRE_INIT)
|
|
||||||
/* Let board change/modify hose & do initial checks */
|
/* Let board change/modify hose & do initial checks */
|
||||||
if (pci_pre_init (hose) == 0) {
|
if (pci_pre_init (hose) == 0) {
|
||||||
printf("PCI: Board-specific initialization failed.\n");
|
printf("PCI: Board-specific initialization failed.\n");
|
||||||
printf("PCI: Configuration aborted.\n");
|
printf("PCI: Configuration aborted.\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
pci_register_hose( hose );
|
pci_register_hose( hose );
|
||||||
|
|
||||||
@ -575,4 +588,5 @@ void pci_init_board(void)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* CONFIG_440 & CONFIG_PCI */
|
#endif /* CONFIG_440 */
|
||||||
|
#endif /* CONFIG_PCI */
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user