Message ID | 1412222866-21068-10-git-send-email-matt@masarand.com (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Bjorn Helgaas |
Headers | show |
On Thu, Oct 02, 2014 at 05:07:37AM +0100, matt@masarand.com wrote: > From: Matthew Minter <matt@masarand.com> > > Currently PCI IRQs are assigned during mcf_pci_init which is only run > at boot time, this causes devices which are connected after boot time > to not receive an IRQ, this patch set fixes this by registering an IRQ > assignment function to be run later at device enable time. > > Signed-off-by: Matthew Minter <matt@masarand.com> > > --- > arch/m68k/platform/coldfire/pci.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/arch/m68k/platform/coldfire/pci.c b/arch/m68k/platform/coldfire/pci.c > index df96792..058ca86 100644 > --- a/arch/m68k/platform/coldfire/pci.c > +++ b/arch/m68k/platform/coldfire/pci.c > @@ -316,10 +316,16 @@ static int __init mcf_pci_init(void) > rootbus->resource[0] = &mcf_pci_io; > rootbus->resource[1] = &mcf_pci_mem; > > - pci_fixup_irqs(pci_common_swizzle, mcf_pci_map_irq); > pci_bus_size_bridges(rootbus); > pci_bus_assign_resources(rootbus); > return 0; > } > > +int pcibios_root_bridge_prepare(struct pci_host_bridge *bridge) > +{ > + bridge->swizzle_irq = pci_common_swizzle; > + bridge->map_irq = mcf_pci_map_irq; > + return 0; > +} > + > subsys_initcall(mcf_pci_init); > -- > 2.1.0 > Awesome, very nice and simple! -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/arch/m68k/platform/coldfire/pci.c b/arch/m68k/platform/coldfire/pci.c index df96792..058ca86 100644 --- a/arch/m68k/platform/coldfire/pci.c +++ b/arch/m68k/platform/coldfire/pci.c @@ -316,10 +316,16 @@ static int __init mcf_pci_init(void) rootbus->resource[0] = &mcf_pci_io; rootbus->resource[1] = &mcf_pci_mem; - pci_fixup_irqs(pci_common_swizzle, mcf_pci_map_irq); pci_bus_size_bridges(rootbus); pci_bus_assign_resources(rootbus); return 0; } +int pcibios_root_bridge_prepare(struct pci_host_bridge *bridge) +{ + bridge->swizzle_irq = pci_common_swizzle; + bridge->map_irq = mcf_pci_map_irq; + return 0; +} + subsys_initcall(mcf_pci_init);