ProjectOSX

Welcome Guest!

Returning User? Login here.

Want membership privileges? Register here.

 
Start a new topic Add Reply
> Функциональные клавиши
Slice
post May 10 2010, 07:56 AM
Post #1
Любопытный у меня вопрос возник. С патчем ДСДТ (там, например, прописано устройство PNLF), у меня заработала функциональная клавиша Fn+F2, и в соответствии с нарисованным на клавиатуре рисует на экране информацию о батарейке
Attached File  Battery.png ( 453.51K ) Number of downloads: 119

Эту же картинку я видел и в Виндоусе, но никогда на других компах. Откуда?
Если это в БИОСе, то почему только после патча ДСДТ?

Как вообще работают функциональные клавиши? Как добиться правильной работы? Что менять? Принимаются ответы от БИОСа до ядра системы. Только аргументировано.

Между прочим, клавиши работают и на подключенной извне USB клавиатуре, но в Тигре не все, а вот в Барсике на Делле даже яркость регулируется.
--------------------------
Разрешено
http://www.projectosx.com/forum/index.php?...ost&p=10007
Есть также решение насчет яркости
http://www.insanelymac.com/forum/index.php?showtopic=236835
i3-2120 GA-H61M-S1 UEFI, Radeon HD6670-UEFI, ALC887(VoodooHDA 2.8.6), OS⌘10.9.5, OS⌘ 10.7.5 Clover FakeSMC_plugins_3.3.1 Realtek LAN v3.1.2
tea
post May 10 2010, 05:17 PM
Post #2
Есть такая штука - OSD, управляет ей контроллер панели (это если дисплей внешний, от компа сигнал VGA идет на контроллер, с контроллера через LVDS на панель). У тебя на ноуте контроллер находится непосредственно на материнке и видимо может принимать какие-то значения по SMBus (ИМХО). Т.е. у тебя не работает управление яркостью и прочим через софт Mac OS. Управление происходит исключительно на низком уровне - через методы DSDT, а инфу о батареи выводит контроллер панели мимо видеокарты. Попробуй внешний дисплей, будет меню или нет?
Slice
post May 10 2010, 06:06 PM
Post #3
Работает (с родной клавиатуры) управление яркостью (допустим панель PNLF), громкостью (в DSDT нет ничего похожего на это), показ батарейки, отключение тачпада, и все это после стандартного исправления ДСДТ (тип системы, PNLF, лишние девайсы). С оемДСДТ ничего не работает.
Т.е. кроме алгоритмов операционной системы и АЦПИ есть еще что-то, которое активируется в ДСДТ? SMBus контроллер? Я смотрел даташит на Максимку, там, кроме интеллектуальной зарядки батареи нет ничего, даже интерфейса с ЦПУ.
А где прошита программа генерации цифр зарядки батарейки на экране?
А где прошито солнышко яркости экрана и изображение динамика регулятора громкости - они же у всех одинаковы?
i3-2120 GA-H61M-S1 UEFI, Radeon HD6670-UEFI, ALC887(VoodooHDA 2.8.6), OS⌘10.9.5, OS⌘ 10.7.5 Clover FakeSMC_plugins_3.3.1 Realtek LAN v3.1.2
tea
post May 10 2010, 10:18 PM
Post #4
Я всего лишь предположил что генерацией картинки с батареей занимается контроллер твоей панели (OSD) для него это не проблема, если есть связь с ACPI. Возможно это и не так, но мне кажется что это наиболее вероятный вариант.
Картинки с "солнышком" и динамиков рисует Mac OS, но ты уверен что управление яркостью происходит на высоком уровне а не на низком?
Slice
post May 11 2010, 07:33 AM
Post #5
QUOTE (tea @ May 11 2010, 01:18 AM) *
Я всего лишь предположил что генерацией картинки с батареей занимается контроллер твоей панели (OSD) для него это не проблема, если есть связь с ACPI. Возможно это и не так, но мне кажется что это наиболее вероятный вариант.

Верю, простоя не могу найти в ДСДТ что-то онтосящееся к этому, а должно быть.
QUOTE
Картинки с "солнышком" и динамиков рисует Mac OS, но ты уверен что управление яркостью происходит на высоком уровне а не на низком?

На Делле солнышко рисуется клавишами Fn+ScrollLock/Pause, а управление яркостью - Fn+Up/Down. Я хочу, чтобы клавиши совпадали.
Динамики с громкостью совпадают.
Я вот не могу понять, что именно в МакОСе рисует солнышко, и по какой команде.
Более того, подключив ЮСБ клавиатуру, я получаю другую комбинацию для рисования солнышка. Но она тоже есть!
Тут протокол PS2->ACPI, там протокол USB->PCI. На каком уровне можно перехватить эту команду? И где находится битовый рисунок солнышка?
i3-2120 GA-H61M-S1 UEFI, Radeon HD6670-UEFI, ALC887(VoodooHDA 2.8.6), OS⌘10.9.5, OS⌘ 10.7.5 Clover FakeSMC_plugins_3.3.1 Realtek LAN v3.1.2
tea
post May 11 2010, 10:12 AM
Post #6
У меня регулировка яркости тоже не совпадает, громкость на месте. Где именно происходит обработка? Я думаю что в AppleACPIButtons.kext. Давай искать.
Slice
post May 11 2010, 11:47 AM
Post #7
QUOTE (tea @ May 11 2010, 02:12 PM) *
У меня регулировка яркости тоже не совпадает, громкость на месте. Где именно происходит обработка? Я думаю что в AppleACPIButtons.kext. Давай искать.

Там я уже посмотрел, вообще кроме конструктора и деструктора ничего нет. В других АЦПИ кекстах тоже не видно с первого раза. Вот, думаю, сделать трассировку команд, поступающих от ЮСБ устройств, и посмотреть с моей ЮСБ клавой. Скан-коды с PS2 клавы я уже ловил, куча цифр, ни о чем не говорящих, но вот от Fn+Up/Down отклика никакого, а яркость меняется. Т.е. до кекста клавиатуры эта комбинация не доходит.
В руках исходники практически всего, кроме АЦПИ, а тот есть в дизабленном виде. И нигде я не вижу отклика на такую комбинацию.
С другой стороны, все это зависит от EC controller. Если в Делле запустить этот кекст, то регулировки все пропадают. А на Самсунге наоборот, все работает, если этот кекст запущен. И, кстати, он имеет прямую связь с SMBus.
Видишь, у меня мыслей много, тока их надо распутать. unsure.gif
i3-2120 GA-H61M-S1 UEFI, Radeon HD6670-UEFI, ALC887(VoodooHDA 2.8.6), OS⌘10.9.5, OS⌘ 10.7.5 Clover FakeSMC_plugins_3.3.1 Realtek LAN v3.1.2
tea
post May 11 2010, 12:58 PM
Post #8
Комбинации с Fn не имеют скэн-кодов.
Clubber_77
post May 11 2010, 04:40 PM
Post #9
вставлю свои пять копеек:

как-то очень давно экспериментировал с DSDT от macbook 2,1. в то время я решил вообще полностью его скопировать, и у меня получилось, от своего я оставил только
CODE
OperationRegion (PRT0, SystemIO, 0x80, 0x04)
Field (PRT0, DWordAcc, Lock, Preserve)
{
P80H, 32
}

OperationRegion (S_IO, SystemIO, 0x06B0, 0x11)
Field (S_IO, ByteAcc, NoLock, Preserve)
{
PMS0, 8,
PME0, 8,
PMS1, 8,
PMS2, 8,
PMS3, 8,
PME1, 8,
PME2, 8,
PME3, 8,
SMS1, 8,
SMS2, 8,
SME1, 8,
SME2, 8,
RT10, 1,
RT11, 1,
, 1,
RT13, 1,
Offset (0x0E),
RT30, 1,
RT31, 1,
RT32, 1,
RT33, 1,
RT34, 1,
RT35, 1,
RT36, 1,
RT37, 1,
Offset (0x10),
DLPC, 1,
CK33, 1,
CK14, 1
}

OperationRegion (IO_T, SystemIO, 0x0800, 0x10)
Field (IO_T, ByteAcc, NoLock, Preserve)
{
Offset (0x08),
TRP0, 8
}

OperationRegion (PMIO, SystemIO, 0x1000, 0x80)
Field (PMIO, ByteAcc, NoLock, Preserve)
{
Offset (0x30),
GSMI, 1,
, 3,
SLPE, 1,
Offset (0x42),
, 1,
GPEC, 1
}

OperationRegion (GPIO, SystemIO, 0x1180, 0x3C)
Field (GPIO, ByteAcc, NoLock, Preserve)
{
GU00, 8,
GU01, 8,
GU02, 8,
GU03, 8,
GIO0, 8,
GIO1, 8,
GIO2, 8,
GIO3, 8,
Offset (0x0C),
GL00, 8,
, 4,
GP12, 1,
Offset (0x0E),
GL02, 8,
, 1,
GP25, 1,
GP26, 1,
Offset (0x10),
Offset (0x18),
GB00, 8,
GB01, 8,
GB02, 8,
GB03, 8,
Offset (0x2C),
GIV0, 8,
GIV1, 8,
GIV2, 8,
GIV3, 8,
GU04, 8,
GU05, 8,
GU06, 8,
GU07, 8,
GIO4, 8,
GIO5, 8,
GIO6, 8,
GIO7, 8,
, 7,
GP39, 1,
GL05, 8,
GL06, 8,
GL07, 8
}

OperationRegion (GNVS, SystemMemory, 0xBFE84DBC, 0x0100)
Field (GNVS, AnyAcc, Lock, Preserve)
{
OSYS, 16,
SMIF, 8,
PRM0, 8,
PRM1, 8,
SCIF, 8,
PRM2, 8,
PRM3, 8,
LCKF, 8,
PRM4, 8,
PRM5, 8,
P80D, 32,
LIDS, 8,
PWRS, 8,
DBGS, 8,
LINX, 8,
Offset (0x14),
ACTT, 8,
PSVT, 8,
TC1V, 8,
TC2V, 8,
TSPV, 8,
CRTT, 8,
DTSE, 8,
DTS1, 8,
DTS2, 8,
Offset (0x1E),
BNUM, 8,
BCAP, 8,
B1SC, 8,
B2SC, 8,
B0SS, 8,
B1SS, 8,
B2SS, 8,
Offset (0x28),
APIC, 8,
MPEN, 8,
Offset (0x2B),
PPCM, 8,
PCP0, 8,
PCP1, 8,
Offset (0x32),
NATP, 8,
CMAP, 8,
CMBP, 8,
LPTP, 8,
FDCP, 8,
CMCP, 8,
CIRP, 8,
Offset (0x3C),
IGDS, 8,
TLST, 8,
CADL, 8,
PADL, 8,
CSTE, 16,
NSTE, 16,
SSTE, 16,
NDID, 8,
DID1, 32,
DID2, 32,
DID3, 32,
DID4, 32,
DID5, 32,
Offset (0x67),
BLCS, 8,
BRTL, 8,
ALSE, 8,
ALAF, 8,
LLOW, 8,
LHIH, 8,
Offset (0x6E),
EMAE, 8,
EMAP, 16,
EMAL, 16,
Offset (0x74),
MEFE, 8,
Offset (0x78),
TPMP, 8,
TPME, 8,
Offset (0x82),
GTF0, 56,
GTF2, 56,
IDEM, 8,
Offset (0xB4),
WMIA, 8,
WMIO, 8,
ACPS, 8,
HPBD, 8,
IVIM, 8,
EXTM, 8,
Z000, 8,
Z001, 8,
Z002, 8,
Z003, 8,
Z004, 8,
Z005, 8,
Z006, 8,
Z007, 8,
Z008, 8,
Z009, 8,
Z00A, 8,
EXCM, 8,
Z00B, 8
}

OperationRegion (RCRB, SystemMemory, 0xFED1C000, 0x4000)
Field (RCRB, DWordAcc, Lock, Preserve)
{
Offset (0x1000),
Offset (0x3000),
Offset (0x3404),
HPAS, 2,
, 5,
HPAE, 1,
Offset (0x3418),
, 1,
PATD, 1,
SATD, 1,
SMBD, 1,
HDAD, 1,
A97D, 1,
Offset (0x341A),
RP1D, 1,
RP2D, 1,
RP3D, 1,
RP4D, 1,
RP5D, 1,
RP6D, 1
}


и кое-что добавил от яблока в эти регионы...

в итоге ноутбук загрузился без проблем, причем визуально скорость загрузки увеличиласть, но судя по тестам производительность упала на треть, кроме этого отвалился спидстеп, и ФУНКЦИОНАЛЬНЫЕ КЛИВИШИ. вот как-то так... Так что я думаю, что FN где-то в DSDT забита, ну или корни оттуда растут...

This post has been edited by Clubber_77: May 11 2010, 04:41 PM
Slice
post May 12 2010, 08:41 AM
Post #10
Да, в ДСДТ есть какие-то непонятные регионы, и есть какие-то методы SMI, которые, в частности, обращаются и к SMBus, хотя этого явно не видно.
А еще есть загадочная вещь EC controller, у которого есть методы перехвата событий, например _Q09. И для каждого железа эти номера разные.
Откуда их взять? Как узнать какие номера соответствуют каким событиям?
i3-2120 GA-H61M-S1 UEFI, Radeon HD6670-UEFI, ALC887(VoodooHDA 2.8.6), OS⌘10.9.5, OS⌘ 10.7.5 Clover FakeSMC_plugins_3.3.1 Realtek LAN v3.1.2
Slice
post May 16 2010, 07:24 AM
Post #11
QUOTE (tea @ May 11 2010, 03:58 PM) *
Комбинации с Fn не имеют скэн-кодов.

Клавиатура пристегнута к ящику тонким шнурочком, и когда мы нажимаем Fn+Up по этому шнурочку бежит сигнал.
Хочешь, не называй это скан-кодом, но сигнал есть. Другое дело, что он не доходит до драйвера клавиатуры. Вот я и пытаюсь выяснить, на каком этапе сигнал перехватывается, чтобы изменить яркость экрана.
И почему МакОС ждет другого сигнала, чтобы нарисовать солнышко.

А я ответил на вопрос, почему все это заработало после исправления ДСДТ.
Дело в том, что я там исправил определение OS=Darwin. А это используется очень обширно. Одно из мест
CODE
                    Method (_Q51, 0, NotSerialized) -- одно из событий ЕС
                    {
                        Store (0x51, ISL0)
                        PHS (0x90)
                        Notify (ADP1, 0x80)
                        Store (One, PWRS)
                        If (LGreaterEqual (OSTB, 0x04))   -- тип ОС не меньше 4, т.е. WinXP, Vista. Darwin я сделал=20
                        {
                            Notify (\_PR.CPU0, 0x81)
                        }
                    }

Так что такой простой патч может серьезно улучшить систему.
i3-2120 GA-H61M-S1 UEFI, Radeon HD6670-UEFI, ALC887(VoodooHDA 2.8.6), OS⌘10.9.5, OS⌘ 10.7.5 Clover FakeSMC_plugins_3.3.1 Realtek LAN v3.1.2
tea
post May 17 2010, 04:20 AM
Post #12
Да, заработали "фичи" твоего EC контроллера. Тоже искал информацию по _Qxx методам... так и не нашел ничего.
Slice
post May 17 2010, 10:35 AM
Post #13
У меня вот нет такой программы, через которую я мог бы наблюдать в реальном времени какие-то происшествия в ДСДТ.
Когда будет - будет новая эра солюшинов и триков.
i3-2120 GA-H61M-S1 UEFI, Radeon HD6670-UEFI, ALC887(VoodooHDA 2.8.6), OS⌘10.9.5, OS⌘ 10.7.5 Clover FakeSMC_plugins_3.3.1 Realtek LAN v3.1.2
rus
post Jun 8 2010, 08:49 PM
Post #14
Вот немножко перебрав свой DSDT определил за счёт чего срабатывают функциональные клавиши(это FN+... F1 сон, F2 отк вкл wifi, F5,F6,F7 яркость экрана и выключить экран). Ещё неопределил за счёт чего срабатуют в DSDT функциональные клавиши FN Num LK(а вот как раз они и неотваливаются после сна).


Управление FN +
CODE
Scope (_SB.PCI0.LPCB.EC)
..........................



Method (_Q0A, 0, NotSerialized)// срабатывает сон FN+F1
{
Notify (SLPB, 0x80)
}

Method (_Q0B, 0, NotSerialized) // вкл окл wifi FN+F2
{
FNF2 ()
}

Method (FNF2, 0, Serialized)
{
If (And (^^^^ATKD.WAPF, 0x04))
{
If (ATKP)
{
Notify (ATKD, 0x88)
}
}
Else
{
Store (OHWR (), Local0)
If (And (Local0, 0x02))
{
If (And (Local0, One))
{
Store (One, Local0)
}
Else
{
Store (Zero, Local0)
}
}
Else
{
Store (One, Local0)
}

If (Local0)
{
If (And (^^^^ATKD.WAPF, One))
{
If (LAnd (WLDP, BTDP))
{
Store (WRST, Local0)
Or (ShiftLeft (BRST, One), Local0, Local0)
Increment (Local0)
If (LGreater (Local0, 0x03))
{
Store (Zero, Local0)
}

Store (DerefOf (Index (WBTL, Local0)), Local1)
If (LEqual (Local1, Zero))
{
Notify (ATKD, 0x5D)
Sleep (0x0DAC)
OBTD (Zero)
Notify (ATKD, 0x7E)
}

If (LEqual (Local1, One))
{
Notify (ATKD, 0x5D)
Sleep (0x0DAC)
OBTD (Zero)
Notify (ATKD, 0x7E)
}

If (LEqual (Local1, 0x02))
{
Notify (ATKD, 0x5D)
Sleep (0x0DAC)
OBTD (One)
Notify (ATKD, 0x7D)
}

If (LEqual (Local1, 0x03))
{
Notify (ATKD, 0x5D)
Sleep (0x0DAC)
OBTD (One)
Notify (ATKD, 0x7D)
}
}
Else
{
If (WLDP)
{
Notify (ATKD, 0x5D)
}
Else
{
If (BTDP)
{
If (BRST)
{
OBTD (Zero)
Notify (ATKD, 0x7E)
}
Else
{
OBTD (One)
Notify (ATKD, 0x7D)
}
}
}
}
}
Else
{
If (LAnd (WLDP, BTDP))
{
Store (WRST, Local0)
Or (ShiftLeft (BRST, One), Local0, Local0)
Increment (Local0)
If (LGreater (Local0, 0x03))
{
Store (Zero, Local0)
}

Store (DerefOf (Index (WBTL, Local0)), Local1)
If (LEqual (Local1, Zero))
{
OWLD (Zero)
Notify (ATKD, 0x5F)
Sleep (0x0DAC)
OBTD (Zero)
Notify (ATKD, 0x7E)
}

If (LEqual (Local1, One))
{
OWLD (One)
Notify (ATKD, 0x5E)
Sleep (0x0DAC)
OBTD (Zero)
Notify (ATKD, 0x7E)
}

If (LEqual (Local1, 0x02))
{
OWLD (Zero)
Notify (ATKD, 0x5F)
Sleep (0x0DAC)
OBTD (One)
Notify (ATKD, 0x7D)
}

If (LEqual (Local1, 0x03))
{
OWLD (One)
Notify (ATKD, 0x5E)
Sleep (0x0DAC)
OBTD (One)
Notify (ATKD, 0x7D)
}
}
Else
{
If (WLDP)
{
If (WRST)
{
OWLD (Zero)
Notify (ATKD, 0x5F)
}
Else
{
OWLD (One)
Notify (ATKD, 0x5E)
}
}
Else
{
If (BTDP)
{
If (BRST)
{
OBTD (Zero)
Notify (ATKD, 0x7E)
}
Else
{
OBTD (One)
Notify (ATKD, 0x7D)
}
}
}
}
}
}
Else
{
If (WLDP)
{
Notify (ATKD, 0x5F)
}

If (LAnd (WLDP, BTDP))
{
Sleep (0x0DAC)
}

If (BTDP)
{
Notify (ATKD, 0x7E)
}
}
}
}

Name (WBTL, Package (0x04)
{
Zero,
One,
0x02,
0x03
})


Method (_Q0E, 0, NotSerialized)//уменьшение яркости
{
If (LGreater (LBTN, Zero))
{
Decrement (LBTN)
}

If (LGreater (LBTN, 0x0F))
{
Store (0x0F, LBTN)
}

STBR ()
If (ATKP)
{
Notify (ATKD, Add (LBTN, 0x20))
}

Return (One)
}

Method (_Q0F, 0, NotSerialized)//увелечения ярк
{
If (LLess (LBTN, 0x0F))
{
Increment (LBTN)
}
Else
{
Store (0x0F, LBTN)
}

STBR ()
If (ATKP)
{
Notify (ATKD, Add (LBTN, 0x10))
}

Return (One)
}

Method (_Q10, 0, NotSerialized) //выкл вкл экран
{
Store (One, Local0)
Store (RPIN (0x11), Local0)
XOr (Local0, One, Local0)
SPIN (0x11, Local0)
If (ATKP)
{
Subtract (0x34, Local0, Local0)
Notify (ATKD, Local0)
}
}
...........

Не срабатывают в OSX (переключение на внешний разьём VGA. и регулировка звука)
CODE
Name (AVNC, Package (0x19)
{
Zero,
0x61,
0x62,
0x63,
0x64,
0x65,
0x66,
0x67,
0xA0,
0xA1,
0xA2,
0xA4,
0xA3,
0xA5,
0xA6,
0xA7,
0x8C,
0x8D,
0x8E,
0x90,
0x8F,
0x91,
0x92,
0x93,
Zero
})
Method (_Q11, 0, NotSerialized)
{
If (LNot (^^^IXVE.IGPU.NVDR))
{
If (LGreaterEqual (GDOS (), 0x02))
{
If (LEqual (GDOS (), 0x03))
{
NVGA (0x82)
}
}
Else
{
FHKW ()
Store (ADVG (), Local0)
If (NATK ())
{
Store (DerefOf (Index (AVNC, Local0)), Local1)
If (ATKP)
{
Notify (ATKD, Local1)
}
Else
{
SWHG (Local0)
}
}
Else
{
SWHG (Local0)
}

FHKS ()
}
}
Else
{
If (Or (LEqual (OSFG, OSVT), LEqual (OSFG, OSW7)))
{
Notify (^^^IXVE.IGPU, 0xCB)
}
Else
{
Notify (WMI0, 0xCB)
}
}
}

Name (FHKM, One)
Method (FHKW, 0, Serialized)
{
While (LNot (FHKM))
{
Sleep (0x0A)
}

Store (Zero, FHKM)
}

Method (FHKS, 0, Serialized)
{
Store (One, FHKM)
}

Method (_Q12, 0, NotSerialized)
{
If (ATKP)
{
And (TPAD, One, Local1)
If (Local1)
{
Notify (ATKD, 0x6F)
}
Else
{
Notify (ATKD, 0x6B)
}
}
}

Method (_Q13, 0, NotSerialized)
{
And (TPAD, 0x02, Local1)
If (Local1)
{
Noop
}
Else
{
If (ATKP)
{
Notify (ATKD, 0x32)
}
}
}

Method (_Q14, 0, NotSerialized)
{
And (TPAD, 0x02, Local1)
If (Local1)
{
Noop
}
Else
{
And (AVOL, 0x0F, AVOL)
If (LGreater (AVOL, Zero))
{
Decrement (AVOL)
}

If (ATKP)
{
Notify (ATKD, 0x31)
}
}
}

Method (_Q15, 0, NotSerialized)
{
And (TPAD, 0x02, Local1)
If (Local1)
{
Noop
}
Else
{
And (AVOL, 0x0F, AVOL)
If (LLess (AVOL, 0x0F))
{
Increment (AVOL)
}

If (ATKP)
{
Notify (ATKD, 0x30)
}
}
}


На управление клавиш PS2controller никакого влияния не несёт, функционируют за счёт загружемого драйвера AppleACPIEC.kext.
После сна те клавиши которые работают отваливаются, через DSDT возможно ли исправить?

This post has been edited by rus: Jun 8 2010, 10:33 PM
Slice
post Jun 9 2010, 06:46 AM
Post #15
QUOTE (rus @ Jun 9 2010, 12:49 AM) *
Вот немножко перебрав свой DSDT определил за счёт чего срабатывают функциональные клавиши(это FN+... F1 сон, F2 отк вкл wifi, F5,F6,F7 яркость экрана и выключить экран). Ещё неопределил за счёт чего срабатуют в DSDT функциональные клавиши FN Num LK(а вот как раз они и неотваливаются после сна).

На управление клавиш PS2controller никакого влияния не несёт, функционируют за счёт загружемого драйвера AppleACPIEC.kext.
После сна те клавиши которые работают отваливаются, через DSDT возможно ли исправить?

Ну обычно мы лечим драйвер, который не просыпается прописыванием Notify в методе _Lxx
Вот пробуждение звука, к примеру
CODE
        Method (_L0D, 0, NotSerialized)  //EHC1, EHC2, HDEF
        {
            Store (SMI (0xC6, Zero), Local0)
            If (And (Local0, One))
            {
                Notify (\_SB.PCI0.HDEF, 0x02)
            }

Тебе только нужно выяснить, какое устройство не просыпается, LPC или EC, какой у него _PRW, и прописать нотифай.

Насчет методов _Qxx.
Я видел разные ДСДТ, и у всех нумерация методов для управления яркостью разная. Вопрос. Откуда берутся эти номера?
У меня на Делле ЕС вообще отсутствует, я хочу его прописать, но при этом все функциональные клавиши теряются, я их могу сделать через _Qxx методы, но не имею ни малейшего понятия о номерах, поскольку в оригинале их вообще нет.
i3-2120 GA-H61M-S1 UEFI, Radeon HD6670-UEFI, ALC887(VoodooHDA 2.8.6), OS⌘10.9.5, OS⌘ 10.7.5 Clover FakeSMC_plugins_3.3.1 Realtek LAN v3.1.2
Zatoichy
post Jul 22 2010, 11:37 AM
Post #16
А есть пример дсдт от ноута, у которого управление яркостью совпало со значениями МакОси для рисования солнышка? Чтобы посмотреть какие в дсдт прописаны методы для этих клавишь.
Slice
post Jul 22 2010, 09:13 PM
Post #17
QUOTE (Zatoichy @ Jul 22 2010, 03:37 PM) *
А есть пример дсдт от ноута, у которого управление яркостью совпало со значениями МакОси для рисования солнышка? Чтобы посмотреть какие в дсдт прописаны методы для этих клавишь.

Насколько я успел убедиться - нет. Видно, есть два разных стандарта PC и MAC. А в ДСДТ прописаны самые разные методы, в разных РС по-разному. Я так понимаю, что это прошито в чипе ЕС, который разные производители вставляют разный.
Значит так: Fn+Up является стандартом для РС, и под него настаивают ЕС чипы разные производители, получаются разные методы _Qxx.
В Маке стандартом является Fn+Ins, который генерит какое-то системное событие для всего ядерного, к железу это отношения не имеет, какой-то кекст или фреймворк ловит это событие, рисует солнышко, и отправляет на драйвер приказ об изменении яркости.
Моя мечта, выяснить значения местоимений "какой-то".
i3-2120 GA-H61M-S1 UEFI, Radeon HD6670-UEFI, ALC887(VoodooHDA 2.8.6), OS⌘10.9.5, OS⌘ 10.7.5 Clover FakeSMC_plugins_3.3.1 Realtek LAN v3.1.2
04152viki
post Jul 24 2010, 09:24 AM
Post #18
Есть Samsung Q35, Backlight(PNLF) работает в 32х и в 64х. Если Backlight не заведён, то яркость регулируется с Fn+Up и Fn+Down и убавляется не до нуля. Если Backlight заведён, то яркость регулируется с Fn+12 и Fn+14 и убавляется до нуля. Пока kext не загружен - Fn+Up и Fn+Down, как только kext загрузился - Fn+12 и Fn+14.
Slice
post Sep 16 2010, 05:12 PM
Post #19
Разрешил.

Итак, функциональные клавиши имеют скан-коды и работают с драйвером клавиатуры. Я сделал модернизированный драйвер ApplePS2Keyboard который ловит все эти клавиши и заставил работать плейер (перемотка, плей, пауза).
Здесь: http://www.projectosx.com/forum/index.php?showtopic=1456

Далее драйвер формирует событие, которое передает в IOHIDFamily. Часть этих событий попадают драйверу AppleACPIEC.kext, который их обрабатывает согласно алгоритму, заложенному в ДСДТ. Вот так!

На маме есть еще интеллектуальные микросхемы LPC, SMBus, EC, BulkConverter, или даже что-то наподобие SMC, которые параллельно работают по своему алгоритму, независимо от операционной системы. На это мы повлиять не можем, разве что, методами ДСДТ или специальными драйверами заставить их реагировать на наши события. Например, FakeSMC извлекает оттуда температурный датчик, и регулирует вентиллятор (например для LPC ITE). Это частности. А в общем по топику - все в руках клавиатурного драйвера.
i3-2120 GA-H61M-S1 UEFI, Radeon HD6670-UEFI, ALC887(VoodooHDA 2.8.6), OS⌘10.9.5, OS⌘ 10.7.5 Clover FakeSMC_plugins_3.3.1 Realtek LAN v3.1.2

Add Reply Start a new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members: