ACPI / PCI: Do not call ISA-specific code if ISA is not supported
This commit moves ISA-specific code to separate function and makes that function depend on CONFIG_{E}ISA so that we do not have to maintain acpi_isa_irq_to_gsi() function for architectures which do not support ISA. Signed-off-by: Tomasz Nowicki <tomasz.nowicki@linaro.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
Родитель
b685f3b174
Коммит
c1aaae673f
|
@ -370,6 +370,30 @@ static struct acpi_prt_entry *acpi_pci_irq_lookup(struct pci_dev *dev, int pin)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if IS_ENABLED(CONFIG_ISA) || IS_ENABLED(CONFIG_EISA)
|
||||||
|
static int acpi_isa_register_gsi(struct pci_dev *dev)
|
||||||
|
{
|
||||||
|
u32 dev_gsi;
|
||||||
|
|
||||||
|
/* Interrupt Line values above 0xF are forbidden */
|
||||||
|
if (dev->irq > 0 && (dev->irq <= 0xF) &&
|
||||||
|
(acpi_isa_irq_to_gsi(dev->irq, &dev_gsi) == 0)) {
|
||||||
|
dev_warn(&dev->dev, "PCI INT %c: no GSI - using ISA IRQ %d\n",
|
||||||
|
pin_name(dev->pin), dev->irq);
|
||||||
|
acpi_register_gsi(&dev->dev, dev_gsi,
|
||||||
|
ACPI_LEVEL_SENSITIVE,
|
||||||
|
ACPI_ACTIVE_LOW);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static inline int acpi_isa_register_gsi(struct pci_dev *dev)
|
||||||
|
{
|
||||||
|
return -ENODEV;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
int acpi_pci_irq_enable(struct pci_dev *dev)
|
int acpi_pci_irq_enable(struct pci_dev *dev)
|
||||||
{
|
{
|
||||||
struct acpi_prt_entry *entry;
|
struct acpi_prt_entry *entry;
|
||||||
|
@ -416,19 +440,9 @@ int acpi_pci_irq_enable(struct pci_dev *dev)
|
||||||
* driver reported one, then use it. Exit in any case.
|
* driver reported one, then use it. Exit in any case.
|
||||||
*/
|
*/
|
||||||
if (gsi < 0) {
|
if (gsi < 0) {
|
||||||
u32 dev_gsi;
|
if (acpi_isa_register_gsi(dev))
|
||||||
/* Interrupt Line values above 0xF are forbidden */
|
|
||||||
if (dev->irq > 0 && (dev->irq <= 0xF) &&
|
|
||||||
(acpi_isa_irq_to_gsi(dev->irq, &dev_gsi) == 0)) {
|
|
||||||
dev_warn(&dev->dev, "PCI INT %c: no GSI - using ISA IRQ %d\n",
|
|
||||||
pin_name(pin), dev->irq);
|
|
||||||
acpi_register_gsi(&dev->dev, dev_gsi,
|
|
||||||
ACPI_LEVEL_SENSITIVE,
|
|
||||||
ACPI_ACTIVE_LOW);
|
|
||||||
} else {
|
|
||||||
dev_warn(&dev->dev, "PCI INT %c: no GSI\n",
|
dev_warn(&dev->dev, "PCI INT %c: no GSI\n",
|
||||||
pin_name(pin));
|
pin_name(pin));
|
||||||
}
|
|
||||||
|
|
||||||
kfree(entry);
|
kfree(entry);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче