| 1611 | #define BVALUE_ATTEMPTED 2 // special value for MenuItem.BValue to avoid excessive log output |
| 1612 | |
| 1613 | void LoadAllPatchedAML(CONST CHAR16* AcpiOemPath, UINTN Pass) |
| 1614 | { |
| 1615 | if (!gSettings.AutoMerge && AUTOMERGE_PASS1 == Pass) { |
| 1616 | // nothing to do in this case, since AutoMerge=false -> no tables ever merged |
| 1617 | return; |
| 1618 | } |
| 1619 | if (ACPIPatchedAML) { |
| 1620 | DbgHeader("ACPIPatchedAML"); |
| 1621 | if (gSettings.AutoMerge) { |
| 1622 | DBG("AutoMerge pass %llu\n", Pass); |
| 1623 | } |
| 1624 | //DBG("Start: Processing Patched AML(s): "); |
| 1625 | if (gSettings.SortedACPICount) { |
| 1626 | UINTN Index; |
| 1627 | DBG("Sorted\n"); |
| 1628 | for (Index = 0; Index < gSettings.SortedACPICount; Index++) { |
| 1629 | ACPI_PATCHED_AML *ACPIPatchedAMLTmp; |
| 1630 | for (ACPIPatchedAMLTmp = ACPIPatchedAML; ACPIPatchedAMLTmp; ACPIPatchedAMLTmp = ACPIPatchedAMLTmp->Next) { |
| 1631 | if (0 == StriCmp(ACPIPatchedAMLTmp->FileName, gSettings.SortedACPI[Index]) && ACPIPatchedAMLTmp->MenuItem.BValue) { |
| 1632 | if (BVALUE_ATTEMPTED != ACPIPatchedAMLTmp->MenuItem.BValue) |
| 1633 | DBG("Disabled: %ls, skip\n", ACPIPatchedAMLTmp->FileName); |
| 1634 | ACPIPatchedAMLTmp->MenuItem.BValue = BVALUE_ATTEMPTED; |
| 1635 | break; |
| 1636 | } |
| 1637 | } |
| 1638 | if (!ACPIPatchedAMLTmp) { // NULL when not disabled |
| 1639 | DBG("Inserting table[%llu]:%ls from %ls: ", Index, gSettings.SortedACPI[Index], AcpiOemPath); |
| 1640 | if (LoadPatchedAML(AcpiOemPath, gSettings.SortedACPI[Index], Pass)) { |
| 1641 | // avoid inserting table again on second pass |
| 1642 | for (ACPI_PATCHED_AML* temp2 = ACPIPatchedAML; temp2; temp2 = temp2->Next) { |
| 1643 | if (0 == StriCmp(temp2->FileName, gSettings.SortedACPI[Index])) { |
| 1644 | temp2->MenuItem.BValue = BVALUE_ATTEMPTED; |
| 1645 | break; |
| 1646 | } |
| 1647 | } |
| 1648 | } |
| 1649 | } |
| 1650 | } |
| 1651 | } else { |
| 1652 | ACPI_PATCHED_AML *ACPIPatchedAMLTmp; |
| 1653 | DBG("Unsorted\n"); |
| 1654 | for (ACPIPatchedAMLTmp = ACPIPatchedAML; ACPIPatchedAMLTmp; ACPIPatchedAMLTmp = ACPIPatchedAMLTmp->Next) { |
| 1655 | if (!ACPIPatchedAMLTmp->MenuItem.BValue) { |
| 1656 | DBG("Inserting %ls from %ls: ", ACPIPatchedAMLTmp->FileName, AcpiOemPath); |
| 1657 | if (LoadPatchedAML(AcpiOemPath, ACPIPatchedAMLTmp->FileName, Pass)) { |
| 1658 | // avoid inserting table again on second pass |
| 1659 | ACPIPatchedAMLTmp->MenuItem.BValue = BVALUE_ATTEMPTED; |
| 1660 | } |
| 1661 | } else { |
| 1662 | if (BVALUE_ATTEMPTED != ACPIPatchedAMLTmp->MenuItem.BValue) |
| 1663 | DBG("Disabled: %ls, skip\n", ACPIPatchedAMLTmp->FileName); |
| 1664 | ACPIPatchedAMLTmp->MenuItem.BValue = BVALUE_ATTEMPTED; |
| 1665 | } |
| 1666 | } |
| 1667 | } |
| 1668 | //DBG("End: Processing Patched AML(s)\n"); |
| 1669 | } |
| 1670 | } |
no test coverage detected