Ну для FAQ это сложно, поскольку к каждой матери свой подход нужен...
Суть всево ентово в следующем.
1 Извлекаем из биоса acpitbl.bin (CBROM.EXE BIOS.BIN /acpitbl extract).
2 Вычленяем из acpitbl.bin таблицу DSDT (например хексэдитором удаляем все до (до последней) сигнатуры DSDT) и сохраняем в например DSDT.aml, а то что было до, тоже сохраняем в файл tables.aml.
3 Качаем asl.exe (Мелкософт ASL компилер) iasl.exe (Интел ASL компилер) c acpi.info/toolkit.htm
4 Декомпилируем DSDT.aml в DSDT.dsl (iasl.exe -d DSDT.aml).
5 В получившемся тексте (DSDT.dsl) ищем "Scope (\_SB)" (это начало дерева, описываюшего усторйства), потом, например "Device (UAR1)". Это описание устройства UART. К нему добавляем имя _PRW.
Name (_PRW, Package (0x02) // что это - незнаю
{
0x0A, // бит GPE, через который устройство сообщает о событии
0x04 // наинизшее состояние (S4) из которого устройство может "будить комп"
})
6 Ищем "Scope (\_GPE)", туда добавляем обработку событий от устройств
Scope (\_GPE)
{
Method (_L0A, 0, Serialized) // обработка бита 0x0A (как и при описании устройства)
7 Компилируем DSDT.dsl обратно в DSDT.aml. Это самое, наверное, интересно место, поскольку с большой вероятностью оно не откомпилируется из-за ошибок
Как испралять конкретный файл нужно разбираться отдельно. Лучше использовать компилятор от Мелкософта, он прохавывает большее количество "ошибок" и не делает оптимизаций.
8 Полученный (наконец-то!!!) DSDT.aml добавляем к tables.aml, получая acpitbl.bin.
9 Запаковываем acpitbl.bin обратно (CBROM.EXE BIOS.BIN /acpitbl release, потом CBROM.EXE BIOS.BIN /acpitbl acpitbl.bin).
10 Прошиваем новый биос. Самое страшное, что случалось (при ошибках в таблице ACPI) - это BSOD сразу после пробегания полоски в "текстовом" режиме, с сообшением о неправильной таблице, поэтому сделайте все необходимое для перепрошивки старого биоса без загрузки Винды.
Эта метода никапельки не претендует на правильность и полноту. Но это проверено и работает.
Если кто-то что-то знает еще, пожалуйста, делитесь информацией!
Тут ничего не сказано про добваление устройства IRDA, которое отсутствует в таблицах многих производителей, поскольку вопрос еще более специфический и не прверенный мной практически.
Ну для FAQ это сложно, поскольку к каждой матери свой подход нужен...
Суть всево ентово в следующем.
1 Извлекаем из биоса acpitbl.bin (CBROM.EXE BIOS.BIN /acpitbl extract).
2 Вычленяем из acpitbl.bin таблицу DSDT (например хексэдитором удаляем все до (до последней) сигнатуры DSDT) и сохраняем в например DSDT.aml, а то что было до, тоже сохраняем в файл tables.aml.
3 Качаем asl.exe (Мелкософт ASL компилер) iasl.exe (Интел ASL компилер) c acpi.info/toolkit.htm
4 Декомпилируем DSDT.aml в DSDT.dsl (iasl.exe -d DSDT.aml).
5 В получившемся тексте (DSDT.dsl) ищем "Scope (\_SB)" (это начало дерева, описываюшего усторйства), потом, например "Device (UAR1)". Это описание устройства UART. К нему добавляем имя _PRW.
Name (_PRW, Package (0x02) // что это - незнаю
{
0x0A, // бит GPE, через который устройство сообщает о событии
0x04 // наинизшее состояние (S4) из которого устройство может "будить комп"
})
6 Ищем "Scope (\_GPE)", туда добавляем обработку событий от устройств
Scope (\_GPE)
{
Method (_L0A, 0, Serialized) // обработка бита 0x0A (как и при описании устройства)
{
Notify (\_SB.PCI0.ISA.UAR1, 0x02) // сообщить операционке о случившемся
Notify (\_SB.PCI0.ISA.UAR2, 0x02)
}
}
Аналогично можно поступить с устройством PCI0, USB0 (у меня биты 0x09 и 0x08 соответственно)
Scope (\_GPE)
{
Method (_L08, 0, Serialized)
{
Notify (\_SB.PCI0.USB0, 0x02)
}
Method (_L0A, 0, Serialized)
{
Notify (\_SB.PCI0.ISA.UAR1, 0x02)
Notify (\_SB.PCI0.ISA.UAR2, 0x02)
}
Method (_L09, 0, Serialized)
{
Notify (\_SB.PCI0, 0x02)
}
}
7 Компилируем DSDT.dsl обратно в DSDT.aml. Это самое, наверное, интересно место, поскольку с большой вероятностью оно не откомпилируется из-за ошибок
Как испралять конкретный файл нужно разбираться отдельно. Лучше использовать компилятор от Мелкософта, он прохавывает большее количество "ошибок" и не делает оптимизаций.
8 Полученный (наконец-то!!!) DSDT.aml добавляем к tables.aml, получая acpitbl.bin.
9 Запаковываем acpitbl.bin обратно (CBROM.EXE BIOS.BIN /acpitbl release, потом CBROM.EXE BIOS.BIN /acpitbl acpitbl.bin).
10 Прошиваем новый биос. Самое страшное, что случалось (при ошибках в таблице ACPI) - это BSOD сразу после пробегания полоски в "текстовом" режиме, с сообшением о неправильной таблице, поэтому сделайте все необходимое для перепрошивки старого биоса без загрузки Винды.
Эта метода никапельки не претендует на правильность и полноту. Но это проверено и работает.
Если кто-то что-то знает еще, пожалуйста, делитесь информацией!
Тут ничего не сказано про добваление устройства IRDA, которое отсутствует в таблицах многих производителей, поскольку вопрос еще более специфический и не прверенный мной практически.