View Single Post
 
Old 06-22-2010, 07:19 PM
tangon's Avatar
tangon tangon is offline
Tiger
 
Join Date: Jan 2010
Location: Athens, Persister
Posts: 301
Θα ήθελα να μοιραστώ μαζί σας κάποιες πληροφορίες που βρήκα για το DSDT και για το πώς μπορούμε να διορθώσουμε Errors ή Warnings που μας βγάζει μετά το Compile του DSDT.
Πάντως, όποιος άλλος γνωρίζει κάτι παραπάνω ή θέλει να διορθώσει τα γραφόμενά μου πολύ ευχαρίστως να το πράξει. Εδώ είμαστε για να ανταλλάξουμε απόψεις.

Για να δημιουργήσουμε κατ' αρχήν το δικό μας DSDT αρκεί να χρησιμοποιήσουμε το πρόγραμμα DSDT Patcher GUI όπου αυτό με τη σειρά του εξάγει το αρχείο dsdt.aml Αυτό το αρχείο (dsdt.aml) μπορούμε να το επεξεργαστούμε με το DSDTSE v1.4.3.

Ανοίγουμε το dsdt.aml με το DSDTSE και μας εμφανίζει το παράθυρο με όλες τις πληροφορίες του συστήματός μας (πλήθος επεξεργαστών, το RTC και άλλα στοιχεία του υπολογισή μας). Μπορούμε να ψάξουμε π.χ. για το CMOS reset που κάνει το 10.6 & 10.6.1 κατά την εκκίνηση το γνωστό RTC και από τις στάνταρ τιμές

Code:
Device (RTC)
{
Name (_HID, EisaId ("PNP0B00"))
Name (ATT0, ResourceTemplate ()
{
IO (Decode16,
0x0070, // Range Minimum
0x0070, // Range Maximum
0x00, // Alignment
0x08, // Length   <------------------ εδώ
)
})
Name (ATT1, ResourceTemplate ()
{
IO (Decode16,
0x0070, // Range Minimum
0x0070, // Range Maximum
0x00, // Alignment
0x04, // Length
)
να αλλάξουμε την αντίστοιχη τιμή σε

Code:
Device (RTC)
{
Name (_HID, EisaId ("PNP0B00"))
Name (ATT0, ResourceTemplate ()
{
IO (Decode16,
0x0070, // Range Minimum
0x0070, // Range Maximum
0x00, // Alignment
0x02, // Length   <------------------ εδώ
)
})
Name (ATT1, ResourceTemplate ()
{
IO (Decode16,
0x0070, // Range Minimum
0x0070, // Range Maximum
0x00, // Alignment
0x04, // Length
)
Το πρόγραμμα όμως δεν σταματάει εδώ. Μπορούμε να διορθώσουμε Errors ή Warnings που μας βγάζει μετά το Compile του DSDT. Σαν παράδειγμα παίρνω το δικό μου DSDT που μετά το Compile μου βγάζει το παρακάτω Warning :

Code:
Intel ACPI Component Architecture
ASL Optimizing Compiler version 20090730 [Aug 12 2009]
Copyright (C) 2000 - 2009 Intel Corporation
Supports ACPI Specification Revision 4.0

/Library/Application Support/EvOSoftware/DSDT/DSDTFiles/dsdt.dsl   397:     Method (_WAK, 1, NotSerialized)
Warning  1080 -                                    Reserved method must return a value ^  (_WAK) 

ASL Input:  /Library/Application Support/EvOSoftware/DSDT/DSDTFiles/dsdt.dsl - 5915 lines, 192473 bytes, 2235 keywords
AML Output: /Library/Application Support/EvOSoftware/DSDT/DSDTFiles/./dsdt.aml - 18864 bytes, 673 named objects, 1562 executable opcodes

Compilation complete. 0 Errors, 1 Warnings, 0 Remarks, 31 Optimizations
Το Warnings μας λέει ότι υπάρχει πρόβλημα στην γραμμή 397: Method (_WAK, 1, NotSerialized)

Τώρα πάμε στο δεξί παράθυρο του προγράμματος και στο πεδίο ACPI search και στο Search γράφουμε _WAK και μετά πατάμε Search

Το πρόγραμμα μας βρίσκει το Method (_WAK, 1, NotSerialized) που βρίσκεται στη 397 γραμμή, και κάτω από την επικεφαλίδα τα εξής:

Code:
Method (_WAK, 1, NotSerialized)
    {
        Store (0xFF, DBG1)
        If (LEqual (Arg0, 0x03))
        {
            Store (0x88, SCP)
        }

        Notify (\_SB.PCI0.PX40.UAR1, Zero)
        If (OSFL)
        {
            Notify (\_SB.PWRB, 0x02)
        }
        Else
        {
            If (LEqual (RTCW, Zero))
            {
                Notify (\_SB.PWRB, 0x02)
            }
        }

        Notify (\_SB.PCI0.USB0, Zero)
        Notify (\_SB.PCI0.USB1, Zero)
        Notify (\_SB.PCI0.USB2, Zero)
        Notify (\_SB.PCI0.USB3, Zero)
        }
Αν πάμε στο μενού του προγράμματος που βρίσκεται αριστερά του παραθύρου θα δούμε το DSDT fixes και το DSDT hacks. Το καθένα από τα δύο μενού μας δίνει, το ένα τον τρόπο να κάνουμε fix το δικό μας DSDT ενώ το άλλο πώς θα κάνουμε hack πχ την κάρτα ήχου ή γραφικών του υπολογιστή μας (εγώ πάντως δεν έχω προσπαθήσει ακόμα να κάνω hack την κάρτα ήχου ή την κάρτα γραφικών από εδώ)

Για να γυρίσουμε στο παράδειγμά μας πατώντας το DSDT fixes πηγαίνουμε στο: must return a value (_WAK).dsl όπου μας βγάζει το παρακάτω:

Code:
dsdt.dsl   163:     Method (_WAK, 1, NotSerialized)
Warning  2026 -                ^ Reserved method must return a value (_WAK)

At the end of the _WAK method, this must be added:

Return(Package(0x02){Zero, Zero})


Example:


Method (_WAK, 1, NotSerialized)
    {
        P8XH (One, 0xAB)
        If (LOr (LEqual (Arg0, 0x03), LEqual (Arg0, 0x04)))
        {
            If (And (CFGD, 0x01000000))
            {
                If (LAnd (And (CFGD, 0xF0), LEqual (OSYS, 0x07D1)))
                {
                    TRAP (0x3D)
                }
            }
        }

        If (LEqual (RP2D, Zero))
        {
            Notify (\_SB.PCI0.RP02, Zero)
        }

        If (LEqual (Arg0, 0x03)) {}
        If (LEqual (Arg0, 0x04))
        {
            \_SB.PCI0.LPCB.EC.SELE ()
        }

        P8XH (Zero, 0xCD)

        Return (Package (0x02)
        {
            Zero, 
            Zero
        })
    }
όπου λίγο πολύ μας λέει ότι για να εξαλείψουμε το Warning αυτό αρκεί να κάνουμε copy/paste τα

Return (Package (0x02)
{
Zero,
Zero
})
}


στο σημείο που μας υποδεικνύει

Στο δικό μου γίνεται έτσι (με τα κόκκινα στοιχεία είναι αυτά που πρόσθεσα):

Code:
    Method (_WAK, 1, NotSerialized)
    {
        Store (0xFF, DBG1)
        If (LEqual (Arg0, 0x03))
        {
            Store (0x88, SCP)
        }

        Notify (\_SB.PCI0.PX40.UAR1, Zero)
        If (OSFL)
        {
            Notify (\_SB.PWRB, 0x02)
        }
        Else
        {
            If (LEqual (RTCW, Zero))
            {
                Notify (\_SB.PWRB, 0x02)
            }
        }

        Notify (\_SB.PCI0.USB0, Zero)
        Notify (\_SB.PCI0.USB1, Zero)
        Notify (\_SB.PCI0.USB2, Zero)
        Notify (\_SB.PCI0.USB3, Zero)
        Return (Package (0x02)
        {
            Zero, 
            Zero
        })
    }
Μετά από αυτό ξανακάνουμε Compile DSDT και το αποτέλεσμα είναι το παρακάτω:

Code:
Intel ACPI Component Architecture
ASL Optimizing Compiler version 20090730 [Aug 12 2009]
Copyright (C) 2000 - 2009 Intel Corporation
Supports ACPI Specification Revision 4.0 

ASL Input:  /Library/Application Support/EvOSoftware/DSDT/DSDTFiles/dsdt.dsl - 5920 lines, 192565 bytes, 2236 keywords
AML Output: /Library/Application Support/EvOSoftware/DSDT/DSDTFiles/./dsdt.aml - 18870 bytes, 673 named objects, 1563 executable opcodes

Compilation complete. 0 Errors, 0 Warnings, 0 Remarks, 31 Optimizations
Όπως παρατηρούμε το Warnings που υπήρχε διορθώθηκε.
Για να διαπιστώσω ότι όλα πάνε καλά έκανα επανεκκίνηση όπου ήταν κανονική και το σύστημα "ανέβηκε" όπως πάντα σωστά και σταθερά.

Θα πρέπει να επισημάνω ότι το όλο εγχείρημα έγινε στο δικό μου DSDT που δημιούργησα από το δικό μου μηχάνημα. Πιστεύω να λειτουργήσει και σε όποιον προσπαθήσει στο δικό του DSDT.

Περισσότερες πληροφορίες καθώς και οπτικοποιημένες οι λειτουργίες του προγράμματος DSDTSE v1.4.3 στην διεύθυνση:

http://www.youtube.com/watch?v=EOyu8...layer_embedded

Motherboard: FOXCONN Intel G31MXP / Chipset ICH7
Memory: 4 GB 1066 MHz DDR2 SDRAM
Processor: Core2Quad @2.66GHz
Audio: ALC662
Graphic: nVidia GeForce GT220 1024 MB
Ethernet: Realtek RTL8111/8168

OS:10.8.2 Mountain Lion (64bit)
OS:10.7.5 Lion (64bit)
OS:10.6.8 Vanilla Kernel (64bit)

ipad2 WiFi 16GB white

Last edited by tangon; 06-24-2010 at 08:21 AM.
Reply With Quote