dm: x86: Set up interrupt routing from interrupt_init()
authorSimon Glass <sjg@chromium.org>
Wed, 20 Jan 2016 04:32:26 +0000 (21:32 -0700)
committerBin Meng <bmeng.cn@gmail.com>
Sun, 24 Jan 2016 04:07:18 +0000 (12:07 +0800)
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>
arch/x86/cpu/baytrail/valleyview.c
arch/x86/cpu/interrupts.c
arch/x86/cpu/irq.c
arch/x86/cpu/qemu/qemu.c
arch/x86/cpu/quark/quark.c
arch/x86/cpu/queensbay/tnc.c
arch/x86/include/asm/irq.h
include/configs/qemu-x86.h

index 7299f2cddc944de8edb25b3f7a40e62a4453a646..25382f9aab1efdb8e944b2094786fc64c8f0b570 100644 (file)
@@ -50,7 +50,7 @@ int arch_misc_init(void)
        mrccache_save();
 #endif
 
-       return pirq_init();
+       return 0;
 }
 
 int reserve_arch(void)
index b00ddc0cb488163e5e14c1a6127ddbbb1dc8a04f..c40200bf8587e86113888c98b40a23e23b17bb33 100644 (file)
@@ -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.
index 9b699cf2c0d1b0aa0891c17d632c69965b313f9e..8f59b2362828bde21c0c921452fcbb8dbac383d0 100644 (file)
@@ -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;
index 46111c9cf058d82d35bf231c26d832f8d101bd15..5a7b92944a21501edd10b99824cb2eab337e0da1 100644 (file)
@@ -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)
 {
index 72c681dceabaece9c81d1983199d31cdcf9fca1d..28370d17065d0663b638cfc2db034ed8a3ea8393 100644 (file)
@@ -380,7 +380,7 @@ int arch_misc_init(void)
        mrccache_save();
 #endif
 
-       return pirq_init();
+       return 0;
 }
 
 void board_final_cleanup(void)
index fb81919c212fa2d678d2b17a4d3a6f94ce7264b8..b65906b6c565e49317c478d50e51359550ca24f6 100644 (file)
@@ -110,5 +110,5 @@ int arch_misc_init(void)
 {
        unprotect_spi_flash();
 
-       return pirq_init();
+       return 0;
 }
index 6697da3b859124d0bf69e00471e006b12180ba47..74da66ea1266ec62ca40bef6022a05fbb50d5d3a 100644 (file)
@@ -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_ */
index 4258dcb7f6c109ef1b65658615d9871a3cc62a57..b0d2ffe5b4c842b9086072c2463abb00d35c2eb7 100644 (file)
@@ -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