проблемы с hp pavilion dv5021

Здрасте,

Этот ноут имеет некоторые проблемы. Может кто нибудь из вас сталкивался с подобными и посоветует как можно их решить.

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 кода идет без ошибок.

Заранее спасибо.

Аватар пользователя apple_rom

Верно, именно это и надо было добавить в _REG-метод Device(EC0).
Если не происходит, можно предположить, что это "не то" поле. А кнопки увеличения-уменьшения громкости имеются (или сочетания с Fn)?

имеются, но они генерируют код, а не acpi событие

Добавлено спустя 2 минуты 26 секунд:

sleep кнопка кода не генерирует

Аватар пользователя apple_rom

Я к тому, чтобы вместо "\_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 кнопке:

When using the two button model, ACPI supports a second button that when pressed will request OSPM to
transition the platform between the G0 working and G1 sleeping states. Support for a sleep button is
indicated by a combination of the SLEEP_BUTTON flag and the sleep button device object:

Table 4-9 Sleep Button Support

Indicated Support             SLEEP_BUTTON Flag     Sleep Button Device Object
No sleep button               Set                   Absent
Fixed hardware sleep button   Clear                 Absent
Control method sleep button   Set                   Present


Fixed Hardware Sleeping Button

The fixed hardware sleep button has its event programming model in the PM1x_EVT_BLK. This logic
consists of a single enable bit and sticky status bit. When the user presses the sleep button, the sleep button
status bit (SLPBTN_STS) is unconditionally set. Additionally, if the sleep button enable bit (SLPBTN_EN)
is set, and the sleep button status bit is set (SLPBTN_STS, due to a button press) while the system is in the
G0 state, then an SCI is generated. OSPM responds to the event by clearing the SLPBTN_STS bit. The
sleep button logic provides debounce logic that sets the SLPBTN_STS bit on the button press “edge.”
While the system is sleeping (in either the S0, S1, S2, S3 or S4 states), any further sleep button press (after
the button press that caused the system transition into the sleeping state) sets the sleep button status bit
(SLPBTN_STS) and wakes the system if the SLP_EN bit is set. OSPM responds by clearing the sleep
button status bit and waking the system.

Control Method Sleeping Button

The sleep button programming model can also use the generic hardware programming model. This allows
the sleep button to reside in any of the generic hardware address spaces (for example, the embedded
controller) instead of fixed space. If the sleep button is implemented via generic hardware, then the OEM
needs to define the sleep button as a device with an _HID object value of “PNP0C0E”, which then
identifies this device as the sleep button to OSPM. The AML event handler then generates a Notify
command to notify OSPM that a sleep button event was generated. While in the working state, a sleep
button press is a user request to transition the system into the sleeping (G1) state. In these cases the sleep
button event handler issues the Notify command with the device specific code of 0x80. This will indicate to
OSPM to pass control to the sleep button driver (PNP0C0E) with the knowledge that the user is requesting
a transition out of the G0 state. Upon waking-up from a G1 sleeping state, the AML event handler
generates a Notify command with the code of 0x2 to indicate it was responsible for waking the system.
The sleep button device needs to be declared as a device within the ACPI Namespace for the platform and
only requires an _HID. An example definition is shown below.
The AML code below does the following:
·  Creates a device named “SLPB” and associates the Plug and Play identifier (through the _HID object)
of “PNP0C0E.”
The Plug and Play identifier associates this device object with the sleep button driver.
·  Creates an operational region for the control method sleep button’s programming model:
System I/O space at 0x201.
Fields that are not accessed are written as “1s” (these status bits clear upon writing a “1” to their bit
position, hence preserved would fail in this case).
·  Creates a field within the operational region for the sleep button status bit (called PBP). In this case the
sleep button status bit is a child of the general-purpose status bit 0. When this bit is set it is the
responsibility of the AML code to clear it (OSPM clears the general-purpose status bits). The address
of the status bit is 0x201.0 (bit 0 at address 0x201).
·  Creates an additional status bit called PBW for the sleep button wake event. This is the next bit and its
physical address would be 0x201.1 (bit 1 at address 0x201).
·  Generates an event handler for the sleep button that is connected to bit 0 of the general-purpose status
register 0. The event handler does the following:
Clears the sleep button status bit in hardware (writes a “1” to it).
Notifies OSPM of the event by calling the Notify command passing the sleep button object and the
device specific event indicator 0x80.

// Define a control method sleep button
Device(\_SB.SLPB){
	Name(_HID, EISAID(“PNP0C0E”))
	Name(_PRW, Package(){0x01, 0x04})
	OperationRegion(\Boo, SystemIO, 0x201, 0x1)
	Field(\Boo, ByteAcc, NoLock, WriteAsZeros){
		SBP, 1, // sleep request
		SBW, 1 // wakeup request
	} // end of field definition
}

Scope(\_GPE){ // Root level event handlers
	Method(_L01){ // uses bit 1 of GP0_STS register
		If(SBP){
			Store(One, SBP) // clear sleep button status
			Notify(\_SB.SLPB, 0x80) // Notify OS of event
		}
		IF(SBW){
			Store(One, SBW)
			Notify(\_SB.SLPB, 0x2)
		}
	} // end of _L01 handler
} // end of \_GPE scope

мне как то это не сильно помогает:)

Аватар пользователя icbook

В выше приведенном фрагменте речь идет о 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?

в ХР работает ибо там ставится Quick Launch Buttons драйвер, который это и поддерживает.

по поводу найти где есть и работает: то это везде по разному реализовано. очень по разному.

Добавлено спустя 8 минут 53 секунды:

вот что есть в ини файле этого драйвера:

[1004]
;Sleep Standby
Button=1004
Name=fn + F5
Icon=fnf5.ico
IconId=237
AltIconId=268
AssignmentStringId=5022

Аватар пользователя icbook

Alex L писал(-а):
в ХР работает ибо там ставится Quick Launch Buttons драйвер, который это и поддерживает.

А я не зря спросил, т.к. по поводу Device PNP0C0E все ясно: Sleep Button Device. A device controlled through an ACPI-aware driver that provides power button functionality.

А за PNP0C09 какой ACPI-драйвер отвечать будет?

так с него все кнопки работают, кроме sleep. Какой драйвер?

Аватар пользователя icbook

Так у нее статус особый (см. цитату из 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”)), как это делается в примере


Device(EC0) {Name(_HID, EISAID("PNP0C09"))...}
...
   Device (SMB0) {  // child device - SM Bus
   Name(_HID, "ACPI0001") // Smart Battery Host Controller
   Name(_EC, 0x8030) // EC offset (0x80), Query (0x30)
       Device(SBS0){ // child device - Smart Battery Subsystem
...

А дальше, так как у Вас в выше приведенном примере
// Define a control method sleep button

Господа, спасибо за помощь, но все разрешилось и оказалось намного проще. Что касается температуры проца, то они просто использовали не то поле, нужно было CTMP. А со sleep еще проще: оказывается она все же имеет код 223. Просто ядро почему то не говорит, что определило кнопку с определенным кодом, так как это было для других Fn кнопок. Но если это дело форсировать, то все работает.

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img>
  • You can use BBCode tags in the text. URLs will automatically be converted to links.

Подробнее о форматировании текста

Антибот - введите цифру.
Ленты новостей