2010年8月2日星期一

[DSDT patch 筆記] Wind U100: HPET/IRQ fix

HPET/IRQ衝突修復
搜尋:Device (HPET),並加入以下代碼(黑色字的部分):
Device (HPET)
{
Name (_HID, EisaId ("PNP0103"))
Name (_CID, EisaId ("PNP0C01")) // added
Name (CRS, ResourceTemplate ()
{
IRQNoFlags () // IRQ flags added
{0}
IRQNoFlags ()
{8}
Memory32Fixed (ReadWrite,
0xFED00000,         // Address Base
0x00000400,         // Address Length
_Y0C)
})
OperationRegion (HCNT, SystemMemory, \HPTC, 0x04)
Field (HCNT, DWordAcc, NoLock, Preserve)
{
HPTS,   2, 
,   5, 
HPTE,   1
}

Method (_STA, 0, NotSerialized)
{
If (LEqual (OSXX (), 0x01))
{
If (HPTE)
{
Return (0x0F)
}
}
Else
{

......以下省略......

搜尋:Method (OSXX, 0, NotSerialized),修改代碼如下(黑色字的部分):
Method (OSXX, 0, NotSerialized)
{
        // If (_OSI ("Windows 2006"))
        If (_OSI ("Darwin")) // Effects HPET
        {
            Return (0x01)
        }
        Else
        {
            Return (0x00)
        }
}

搜尋:Device (PIC),修改代碼如下(黑色字的部分):
Device (PIC)
{
      Name (_HID, EisaId ("PNP0000"))
      Name (_CRS, ResourceTemplate ()
      {
                IO (Decode16,
                    0x0020,             // Range Minimum
                    0x0020,             // Range Maximum
                    0x00,               // Alignment
                    0x02,               // Length
                    )
                IO (Decode16,
                    0x00A0,             // Range Minimum
                    0x00A0,             // Range Maximum
                    0x00,               // Alignment
                    0x02,               // Length
                    )
                /* IRQNoFlags ()
                    {2}
                */
       })
}

搜尋:Device (TMR),修改代碼如下(黑色字的部分):
Device (TMR)
{
Name (_HID, EisaId ("PNP0100"))
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0x0040,             // Range Minimum
0x0040,             // Range Maximum
0x00,               // Alignment
0x04,               // Length
)
/* IRQNoFlags ()
  {0}
*/
})
}

Device (RTC0)
{
Name (_HID, EisaId ("PNP0B00"))
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0x0070,             // Range Minimum
0x0070,             // Range Maximum
0x00,               // Alignment
0x02,               // Length
)
/* IRQNoFlags ()
  {8}
*/
})
}
...以下省略...


未修改前的HPET使用IRQ 14,如下圖:

修改後的HPET使用IRQ 2,如下圖:

2 意見:

匿名 提到...

大大您好,請問您一個問題,關於您上面的程式碼.

因為看了許多文章,都會寫到修改的地方
但是好奇了一下,如何知道修改的內容
與位置.
因為最近裝了一台黑蘋果,但是關於
音/顯/網出現3無的困境
爬了許多文發現方向有2
1.修改dsdt(不知重何修改起)
2.第三方的驅動(測試了好久都不行)
感謝解答

才谷蘋太郎 提到...

你的主機板型號與顯示卡型號是?

建議你先使用lspci找出Device-ID,再用Device-ID去InsanelyMac搜尋驅動的方式。