]> rtime.felk.cvut.cz Git - l4.git/blobdiff - l4/pkg/io/io/server/src/acpi/pci-acpi.cc
Update
[l4.git] / l4 / pkg / io / io / server / src / acpi / pci-acpi.cc
similarity index 90%
rename from l4/pkg/io/server/src/acpi/pci-acpi.cc
rename to l4/pkg/io/io/server/src/acpi/pci-acpi.cc
index 3ca36af2472f26da683780d259dabb88ceed09c4..722bfeca9147e419a9f46330c96bd4b7f2dfb3fb 100644 (file)
@@ -33,7 +33,7 @@ struct Acpi_pci_handler : Hw::Feature_manager<Pci::Dev, Acpi_dev>
     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;
   }
@@ -81,17 +81,26 @@ Acpi_pci_irq_router_rs::request(Resource *parent, ::Device *,
     }
 
   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);
@@ -161,7 +170,7 @@ Acpi_pci_irq_router_rs::add_prt_entry(ACPI_HANDLE obj,
          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");
@@ -197,7 +206,7 @@ Resource *discover_prt(Acpi_dev *adev)
   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))
@@ -253,7 +262,8 @@ struct Acpi_pci_bridge_handler : Hw::Feature_manager<Hw::Pci::Bus, Acpi_dev>
       }
     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;
       }