PCI: Provide a default pcibios_update_irq()
Most architectures implement this in exactly the same way. Instead of having each architecture duplicate this function, provide a single implementation in the core and make it a weak symbol so that it can be overridden on architectures where it is required. Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
This commit is contained in:
parent
3ddbebf878
commit
8885b7b637
|
@ -256,12 +256,6 @@ pcibios_fixup_bus(struct pci_bus *bus)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
pcibios_update_irq(struct pci_dev *dev, int irq)
|
|
||||||
{
|
|
||||||
pci_write_config_byte(dev, PCI_INTERRUPT_LINE, irq);
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
int
|
||||||
pcibios_enable_device(struct pci_dev *dev, int mask)
|
pcibios_enable_device(struct pci_dev *dev, int mask)
|
||||||
{
|
{
|
||||||
|
|
|
@ -270,15 +270,6 @@ static void __devinit pci_fixup_it8152(struct pci_dev *dev)
|
||||||
}
|
}
|
||||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ITE, PCI_DEVICE_ID_ITE_8152, pci_fixup_it8152);
|
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ITE, PCI_DEVICE_ID_ITE_8152, pci_fixup_it8152);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void pcibios_update_irq(struct pci_dev *dev, int irq)
|
|
||||||
{
|
|
||||||
if (debug_pci)
|
|
||||||
printk("PCI: Assigning IRQ %02d to %s\n", irq, pci_name(dev));
|
|
||||||
pci_write_config_byte(dev, PCI_INTERRUPT_LINE, irq);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If the bus contains any of these devices, then we must not turn on
|
* If the bus contains any of these devices, then we must not turn on
|
||||||
* parity checking of any kind. Currently this is CyberPro 20x0 only.
|
* parity checking of any kind. Currently this is CyberPro 20x0 only.
|
||||||
|
|
|
@ -461,14 +461,6 @@ void pcibios_set_master (struct pci_dev *dev)
|
||||||
/* No special bus mastering setup handling */
|
/* No special bus mastering setup handling */
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
pcibios_update_irq (struct pci_dev *dev, int irq)
|
|
||||||
{
|
|
||||||
pci_write_config_byte(dev, PCI_INTERRUPT_LINE, irq);
|
|
||||||
|
|
||||||
/* ??? FIXME -- record old value for shutdown. */
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
int
|
||||||
pcibios_enable_device (struct pci_dev *dev, int mask)
|
pcibios_enable_device (struct pci_dev *dev, int mask)
|
||||||
{
|
{
|
||||||
|
|
|
@ -87,11 +87,6 @@ int pcibios_enable_device(struct pci_dev *dev, int mask)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void pcibios_update_irq(struct pci_dev *dev, int irq)
|
|
||||||
{
|
|
||||||
pci_write_config_byte(dev, PCI_INTERRUPT_LINE, irq);
|
|
||||||
}
|
|
||||||
|
|
||||||
void __devinit pcibios_fixup_bus(struct pci_bus *bus)
|
void __devinit pcibios_fixup_bus(struct pci_bus *bus)
|
||||||
{
|
{
|
||||||
struct pci_dev *dev;
|
struct pci_dev *dev;
|
||||||
|
|
|
@ -313,12 +313,6 @@ void __devinit pcibios_fixup_bus(struct pci_bus *bus)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
pcibios_update_irq(struct pci_dev *dev, int irq)
|
|
||||||
{
|
|
||||||
pci_write_config_byte(dev, PCI_INTERRUPT_LINE, irq);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef CONFIG_HOTPLUG
|
#ifdef CONFIG_HOTPLUG
|
||||||
EXPORT_SYMBOL(PCIBIOS_MIN_IO);
|
EXPORT_SYMBOL(PCIBIOS_MIN_IO);
|
||||||
EXPORT_SYMBOL(PCIBIOS_MIN_MEM);
|
EXPORT_SYMBOL(PCIBIOS_MIN_MEM);
|
||||||
|
|
|
@ -192,11 +192,6 @@ int pcibios_enable_device(struct pci_dev *dev, int mask)
|
||||||
return pci_enable_resources(dev, mask);
|
return pci_enable_resources(dev, mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
void pcibios_update_irq(struct pci_dev *dev, int irq)
|
|
||||||
{
|
|
||||||
pci_write_config_byte(dev, PCI_INTERRUPT_LINE, irq);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void __init
|
static void __init
|
||||||
pcibios_bus_report_status_early(struct pci_channel *hose,
|
pcibios_bus_report_status_early(struct pci_channel *hose,
|
||||||
int top_bus, int current_bus,
|
int top_bus, int current_bus,
|
||||||
|
|
|
@ -102,15 +102,6 @@ int pcibios_enable_device(struct pci_dev *dev, int mask)
|
||||||
return pci_enable_resources(dev, mask);
|
return pci_enable_resources(dev, mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
void pcibios_update_irq(struct pci_dev *dev, int irq)
|
|
||||||
{
|
|
||||||
#ifdef CONFIG_PCI_DEBUG
|
|
||||||
printk(KERN_DEBUG "LEONPCI: Assigning IRQ %02d to %s\n", irq,
|
|
||||||
pci_name(dev));
|
|
||||||
#endif
|
|
||||||
pci_write_config_byte(dev, PCI_INTERRUPT_LINE, irq);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* in/out routines taken from pcic.c
|
/* in/out routines taken from pcic.c
|
||||||
*
|
*
|
||||||
* This probably belongs here rather than ioport.c because
|
* This probably belongs here rather than ioport.c because
|
||||||
|
|
|
@ -622,10 +622,6 @@ void __devinit pcibios_fixup_bus(struct pci_bus *pbus)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void pcibios_update_irq(struct pci_dev *pdev, int irq)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
resource_size_t pcibios_align_resource(void *data, const struct resource *res,
|
resource_size_t pcibios_align_resource(void *data, const struct resource *res,
|
||||||
resource_size_t size, resource_size_t align)
|
resource_size_t size, resource_size_t align)
|
||||||
{
|
{
|
||||||
|
|
|
@ -403,14 +403,6 @@ void pcibios_set_master(struct pci_dev *dev)
|
||||||
/* No special bus mastering setup handling. */
|
/* No special bus mastering setup handling. */
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* This is called from the generic Linux layer.
|
|
||||||
*/
|
|
||||||
void pcibios_update_irq(struct pci_dev *dev, int irq)
|
|
||||||
{
|
|
||||||
pci_write_config_byte(dev, PCI_INTERRUPT_LINE, irq);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Enable memory and/or address decoding, as appropriate, for the
|
* Enable memory and/or address decoding, as appropriate, for the
|
||||||
* device described by the 'dev' struct.
|
* device described by the 'dev' struct.
|
||||||
|
|
|
@ -1033,14 +1033,6 @@ char __devinit *pcibios_setup(char *str)
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* This is called from the generic Linux layer.
|
|
||||||
*/
|
|
||||||
void pcibios_update_irq(struct pci_dev *dev, int irq)
|
|
||||||
{
|
|
||||||
pci_write_config_byte(dev, PCI_INTERRUPT_LINE, irq);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Enable memory address decoding, as appropriate, for the
|
* Enable memory address decoding, as appropriate, for the
|
||||||
* device described by the 'dev' struct. The I/O decoding
|
* device described by the 'dev' struct. The I/O decoding
|
||||||
|
|
|
@ -154,14 +154,6 @@ void __init puv3_pci_adjust_zones(unsigned long *zone_size,
|
||||||
zhole_size[0] = 0;
|
zhole_size[0] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void pcibios_update_irq(struct pci_dev *dev, int irq)
|
|
||||||
{
|
|
||||||
if (debug_pci)
|
|
||||||
printk(KERN_DEBUG "PCI: Assigning IRQ %02d to %s\n",
|
|
||||||
irq, pci_name(dev));
|
|
||||||
pci_write_config_byte(dev, PCI_INTERRUPT_LINE, irq);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If the bus contains any of these devices, then we must not turn on
|
* If the bus contains any of these devices, then we must not turn on
|
||||||
* parity checking of any kind.
|
* parity checking of any kind.
|
||||||
|
|
|
@ -62,11 +62,6 @@ out:
|
||||||
return irq;
|
return irq;
|
||||||
}
|
}
|
||||||
|
|
||||||
void pcibios_update_irq(struct pci_dev *dev, int irq)
|
|
||||||
{
|
|
||||||
pci_write_config_byte(dev, PCI_INTERRUPT_LINE, irq);
|
|
||||||
}
|
|
||||||
|
|
||||||
int __init pci_visws_init(void)
|
int __init pci_visws_init(void)
|
||||||
{
|
{
|
||||||
pcibios_enable_irq = &pci_visws_enable_irq;
|
pcibios_enable_irq = &pci_visws_enable_irq;
|
||||||
|
|
|
@ -210,14 +210,6 @@ void pcibios_set_master(struct pci_dev *dev)
|
||||||
/* No special bus mastering setup handling */
|
/* No special bus mastering setup handling */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* the next one is stolen from the alpha port... */
|
|
||||||
|
|
||||||
void
|
|
||||||
pcibios_update_irq(struct pci_dev *dev, int irq)
|
|
||||||
{
|
|
||||||
pci_write_config_byte(dev, PCI_INTERRUPT_LINE, irq);
|
|
||||||
}
|
|
||||||
|
|
||||||
int pcibios_enable_device(struct pci_dev *dev, int mask)
|
int pcibios_enable_device(struct pci_dev *dev, int mask)
|
||||||
{
|
{
|
||||||
u16 cmd, old_cmd;
|
u16 cmd, old_cmd;
|
||||||
|
|
|
@ -17,6 +17,11 @@
|
||||||
#include <linux/ioport.h>
|
#include <linux/ioport.h>
|
||||||
#include <linux/cache.h>
|
#include <linux/cache.h>
|
||||||
|
|
||||||
|
void __weak pcibios_update_irq(struct pci_dev *dev, int irq)
|
||||||
|
{
|
||||||
|
dev_dbg(&dev->dev, "assigning IRQ %02d\n", irq);
|
||||||
|
pci_write_config_byte(dev, PCI_INTERRUPT_LINE, irq);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
pdev_fixup_irq(struct pci_dev *dev,
|
pdev_fixup_irq(struct pci_dev *dev,
|
||||||
|
|
Loading…
Reference in New Issue