dm: x86: Set up interrupt routing from interrupt_init()
At present interrupt routing is set up from arch_misc_init(). We can do it a little later instead, in interrupt_init(). This removes the manual pirq_init() call. Where the platform does not have an interrupt router defined in its device tree, no error is generated. Some platforms do not have this. Drop pirq_init() since it is no-longer used. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com> Tested-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
parent
e76187a355
commit
12d6929e1f
|
@ -50,7 +50,7 @@ int arch_misc_init(void)
|
|||
mrccache_save();
|
||||
#endif
|
||||
|
||||
return pirq_init();
|
||||
return 0;
|
||||
}
|
||||
|
||||
int reserve_arch(void)
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <dm.h>
|
||||
#include <asm/cache.h>
|
||||
#include <asm/control_regs.h>
|
||||
#include <asm/interrupt.h>
|
||||
|
@ -244,6 +245,14 @@ int disable_interrupts(void)
|
|||
|
||||
int interrupt_init(void)
|
||||
{
|
||||
struct udevice *dev;
|
||||
int ret;
|
||||
|
||||
/* Try to set up the interrupt router, but don't require one */
|
||||
ret = uclass_first_device(UCLASS_IRQ, &dev);
|
||||
if (ret && ret != -ENODEV)
|
||||
return ret;
|
||||
|
||||
/*
|
||||
* When running as an EFI application we are not in control of
|
||||
* interrupts and should leave them alone.
|
||||
|
|
|
@ -231,13 +231,6 @@ static int create_pirq_routing_table(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int pirq_init(void)
|
||||
{
|
||||
struct udevice *dev;
|
||||
|
||||
return uclass_first_device(UCLASS_IRQ, &dev);
|
||||
}
|
||||
|
||||
int irq_router_probe(struct udevice *dev)
|
||||
{
|
||||
int ret;
|
||||
|
|
|
@ -96,11 +96,6 @@ int arch_early_init_r(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int arch_misc_init(void)
|
||||
{
|
||||
return pirq_init();
|
||||
}
|
||||
|
||||
#ifdef CONFIG_GENERATE_MP_TABLE
|
||||
int mp_determine_pci_dstirq(int bus, int dev, int func, int pirq)
|
||||
{
|
||||
|
|
|
@ -380,7 +380,7 @@ int arch_misc_init(void)
|
|||
mrccache_save();
|
||||
#endif
|
||||
|
||||
return pirq_init();
|
||||
return 0;
|
||||
}
|
||||
|
||||
void board_final_cleanup(void)
|
||||
|
|
|
@ -110,5 +110,5 @@ int arch_misc_init(void)
|
|||
{
|
||||
unprotect_spi_flash();
|
||||
|
||||
return pirq_init();
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -65,14 +65,4 @@ struct pirq_routing {
|
|||
*/
|
||||
void cpu_irq_init(void);
|
||||
|
||||
/**
|
||||
* pirq_init() - Initialize platform PIRQ routing
|
||||
*
|
||||
* This initializes the PIRQ routing on the platform and configures all PCI
|
||||
* devices' interrupt line register to a working IRQ number on the 8259 PIC.
|
||||
*
|
||||
* @return 0 if OK, -ve on error
|
||||
*/
|
||||
int pirq_init(void);
|
||||
|
||||
#endif /* _ARCH_IRQ_H_ */
|
||||
|
|
|
@ -14,7 +14,6 @@
|
|||
#include <configs/x86-common.h>
|
||||
|
||||
#define CONFIG_SYS_MONITOR_LEN (1 << 20)
|
||||
#define CONFIG_ARCH_MISC_INIT
|
||||
#define CONFIG_ARCH_EARLY_INIT_R
|
||||
|
||||
#define CONFIG_PCI_PNP
|
||||
|
|
Loading…
Reference in New Issue