Skocz do zawartości

Fix'y DSDT dla ASUS P5W DH Deluxe


314TeR
 Udostępnij

Rekomendowane odpowiedzi

EDIT 06-02-2010:

Poprawiona sekcja TMR na wzór Macowy - dzięki rzooff za zwrócenie uwagi.

 

EDIT 24-11-2009:

Nowa wersja 1.9 już w nowym wątku:

http://hamac.pl/topics4/mac-os-x-na-asu ... vt1132.htm

Zostało wprowadzonych wiele poprawek, szczegóły wkrótce. W skrócie dodam, że chyba udało mi się usunąć wszelkie bolączki związane z tą płytą. Do powyższego wątku będą dołączane aktualne dedykowane kexty do tej płyty.

 

EDIT 11-11-2009:

Nowa wersja 1.2 a w niej poprawki w wersji 4CPU. 2CPU jest bez zmian.

 

EDIT 10-11-2009:

Nowa wersja 3001 v1.1 DSDT, bazująca na najnowszym BIOS'ie 3001.

Poprawiono działanie SpeedSteep - teraz w pełni działa wraz z stanami CST

Przygotowane dwie różne wersje, dla Dual Core i Quad Core - proszę zwrócić uwagę na to.

 

EDIT 02-11-2009:

Dodana sekcja o modyfikacji LPC.

Usunięta sekcja o VGA ze względu na nie najlepsze działanie.

Naprawione wszelkie ostrzeżenia przy kompilacji, teraz DSDT z załącznika kompiluje się z rezultatem:

Compilation complete. 0 Errors, 0 Warnings, 0 Remarks, 46 Optimizations

 

EDIT 22-09-2009:

Dołączyłem źródła DSDT oraz skompilowaną wersje z dodaną obsługą ATI 4870 oraz bez jakiejkolwiek VGA.

DSDT bazuje na kodzie BIOS'u 2504.

 

Wczoraj po wyczerpującej walce z DSDT z mojej płyty, wreszcie poległo i poddało się... Udało mi się wreszcie ustabilizować działanie wszystkich komponentów i mam stabilnie działające USB oraz FireWire które robiły to problemy od wersji 10.5.6.

Udało się zwalczyć aby działały zawsze wszystkie porty, zawsze działają one w trybie USB 2.0 High Speed, zawsze działa FireWire, Brak dziwnych błędów w konsoli o FireWire i EHCI/UHCI, jest załadowany AppleHPET, AppleRTC, działa poprawnie Sleep, Restart, Shutdown, odnoszę wrażenie nie system szybciej jeszcze wstaje, żaden kext z /S/L/E nie został usunięty, zmodyfikowany, czy dodany... a na deser jako rodzynek na torcie dostałem działające budzenie z trybu uśpienia po kliknięciu w myszkę lub klawiaturę... jednym zdaniem pełen wypas...

 

A to co trzeba zrobić.

1. Wgrać BIOS w wersji 3001 - dołączony do paczki.

2. Umieścić w /Extra plik DSDT.aml w wersji na procesor jaki się posiada.

3. Usunąć wszelkie disabler'y, nullcpu etc...

4. W BIOS'ie poustawiać:

Advanced -> JumperFree Configuraton -> AI Overclocking [Manual]

Advanced -> USB Configuration -> Legacy USB Support [Enabled] - włączenie powoduje przywrócenie funkcji sleep

Advanced -> CPU Configuration -> Execute Disable Function [Enable]

Advanced -> CPU Configuration -> Enhanced C1 Control [Auto]

Advanced -> Chipset -> Memory Remap [Enable] - tylko dla posiadaczy 4GB i więcej pamięci.

Power -> ACPI 2.0 Support [Enabled]

 

A dla chętnych co zostało zmienione:

:arrow: 1. HPET, RTC fix i ustabilizowanie działania USB i FW:

 

Oryginalna sekcja HPET:

                Device (HPET) 
               { 
                   Name (_HID, EisaId ("PNP0103")) 
                   Name (CRS, ResourceTemplate () 
                   { 
                       Memory32Fixed (ReadOnly,
                           0xFED00000,         // Address Base
                           0x00000400,         // Address Length
                           _Y09) 
                   }) 
                   OperationRegion (HPTC, SystemMemory, HTBA, 0x04) 
                   Field (HPTC, ByteAcc, NoLock, Preserve) 
                   { 
                       HPTS,   2, 
                           ,   5, 
                       HPTE,   1, 
                               Offset (0x04) 
                   } 

                   Method (_STA, 0, NotSerialized) 
                   { 
                       If (LEqual (OSFL (), Zero)) 
                       { 
                           If (HPTE) 
                           { 
                               Return (0x0F) 
                           } 
                       } 
                       Else
                       { 
                           If (HPTE) 
                           { 
                               Return (0x0B) 
                           } 
                       } 

                       Return (Zero) 
                   } 

                   Method (_CRS, 0, NotSerialized) 
                   { 
                       CreateDWordField (CRS, \_SB.PCI0.SBRG.HPET._Y09._BAS, HPT) 
                       Multiply (HPTS, 0x1000, Local0) 
                       Add (Local0, 0xFED00000, HPT) 
                       Return (CRS) 
                   } 
               }

Zmodyfikowana:

                Device (HPET) 
               { 
                   Name (_HID, EisaId ("PNP0103")) 
                   Name (CRS, ResourceTemplate () 
                   { 
                       IRQNoFlags () 
                           {0} 
                       IRQNoFlags () 
                           {8} 
                       Memory32Fixed (ReadOnly,
                           0xFED00000,         // Address Base
                           0x00000400,         // Address Length
                           _Y09) 
                   }) 
                   OperationRegion (HPTC, SystemMemory, HTBA, 0x04) 
                   Field (HPTC, ByteAcc, NoLock, Preserve) 
                   { 
                       HPTS,   2, 
                           ,   5, 
                       HPTE,   1, 
                               Offset (0x04) 
                   } 

                   Method (_STA, 0, NotSerialized) 
                   { 
                       If (LEqual (OSFL (), Zero)) 
                       { 
                           If (HPTE) 
                           { 
                               Return (0x0F) 
                           } 
                       } 
                       Else
                       { 
                           If (HPTE) 
                           { 
                               Return (0x0B) 
                           } 
                       } 

                       Return (Zero) 
                   } 

                   Method (_CRS, 0, NotSerialized) 
                   { 
                       CreateDWordField (CRS, \_SB.PCI0.SBRG.HPET._Y09._BAS, HPT) 
                       Multiply (HPTS, 0x1000, Local0) 
                       Add (Local0, 0xFED00000, HPT) 
                       Return (CRS) 
                   } 
               }

 

Oryginalna sekcja RTC0:

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

Zmodyfikowana sekcja RTC0:

                Device (RTC0) 
               { 
                   Name (_HID, EisaId ("PNP0B00")) 
                   Name (_CRS, ResourceTemplate () 
                   { 
                       IO (Decode16,
                           0x0070,             // Range Minimum
                           0x0070,             // Range Maximum
                           0x00,               // Alignment
                           0x02,               // Length
                           ) 
                   }) 
               }

Oryginalna sekcja TMR:

                Device (TMR) 
               { 
                   Name (_HID, EisaId ("PNP0100")) 
                   Name (_CRS, ResourceTemplate () 
                   { 
                       IO (Decode16,
                           0x0040,             // Range Minimum
                           0x0040,             // Range Maximum
                           0x00,               // Alignment
                           0x04,               // Length
                           ) 
                       IRQNoFlags () 
                           {0} 
                   }) 
               }

Zmodyfikowana sekcja TMR:

                Device (TMR) 
               { 
                   Name (_HID, EisaId ("PNP0100")) 
                   Name (_CRS, ResourceTemplate () 
                   { 
                       IO (Decode16,
                           0x0040,             // Range Minimum
                           0x0040,             // Range Maximum
                           0x01,               // Alignment
                           0x04,               // Length
                       ) 
                       IO (Decode16,
                           0x0050,             // Range Minimum
                           0x0050,             // Range Maximum
                           0x10,               // Alignment
                           0x04,               // Length
                       ) 
                   }) 
               }

Oryginalna sekcja 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} 
                   }) 
               }

Zmodyfikowana sekcja 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
                           ) 
                   }) 
               }

 

:arrow: 2. Method DTGP:

Wymagane jest dołożenie jej, aby wszystkie inne fixy korzystające z niej mogły działać.

Wygląda tak:

    Method (DTGP, 5, NotSerialized) 
   { 
       If (LEqual (Arg0, Buffer (0x10) 
               { 
                   /* 0000 */    0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44, 
                   /* 0008 */    0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B
               })) 
       { 
           If (LEqual (Arg1, One)) 
           { 
               If (LEqual (Arg2, Zero)) 
               { 
                   Store (Buffer (One) 
                       { 
                           0x03
                       }, Arg4) 
                   Return (One) 
               } 

               If (LEqual (Arg2, One)) 
               { 
                   Return (One) 
               } 
           } 
       } 

       Store (Buffer (One) 
           { 
               0x00
           }, Arg4) 
       Return (Zero) 
   }

 

i należy ją umieścić zaraz po pierwszym nawiasie otwierającym "{"

Po umieszczeniu powinna sekcja wyglądać mniej więcej tak:

*     OEM Revision     0x00000000 (0) 
*     Compiler ID      "INTL" 
*     Compiler Version 0x20080926 (537397542) 
*/
DefinitionBlock ("dsdt.aml", "DSDT", 1, "A0543", "A0543000", 0x00000000) 
{ 
   Method (DTGP, 5, NotSerialized) 
   { 
       If (LEqual (Arg0, Buffer (0x10) 
               { 
                   /* 0000 */    0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44, 
                   /* 0008 */    0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B
               })) 
       { 
           If (LEqual (Arg1, One)) 
           { 
               If (LEqual (Arg2, Zero)) 
               { 
                   Store (Buffer (One) 
                       { 
                           0x03
                       }, Arg4) 
                   Return (One) 
               } 

               If (LEqual (Arg2, One)) 
               { 
                   Return (One) 
               } 
           } 
       } 

       Store (Buffer (One) 
           { 
               0x00
           }, Arg4) 
       Return (Zero) 
   } 

   Scope (_PR) 
   { 
       Processor (CPU1, 0x01, 0x00000810, 0x06)

 

:arrow: 3. TM Fix:

Fix ten umożliwia działanie Time Machine bez konieczności stosowania jakichkolwiek dodatkowych łatek, a także pozbycia się z konsoli błędów: UUID Error: 35

 

Oryginalna sekcja P0P7 (P zero P 7) - złącze pod które jest podłączony Ethernet 1

            Device (P0P7) 
           { 
               Name (_ADR, 0x001C0003) 
               Method (_PRW, 0, NotSerialized) 
               { 
                   Return (GPRW (0x09, 0x04)) 
               } 

               Method (_PRT, 0, NotSerialized) 
               { 
                   If (PICM) 
                   { 
                       Return (AR07) 
                   } 

                   Return (PR07) 
               } 
           }

 

 

Zmodyfikowana sekcja P0P7 (P zero P 7)

            Device (P0P7) 
           { 
               Name (_ADR, 0x001C0003) 
               Method (_PRW, 0, NotSerialized) 
               { 
                   Return (GPRW (0x09, 0x04)) 
               } 

               Method (_PRT, 0, NotSerialized) 
               { 
                   If (PICM) 
                   { 
                       Return (AR07) 
                   } 

                   Return (PR07) 
               } 

               Device (LAN) 
               { 
                   Name (_ADR, Zero) 
                   Name (_PRW, Package (0x02) 
                   { 
                       0x0B,
                       0x04
                   }) 
                   Method (_DSM, 4, NotSerialized) 
                   { 
                       Store (Package (0x04) 
                           { 
                               "built-in",
                               Buffer (One) 
                               { 
                                   0x01
                               },

                               "device_type",
                               Buffer (0x09) 
                               { 
                                   "ethernet" 
                               } 
                           }, Local0) 
                       DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) 
                       Return (Local0) 
                   } 
               } 
           }

 

:arrow: 4. Uruchomienie LPC:

Fix ten jest potrzebny często aby uruchomić prawidłowe działanie vanillowego zarządzania energią. Na płytach asus'a LPC najczęściej się kryje pod nazwą SBRG. Dodatkowo po uruchomieniu LPC pokazuje się opcja "wznów automatycznie po awarii zasilania" w panelu "Oszczędny komputer"

 

Oryginalny początek sekcji SBRG:

            Device (SBRG) 
           { 
               Name (_ADR, 0x001F0000) 
               Method (SPTS, 1, NotSerialized) 
               { 
                   Store (One, PS1S) 
                   Store (One, PS1E)

Wstawiona modyfikacja:

            Device (SBRG) 
           { 
               Name (_ADR, 0x001F0000) 
               Method (_DSM, 4, NotSerialized) 
               { 
                   Store (Package (0x02) 
                       { 
                           "device-id",
                           Buffer (0x04) 
                           { 
                               0xb9, 0x27, 0x00, 0x00
                           } 
                       }, Local0) 
                   DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) 
                   Return (Local0) 
               } 

               Method (SPTS, 1, NotSerialized) 
               { 
                   Store (One, PS1S) 
                   Store (One, PS1E)

 

Jeśli ktoś nie chce, nie może, nie potrafi się zarejestrować na forum aby pobrać zmodyfikowane DSDT.dsl z załącznika, to poniżej "extra" link do pobierania.

http://rapidshare.com/files/305556800/P5W_DH_Deluxe_3001_mod_314TeR_v1.2.zip

P5W_DH_Deluxe_3001_mod_314TeR_v1.2.zip

Odnośnik do komentarza
Udostępnij na innych stronach

  • Odpowiedzi 52
  • Dodano
  • Ostatniej odpowiedzi

Top użytkownicy w tym temacie

Top użytkownicy w tym temacie

Opublikowane grafiki

Najlepiej by było abyś jeszcze na http://www.insanelymac.com umieść te plik i info.

 

Wrzuciłem wczoraj krótkie info...

 

ps. Jak sprawdzić czy mam pełną obsługę usb 2.0 na Snow ?

Co masz na myśli, pełną obsługę... Jak wszystko działa w sposób przewidywalny, żadne porty nie giną, transfer gdzie powinien jest w trybie 480Mb/s to jest OK.

Odnośnik do komentarza
Udostępnij na innych stronach

Lechu, A czy w Twojej płycie występuje problem ze "znikaniem" portów USB, nie działaniem FireWire (jeśli jest), lub działaniem USB raz w trybie 2.0 a raz 1.1?

 

Jeśli na któreś z powyższych pytań odpowiesz twierdząco, to możesz spróbować sam zmodyfikować własny DSDT o modyfikacji z punktu #1. Porówna jak wygląda DSDT u Ciebie, zobacz co zostało zmienione i podobne zmiany wprowadź w swoim oryginalnym kodzie.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 1 miesiąc temu...
  • 2 tygodnie później...

Nowa wersja DSDT z w pełni działającym vanillowym SpeedSteep, łącznie z stanami CST, teraz bazująca na najnowszym BIOS'ie 3001. SpeedSteep przypuszczam że będzie działać na każdym procesorze, stany PST są generowane dynamicznie, nie ma potrzeby wpisywania ich z ręki. Jedyne rozróżnienie to na wersje Core Duo i Quad, ponieważ różnią się pewne adresy i rejestry.

 

PS Jeśli ktoś posiada Quad'a na tej płycie proszę o potwierdzenie czy działa... sam posiadam C2D, więc nie mogłem przetestować wersji Quad.

 

Edit:

PSS Nowa wersja dla 4CPU.

 

 

Znajdź za pomocą IORegistryExplorer gałąź ACPI_SMC_PlatformPlugin i porównaj jej zawartość z poniższą:

Krótkie wyjaśnienie co się znajduje na poniższym screen'ie...

 

:arrow: 1 - Widoczne są tam dwie wartości:

CPUPLimit - wskazuje czy działa zarządzanie energią, jeśli nie ma tej pozycji, lub ma wartość inną niż 0x0 oznacza że zarządzanie energią nie działa.

CSTInfo - Czy działają stany CST - wymagane jest działanie LPC aby te stany były aktywne.

 

:arrow: 2 - PerformanceStateArray - Pokazuje w ile trybów pracy częstotliwości/napięć może być ustawiony procesor. Muszą być co najmniej dwa stany - 0 i 1. Notebook'i najczęściej mają ich więcej... 4-6

 

Jeśli mamy tak samo u siebie, to oznacza że zarządzanie energią w pełni działa, a przez to temperatury procesora są identyczne z osiąganymi w windows, co przekłada się na mniej wydzielanego ciepła, mniejsze zużycie energii, czyli mniejszy hałas... właściciele notebooków szczególnie powinni zwrócić uwagę na poprawne uruchomienie SpeedSteep'u ponieważ wydłuża to czas pracy na akumulatorze, często nawet dwukrotnie.

IOReg-3001-CST-ok.png

Odnośnik do komentarza
Udostępnij na innych stronach

No, no jaka szkoda że nie masz P5Q, Twoje osiągnięcia są imponujące.

Oj nie przesadzaj... ja tylko czytam i wprowadzam ciekawe rozwiązania często odkryte przez innych... no ale tu muszę przyznać że sam wpadłem jak uzyskać działający PM w sposób o jakim bym nie uwierzył i tylko postukał się w czoło jeszcze tylko tydzień temu... a mianowicie na podstawie BIOS'u w którym w ogóle nie ma tabel SSDT :shock:

 

PS Może i na P5Q coś poradzimy... z P5W już wiele nie zdziałam... wszystko mi pod Leopardem działa, snow wymaga jeszcze pracy... i jak się uporam ze snow to poważnie myślę o wymianie płyty i procesora na coś nowszego, z czym mógłbym znów powalczyć... a w perspektywie najbardziej jest płyta ASUS'a na P45. ;-)

 

PS Poprawiłem mój poprzedni post i uzupełniłem opisy do załączonego screen'a.

Odnośnik do komentarza
Udostępnij na innych stronach

U mnie w tej sekcji co zaznaczyłeś jest tylko CPUs nie ma rozbicia pomiędzy różne cpu

Znajdź za pomocą IORegistryExplorer gałąź ACPI_SMC_PlatformPlugin i porównaj jej zawartość z tą co podałem. Jeśli jej nie masz to znaczy że skasowałeś AppleHPET, użyłeś disablera, etc...

Odnośnik do komentarza
Udostępnij na innych stronach

Tak identyczne, ale chyba mam żle dociśnięty wentyator bo różnice są dosyć duże pomiędzy rdzeniami.

Ja mam non stop - 2-3 stopnie różnicy pomiędzy rdzeniami, w tej chwili mam 33 i 35. Zdemontuj więc wentylator, wyjmij procka, wyczyść, zamontuj, posmaruj dobrą pastą i zobacz czy będzie poprawa... Jeśli nie, to może wskazywać na wadliwy sam procesor.

Odnośnik do komentarza
Udostępnij na innych stronach

Mi i tak nie zadziala, próbowalem już wszystkiego sleepa jak nie bylo tak nie ma. :(

Pocieszę Cię... u mnie już też nie ma sleep'a... nie wiem jeszcze czy to wina załadowanego LPC czy ostatniej aktualizacji Security 006, śledztwo trwa... W każdym razie naprawienie sleep'a stało się dla mnie priorytetem #1...

To przez te Twoje tapety :mrgreen: (przepraszam nie mogłe się powstrzymać)

PS no te laski to tak podgrzewają... sam wiesz co... że się nie dziwię że chłodzenie nie wyrabia. :lol:

Odnośnik do komentarza
Udostępnij na innych stronach

Ee tam zaraz tapety :-) Tak na marginesie to teraz jest cały czas jedna i ta sama laska

Wracając do tematu. Niestety ja się ze sleepem poddałem nie mam juz zwyczajnie sił i pomysłów. Na forach ludzie raczej wypisuja jak to pieknie i szybko mozna miec retaila na tej płycie ale jak przychodzi do pytań o sleep, cisza. DSDT czy sleepenablery nic nie działa.

Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie
 Udostępnij


×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Korzystanie z tej witryny, wymaga zakceptowanie naszych warunków Warunki użytkowania.