Skip to content
Snippets Groups Projects
Commit 5a1c9ff0 authored by Matthias Fuchs's avatar Matthias Fuchs Committed by Stefan Roese
Browse files

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: default avatarMatthias Fuchs <matthias.fuchs@esd-electronics.com>
parent 3a1f5c81
No related branches found
No related tags found
No related merge requests found
...@@ -77,11 +77,21 @@ ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -575,4 +588,5 @@ void pci_init_board(void)
#endif #endif
} }
#endif /* CONFIG_440 & CONFIG_PCI */ #endif /* CONFIG_440 */
#endif /* CONFIG_PCI */
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment