| 1724 | */ |
| 1725 | |
| 1726 | UINT32 FixADP1 (UINT8* dsdt, UINT32 len) |
| 1727 | { |
| 1728 | UINT32 i, j; |
| 1729 | UINT32 adr, size; |
| 1730 | INT32 sizeoffset, shift; |
| 1731 | CHAR8 Name[4]; |
| 1732 | DBG("Start ADP1 fix\n"); |
| 1733 | shift = FindBin(dsdt, len, (const UINT8*)acpi3, sizeof(acpi3)); |
| 1734 | if (shift < 0) { |
| 1735 | // not found - create new one or do nothing |
| 1736 | MsgLog("no device(AC) exists\n"); |
| 1737 | return len; |
| 1738 | } |
| 1739 | adr = devFind(dsdt, (UINT32)shift); |
| 1740 | if (!adr) { |
| 1741 | return len; |
| 1742 | } |
| 1743 | size = get_size(dsdt, adr); |
| 1744 | //check name and replace |
| 1745 | if (size < 0x40) { |
| 1746 | j = adr + 1; |
| 1747 | } else { |
| 1748 | j = adr + 2; |
| 1749 | } |
| 1750 | for (i=0; i<4; i++) { |
| 1751 | Name[i] = dsdt[j+i]; |
| 1752 | } |
| 1753 | ReplaceName(dsdt, len, Name, "ADP1"); |
| 1754 | //find PRW |
| 1755 | if(FindBin(dsdt+adr, size, (const UINT8*)prw1c, 8) >= 0){ |
| 1756 | DBG("_prw is present\n"); |
| 1757 | return len; |
| 1758 | } |
| 1759 | j = adr + size; |
| 1760 | sizeoffset = sizeof(prw1c); |
| 1761 | len = move_data(j, dsdt, len, sizeoffset); |
| 1762 | CopyMem(dsdt + j, prw1c, sizeoffset); |
| 1763 | shift = write_size(adr, dsdt, len, sizeoffset); |
| 1764 | sizeoffset += shift; |
| 1765 | len += shift; |
| 1766 | len = CorrectOuters(dsdt, len, adr - 3, sizeoffset); |
| 1767 | return len; |
| 1768 | } |
| 1769 | |
| 1770 | UINT32 FixAny (UINT8* dsdt, UINT32 len, const XBuffer<UINT8> ToFind, const XBuffer<UINT8> ToReplace) |
| 1771 | { |
no test coverage detected