MIPS: PCI: fix pcibios_map_irq section mismatch
Drop the __init from pcibios_map_irq() to make this section mis- match go away: WARNING: vmlinux.o(.text+0x56acd4): Section mismatch in reference from the function pcibios_scanbus() to the function .init.text:pcibios_map_irq() The function pcibios_scanbus() references the function __init pcibios_map_irq(). This is often because pcibios_scanbus lacks a __init annotation or the annotation of pcibios_map_irq is wrong. Run-Tested only on Alchemy. Signed-off-by: Manuel Lauss <manuel.lauss@gmail.com> Cc: linux-mips@linux-mips.org Patchwork: https://patchwork.linux-mips.org/patch/17267/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
parent
c22c804310
commit
8eba3651f1
@ -38,7 +38,7 @@ static char irq_tab_capcella[][5] __initdata = {
|
|||||||
[14] = { -1, INTA, INTB, INTC, INTD }
|
[14] = { -1, INTA, INTB, INTC, INTD }
|
||||||
};
|
};
|
||||||
|
|
||||||
int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
return irq_tab_capcella[slot][pin];
|
return irq_tab_capcella[slot][pin];
|
||||||
}
|
}
|
||||||
|
@ -174,7 +174,7 @@ static char irq_tab_raq2[] __initdata = {
|
|||||||
[COBALT_PCICONF_ETH1] = ETH1_IRQ
|
[COBALT_PCICONF_ETH1] = ETH1_IRQ
|
||||||
};
|
};
|
||||||
|
|
||||||
int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
if (cobalt_board_id <= COBALT_BRD_ID_QUBE1)
|
if (cobalt_board_id <= COBALT_BRD_ID_QUBE1)
|
||||||
return irq_tab_qube1[slot];
|
return irq_tab_qube1[slot];
|
||||||
|
@ -85,7 +85,7 @@ static void emma2rh_pci_host_fixup(struct pci_dev *dev)
|
|||||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NEC, PCI_DEVICE_ID_NEC_EMMA2RH,
|
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NEC, PCI_DEVICE_ID_NEC_EMMA2RH,
|
||||||
emma2rh_pci_host_fixup);
|
emma2rh_pci_host_fixup);
|
||||||
|
|
||||||
int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
return irq_map[slot][pin];
|
return irq_map[slot][pin];
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
/* South bridge slot number is set by the pci probe process */
|
/* South bridge slot number is set by the pci probe process */
|
||||||
static u8 sb_slot = 5;
|
static u8 sb_slot = 5;
|
||||||
|
|
||||||
int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
int irq = 0;
|
int irq = 0;
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ static char irq_tab_mace[][5] __initdata = {
|
|||||||
* irqs. I suppose a device without a pin A will thank us for doing it
|
* irqs. I suppose a device without a pin A will thank us for doing it
|
||||||
* right if there exists such a broken piece of crap.
|
* right if there exists such a broken piece of crap.
|
||||||
*/
|
*/
|
||||||
int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
return irq_tab_mace[slot][pin];
|
return irq_tab_mace[slot][pin];
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,7 @@ int pcibios_plat_dev_init(struct pci_dev *dev)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
return of_irq_parse_and_map_pci(dev, slot, pin);
|
return of_irq_parse_and_map_pci(dev, slot, pin);
|
||||||
}
|
}
|
||||||
|
@ -51,7 +51,7 @@ static char irq_tab[][5] __initdata = {
|
|||||||
{0, 0, 0, 0, 0}, /* 27: Unused */
|
{0, 0, 0, 0, 0}, /* 27: Unused */
|
||||||
};
|
};
|
||||||
|
|
||||||
int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
int virq;
|
int virq;
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ static void print_fixup_info(const struct pci_dev *pdev)
|
|||||||
pdev->vendor, pdev->device, pdev->irq);
|
pdev->vendor, pdev->device, pdev->irq);
|
||||||
}
|
}
|
||||||
|
|
||||||
int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
print_fixup_info(dev);
|
print_fixup_info(dev);
|
||||||
return dev->irq;
|
return dev->irq;
|
||||||
|
@ -38,7 +38,7 @@ static char irq_tab[][5] __initdata = {
|
|||||||
{0, PCID, PCIA, PCIB, PCIC } /* 21: PCI Slot 4 */
|
{0, PCID, PCIA, PCIB, PCIC } /* 21: PCI Slot 4 */
|
||||||
};
|
};
|
||||||
|
|
||||||
int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
int virq;
|
int virq;
|
||||||
virq = irq_tab[slot][pin];
|
virq = irq_tab[slot][pin];
|
||||||
|
@ -34,7 +34,7 @@ static const int irq_tab_mpc30x[] __initconst = {
|
|||||||
[29] = MQ200_IRQ,
|
[29] = MQ200_IRQ,
|
||||||
};
|
};
|
||||||
|
|
||||||
int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
if (slot == 30)
|
if (slot == 30)
|
||||||
return internal_func_irqs[PCI_FUNC(dev->devfn)];
|
return internal_func_irqs[PCI_FUNC(dev->devfn)];
|
||||||
|
@ -202,7 +202,7 @@ int pcibios_plat_dev_init(struct pci_dev *dev)
|
|||||||
* RETURNS: IRQ number
|
* RETURNS: IRQ number
|
||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
#if !defined(CONFIG_PMC_MSP7120_GW) && !defined(CONFIG_PMC_MSP7120_EVAL)
|
#if !defined(CONFIG_PMC_MSP7120_GW) && !defined(CONFIG_PMC_MSP7120_EVAL)
|
||||||
printk(KERN_WARNING "PCI: unknown board, no PCI IRQs assigned.\n");
|
printk(KERN_WARNING "PCI: unknown board, no PCI IRQs assigned.\n");
|
||||||
|
@ -130,7 +130,7 @@ static inline int is_rm300_revd(void)
|
|||||||
return (csmsr & 0xa0) == 0x20;
|
return (csmsr & 0xa0) == 0x20;
|
||||||
}
|
}
|
||||||
|
|
||||||
int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
switch (sni_brd_type) {
|
switch (sni_brd_type) {
|
||||||
case SNI_BRD_PCI_TOWER_CPLUS:
|
case SNI_BRD_PCI_TOWER_CPLUS:
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
#include <asm/vr41xx/tb0219.h>
|
#include <asm/vr41xx/tb0219.h>
|
||||||
|
|
||||||
int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
int irq = -1;
|
int irq = -1;
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
#include <asm/vr41xx/giu.h>
|
#include <asm/vr41xx/giu.h>
|
||||||
#include <asm/vr41xx/tb0226.h>
|
#include <asm/vr41xx/tb0226.h>
|
||||||
|
|
||||||
int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
int irq = -1;
|
int irq = -1;
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
#include <asm/vr41xx/tb0287.h>
|
#include <asm/vr41xx/tb0287.h>
|
||||||
|
|
||||||
int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
unsigned char bus;
|
unsigned char bus;
|
||||||
int irq = -1;
|
int irq = -1;
|
||||||
|
@ -522,7 +522,7 @@ static int __init alchemy_pci_init(void)
|
|||||||
arch_initcall(alchemy_pci_init);
|
arch_initcall(alchemy_pci_init);
|
||||||
|
|
||||||
|
|
||||||
int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
struct alchemy_pci_context *ctx = dev->sysdata;
|
struct alchemy_pci_context *ctx = dev->sysdata;
|
||||||
if (ctx && ctx->board_map_irq)
|
if (ctx && ctx->board_map_irq)
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
#include <linux/bcma/bcma.h>
|
#include <linux/bcma/bcma.h>
|
||||||
#include <bcm47xx.h>
|
#include <bcm47xx.h>
|
||||||
|
|
||||||
int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -61,7 +61,7 @@ arch_initcall(lasat_pci_setup);
|
|||||||
#define LASAT_IRQ_PCIC (LASAT_IRQ_BASE + 7)
|
#define LASAT_IRQ_PCIC (LASAT_IRQ_BASE + 7)
|
||||||
#define LASAT_IRQ_PCID (LASAT_IRQ_BASE + 8)
|
#define LASAT_IRQ_PCID (LASAT_IRQ_BASE + 8)
|
||||||
|
|
||||||
int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
switch (slot) {
|
switch (slot) {
|
||||||
case 1:
|
case 1:
|
||||||
|
@ -361,7 +361,7 @@ static int mt7620_pci_probe(struct platform_device *pdev)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
u16 cmd;
|
u16 cmd;
|
||||||
u32 val;
|
u32 val;
|
||||||
|
@ -59,7 +59,7 @@ union octeon_pci_address {
|
|||||||
} s;
|
} s;
|
||||||
};
|
};
|
||||||
|
|
||||||
int __initconst (*octeon_pcibios_map_irq)(const struct pci_dev *dev,
|
int (*octeon_pcibios_map_irq)(const struct pci_dev *dev,
|
||||||
u8 slot, u8 pin);
|
u8 slot, u8 pin);
|
||||||
enum octeon_dma_bar_type octeon_dma_bar_type = OCTEON_DMA_BAR_TYPE_INVALID;
|
enum octeon_dma_bar_type octeon_dma_bar_type = OCTEON_DMA_BAR_TYPE_INVALID;
|
||||||
|
|
||||||
@ -74,7 +74,7 @@ enum octeon_dma_bar_type octeon_dma_bar_type = OCTEON_DMA_BAR_TYPE_INVALID;
|
|||||||
* as it goes through each bridge.
|
* as it goes through each bridge.
|
||||||
* Returns Interrupt number for the device
|
* Returns Interrupt number for the device
|
||||||
*/
|
*/
|
||||||
int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
if (octeon_pcibios_map_irq)
|
if (octeon_pcibios_map_irq)
|
||||||
return octeon_pcibios_map_irq(dev, slot, pin);
|
return octeon_pcibios_map_irq(dev, slot, pin);
|
||||||
|
@ -181,7 +181,7 @@ static inline void rt2880_pci_write_u32(unsigned long reg, u32 val)
|
|||||||
spin_unlock_irqrestore(&rt2880_pci_lock, flags);
|
spin_unlock_irqrestore(&rt2880_pci_lock, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
u16 cmd;
|
u16 cmd;
|
||||||
int irq = -1;
|
int irq = -1;
|
||||||
|
@ -564,7 +564,7 @@ err_put_intc_node:
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
return of_irq_parse_and_map_pci(dev, slot, pin);
|
return of_irq_parse_and_map_pci(dev, slot, pin);
|
||||||
}
|
}
|
||||||
|
@ -205,7 +205,7 @@ int xlp_socdev_to_node(const struct pci_dev *lnkdev)
|
|||||||
return PCI_SLOT(lnkdev->devfn) / 8;
|
return PCI_SLOT(lnkdev->devfn) / 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
struct pci_dev *lnkdev;
|
struct pci_dev *lnkdev;
|
||||||
int lnkfunc, node;
|
int lnkfunc, node;
|
||||||
|
@ -315,7 +315,7 @@ static void xls_pcie_ack_b(struct irq_data *d)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
return get_irq_vector(dev);
|
return get_irq_vector(dev);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user