PCI: refactor root node detection

Change-Id: Icc4ab0c3f7258914d798267e08c47977c0987c97
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5547
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Alex von Gluck IV <[email protected]>
Reviewed-by: David Karoly <[email protected]>
This commit is contained in:
David Karoly
2022-08-17 19:23:51 +00:00
parent 22cfe80c83
commit c6e6743261
@@ -32,35 +32,31 @@ pci_root_supports_device(device_node* parent)
return -1.0f; return -1.0f;
#if defined(__riscv) #if defined(__riscv)
const char* compatible; if (strcmp(bus, "fdt") == 0) {
if (gDeviceManager->get_attr_string(parent, "fdt/compatible", &compatible, const char* compatible;
false) < B_OK) if (gDeviceManager->get_attr_string(parent, "fdt/compatible", &compatible, false) < B_OK)
return -1.0f; return -1.0f;
if (strcmp(bus, "fdt") != 0) if (strcmp(compatible, "pci-host-ecam-generic") == 0
return 0.0f; || strcmp(compatible, "sifive,fu740-pcie") == 0) {
return 1.0f;
if (strcmp(compatible, "pci-host-ecam-generic") != 0 }
&& strcmp(compatible, "sifive,fu740-pcie") != 0) {
return 0.0f;
} }
#elif defined(__aarch64__) #elif defined(__aarch64__)
if (strcmp(bus, "acpi") != 0) if (strcmp(bus, "acpi") == 0) {
return -1.0f; const char* hid;
if (gDeviceManager->get_attr_string(parent, ACPI_DEVICE_HID_ITEM, &hid, false) < B_OK)
return -1.0f;
const char* hid; if (strcmp(hid, "PNP0A03") == 0 || strcmp(hid, "PNP0A08") == 0)
if (gDeviceManager->get_attr_string(parent, ACPI_DEVICE_HID_ITEM, &hid, return 1.0f;
false) < B_OK) }
return -1.0f;
if (strcmp(hid, "PNP0A03") != 0 && strcmp(hid, "PNP0A08") != 0)
return -1.0f;
#else #else
if (strcmp(bus, "root") != 0) if (strcmp(bus, "root") == 0)
return 0.0f; return 1.0f;
#endif #endif
return 1.0; return 0.0;
} }