if (ACPI_FAILURE(status))
d_printf(DBG_ERR, "error: cannot install notification handler "
"for ACPI PCI wakeup events: %s\n",
- AcpiFormatException(status));
+ AcpiFormatException(status));
return false;
}
}
Hw::Device *cd = dynamic_cast<Hw::Device*>(cdev);
-
- if (!cd)
- return false;
+ assert (cd);
struct acpica_pci_irq *irq = 0;
if (find(cd->adr() >> 16, child->start(), &irq) < 0)
- return false;
+ {
+ child->disable();
+ if (dlevel(DBG_WARN))
+ {
+ d_printf(DBG_WARN,
+ "warning: could not allocate PCI IRQ: missing PRT entry: %s\n",
+ cdev->get_full_path().c_str());
+ child->dump(2);
+ cdev->dump(2);
+ }
- if (!irq)
- return false;
+ return false;
+ }
+
+ assert (irq);
child->del_flags(Resource::F_relative);
child->start(irq->irq);
return -ENODEV;
}
- status = AcpiWalkResources(link, (char*)"_CRS", get_irq_cb, &ne->irq);
+ status = AcpiWalkResources(link, ACPI_STRING("_CRS"), get_irq_cb, &ne->irq);
if (ACPI_FAILURE(status))
{
d_printf(DBG_WARN, "\nWARNING: Could not evaluate _CRS of PCI IRQ Link Device\n");
ACPI_STATUS status;
ACPI_HANDLE handle;
- status = AcpiGetHandle(adev->handle(), (char*)"_PRT", &handle);
+ status = AcpiGetHandle(adev->handle(), ACPI_STRING("_PRT"), &handle);
// no PRT!!
if (ACPI_FAILURE(status))
}
else if(router)
{
- d_printf(DBG_WARN, "warning: multiple IRQ routing tables for device\n");
+ d_printf(DBG_WARN, "warning: multiple IRQ routing tables for device: %s\n",
+ dev->get_full_path().c_str());
delete router;
}