Jump to content

Compiling ACPI v2.0 driver for Windows XP SP3 and Windows 2003 SP2 (x32/x64)


Mov AX, 0xDEAD

Recommended Posts


31 minutes ago, Dietmar said:

@Mov AX, 0xDEAD

GpioIo (

appears also in working DSDT.

 

But

Connection (

can be seen only in DSDT which gives DDB Bsod

Dietmar

XP lacks Connection (0x02) opcode in ParseField()

Basicaly GPIO will never(ACPI v5.x standart) work in XP,  we will have only interpreter bypass fix

Edited by Mov AX, 0xDEAD
Link to comment
Share on other sites

@Mov AX, 0xDEAD

Yepp, I see the strange symbols in output from Windbg.

ba15058a: Device(GPO0)OSNotifyCreate: 8A4282C8 (GPO0) = 00000103

ba150592: {
ba150592: Name(_ADR,Zero)
ba150598: Name(_HID,"INT33FC")
ba1505a6: Name(_CID,"INT33FC")
ba1505b4: Name(_DDN,"ValleyView2 General Purpose Input/Output (GPIO) controller")
ba1505f5: Name(_UID,One)
ba1505fb: Method(_CRS,0x8)
ba150627: Method(_STA,0x0)
ba1506d1: Name(AVBL,Zero)
ba1506d7: Method(_REG,0x2)
ba1506ea: OperationRegion(GPOP,0x1,GPBS=0x500,0x50)
ba1506f7: Field(GPOP,0x1)
ba1506ff: {
ba150702: Offset(0x28),
ba150704: ,21,
ba150709: BTD3,1,
ba15070c: Offset(0x48),
ba15070e: ,30,
ba150713: SHD3,1
ba150713: }
ba150713: OperationRegion(GPO2,0x8,Zero,0xc)
ba15071d: Field(GPO2,0x1)
ba150725: {
ba15072a: &
,35,
ba15072f: Π,1,
ba150732: AccessAs(0x0,0x2),
ba150734: ,0,
ba150736: ,0,
ba150738: ,0,
ba15073d: ,0,
ba150743: #,15,
ba150748: \_SB,46AMLI_ERROR(c0000035): Object already exist
CreateNameSpaceObject: object already exist - \_SB

Do you have an idea, how to exclude or fake Connection (

in acpi.sys

Dietmar

Link to comment
Share on other sites

I found this DSDT word "connection" in  ACPIspec50.pdf  from December 6, 2011 for the very first time.

Now it is clear, why xp, vista, win7 and (win8) dont like this Acpi5 word "connection" in DSDT.

Connection (GMOD), // Re-Use an existing connection (defined elsewhere)

Connection (
ConnectionResource // NameString | ResourceMacroTerm
)

Dietmar

Edited by Dietmar
Link to comment
Share on other sites

20 minutes ago, Mov AX, 0xDEAD said:

Hi

Can someone share ACPI.SYS Windows 8.0. or Windows 8.1 x32 checked version ? (from checked installation ISO)

I'm downloading the ISO, will send you a PM with the file in 5 minutes. :)

Link to comment
Share on other sites

6 minutes ago, daniel_k said:

I'm downloading the ISO, will send you a PM with the file in 5 minutes. :)

Thanks, usual acpi.sys compiled with deep optimization, unknow mixed register/stack calling convection, hard to decompile

Link to comment
Share on other sites

Quote

            Field (GPO2, ByteAcc, NoLock, Preserve)
            {
                Connection (
                    GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                        "\\_SB.GPO0", 0x00, ResourceConsumer, ,
                        )
                        {   // Pin list
                            0x005F
                        }
                ),
                SHS3,   1
            }

....

Device (SHUB)

Method (_PS3, 0, Serialized)  // _PS3: Power State 3
                {
                    If ((^^^GPO0.AVBL == One))
                    {
                        If ((OSEL == 0x02))
                        {
                            ^^^GPO0.SHD3 = Zero
                        }
                        Else
                        {
                            ^^^GPO0.SHS3 = Zero
                        }
                    }
                }

Ignoring Connection  broke access to SHS3 from other part of DSDT

to parse this new opcode, Win8 acpi.sys has new ParseFieldConnection((_ctxt *pctxt, XXX *pConnection))

to store connection config, _FieldDesc has new fields, last field has variable len:

Quote

struct _FieldDesc// Size=0x24
{
    unsigned long dwByteOffset;// Offset=0x0 Size=0x4
    unsigned long dwStartBitPos;// Offset=0x4 Size=0x4
    unsigned long dwNumBits;// Offset=0x8 Size=0x4
    unsigned long dwFieldFlags;// Offset=0xc Size=0x4
    unsigned char bAttribLength;// Offset=0x10 Size=0x1
    unsigned char __align0[3];// Offset=0x11 Size=0x3
    enum _CONNECTIONTYPE ConnectionType;// Offset=0x14 Size=0x4
    unsigned long dwConnectionFirstBitPos;// Offset=0x18 Size=0x4
    unsigned long dwConnectionLength;// Offset=0x1c Size=0x4
    unsigned char abConnectionData[YYY];// Offset=0x20 Size=0x1
    ....
};

I think these new fileds used in some field functions read/write/access to connection alias SHS3
 

Link to comment
Share on other sites

Easy-Peasy way: skip  GpioIo  definition and assume SHS3 as memory field

Quote

OperationRegion (GPO2, GeneralPurposeIo, Zero, 0x0C)

Field (GPO2, ByteAcc, NoLock, Preserve)
            {
                Connection (
                    GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                        "\\_SB.GPO0", 0x00, ResourceConsumer, ,
                        )
                        {   // Pin list
                            0x005F
                        }
                ),
                SHS3,   1
            }

To:

Quote

OperationRegion (GPO2, GeneralPurposeIo, Zero, 0x0C)

Field (GPO2, ByteAcc, NoLock, Preserve)
            {
                SHS3,   1
            }

I know this is wrong, OperationRegion can be NULL or dummy, but we don't have any GPIO support in acpi.sys anyway

GeneralPurposeIo = 0x08, missed in XP acpi.sys

Edited by Mov AX, 0xDEAD
Link to comment
Share on other sites

@Mov AX, 0xDEAD

Yepp, this is the way, that I modd my DSDT for the Flex 10.

This means editing of DSDT.

How can acpi.sys been told to ignore the connection () ?

 

By the way, how is sense for such a acpi5 word connection () in DSDT,

when acpi.sys does not work at all with the GPIO pins

Dietmar

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...