Здрасте,
Этот ноут имеет некоторые проблемы. Может кто нибудь из вас сталкивался с подобными и посоветует как можно их решить.
1) в DSDT не определена SLPB sleep кнопка. соответственно acpi событие по ее нажатии не посылается. Система определяет только SLPF кнопку, а такие обычно не шлют события. На клаве эта кнопка Fn-F5. Может мне кто подсоветует как мне оживить эту комбинацию в линуксе. Идеальный вариант это слегка дописать DSDT код. Но как? Просто описание ее я добавлял
Device (SLPB)
{
Name (_HID, EisaId ("PNP0C0E"))
}
и она появлялась, но естественно событие не слала. Может как то можно заставить (систему или биос) генерировать ее код? Хотя конечно acpi событие было бы идеальнее.
2) Эта проблема которая меня очень беспокоит: acpi возвращает температуру проца всегда 0 С. Я пытался найти корни в DSDT коде (ну как мог ) и мне кажется что их там нет.
Method (_TMP, 0, NotSerialized)
{
If (\_SB.PCI0.LPC0.ECOK ())
{
Multiply (\_SB.PCI0.LPC0.EC0.THEM, 0x0A, Local0)
Add (Local0, 0x0AAC, Local0)
Return (Local0)
}
Return (0x0BBA)
}
Поскольку 0x0BBA в кельвинах не есть 0 С, то значит проблема в _SB.PCI0.LPC0.EC0.THEM который всегда 0.
Мне кажется, что это может сказаться на работе ноута. Скажем, вдруг он перегревается, но я не знаю. Особенно при работе от батареи: кулеры срабатывают реже в целях экономии - все может быть, или нет?
Да, компиляция DSDT кода идет без ошибок.
Заранее спасибо.
Верно, именно это и надо было добавить в _REG-метод Device(EC0).
Если не происходит, можно предположить, что это "не то" поле. А кнопки увеличения-уменьшения громкости имеются (или сочетания с Fn)?
имеются, но они генерируют код, а не acpi событие
Добавлено спустя 2 минуты 26 секунд:
sleep кнопка кода не генерирует
Я к тому, чтобы вместо "\_SB.SLPB" использовать "\_SB.VOLU" / "\_SB.VOLD" - просто для проверки.
может вы имеете ввиду вместо \_SB.PCI0.LPC0.EC0.SBTN использовать "\_SB.PCI0.LPC0.EC0.VOLU" или "\_SB.PCI0.LPC0.EC0.VOLD" ? Могу попробовать, но вечером, когда буду дома. Может я чего не доганяю, что может быть вполне, но "\_SB.VOLU" не есть девайс.
Добавлено спустя 10 минут 32 секунды:
вот что пишет ACPI spec об sleep кнопке:
мне как то это не сильно помогает
В выше приведенном фрагменте речь идет о Sleep Button, описанной как \_SB.SLPB, где Sleep Button Device - PNP0C0E. У Вас же - \_SB.PCI0.LPC0.EC0.SBTN, Device - PNP0C09 (см. 4.7.2.2.2.2 Control Method Sleeping Button). Там, вслед за Method (PCLK, 0, NotSerialized) и нужно опысывать методами обработку событий (см. 4.7.4.2.2 Embedded Controller):
...embedded controller can support up to 255 generic events per embedded controller, referred to as query events. These query event handles are defined within the embedded controller’s device as control methods.
Можно также порекомендовать следующее: найти бук, на котором кнопка SLPBTN есть и в такой же ОС работает. Посмотреть там DSDT...
P.S. Интересно в WinXP кнопка Sleep Button работает?
P.P.S. Полезным может оказаться ACPI FAQ ( acpi.info/acpi_faq.htm ): Q. Can an embedded controller (EC) report both wake and non-wake events?
Открытая книга: icbook.com.ua
в ХР работает ибо там ставится Quick Launch Buttons драйвер, который это и поддерживает.
по поводу найти где есть и работает: то это везде по разному реализовано. очень по разному.
Добавлено спустя 8 минут 53 секунды:
вот что есть в ини файле этого драйвера:
А я не зря спросил, т.к. по поводу Device PNP0C0E все ясно: Sleep Button Device. A device controlled through an ACPI-aware driver that provides power button functionality.
А за PNP0C09 какой ACPI-драйвер отвечать будет?
Открытая книга: icbook.com.ua
так с него все кнопки работают, кроме sleep. Какой драйвер?
Так у нее статус особый (см. цитату из ACPI Spec).
P.S.
Тот, который обслуживает события на устройстве PNP0C0E, принадлежащем ресурсам системной платы: ACPI sleep button device (см. download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c... ). У Вас же в DSDT кнопка обявлена как поле устройства PNP0C09. Как выйти из этой ситуации - не представляю. По идее в дереве Device (EC0) нужно было бы определять устройство SleepBTN с ресурсом, относящимся к ERAM (SBTN, 1), но с Name(_HID, EISAID(“PNP0C0E”)), как это делается в примере
А дальше, так как у Вас в выше приведенном примере
// Define a control method sleep button
Открытая книга: icbook.com.ua
Господа, спасибо за помощь, но все разрешилось и оказалось намного проще. Что касается температуры проца, то они просто использовали не то поле, нужно было CTMP. А со sleep еще проще: оказывается она все же имеет код 223. Просто ядро почему то не говорит, что определило кнопку с определенным кодом, так как это было для других Fn кнопок. Но если это дело форсировать, то все работает.
Отправить комментарий