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 <pci.h>
|
||||
|
||||
#ifdef CONFIG_PCI
|
||||
|
||||
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)
|
||||
ushort pmc405_pci_subsys_deviceid(void);
|
||||
@ -191,6 +201,13 @@ void pci_405gp_init(struct pci_controller *hose)
|
||||
if (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);
|
||||
|
||||
/*--------------------------------------------------------------------------+
|
||||
@ -416,14 +433,12 @@ void pci_init_board(void)
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* CONFIG_PCI */
|
||||
|
||||
#endif /* CONFIG_405GP */
|
||||
|
||||
/*-----------------------------------------------------------------------------+
|
||||
* CONFIG_440
|
||||
*-----------------------------------------------------------------------------*/
|
||||
#if defined(CONFIG_440) && defined(CONFIG_PCI)
|
||||
#if defined(CONFIG_440)
|
||||
|
||||
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);
|
||||
|
||||
#if defined(CFG_PCI_PRE_INIT)
|
||||
/* 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;
|
||||
}
|
||||
#endif
|
||||
|
||||
pci_register_hose( hose );
|
||||
|
||||
@ -575,4 +588,5 @@ void pci_init_board(void)
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /* CONFIG_440 & CONFIG_PCI */
|
||||
#endif /* CONFIG_440 */
|
||||
#endif /* CONFIG_PCI */
|
||||
|
Loading…
Reference in New Issue
Block a user