Contribute
Register

Install Guide : Intel Haswell NUC Core i5 (D54250WYK) V1 (Mavericks)

Status
Not open for further replies.
Installation Guide : Intel Haswell NUC Core i5 (D54250WYK)

I have updated the guide today; it nows includes the DSDT file and updated Install Pack. Please download the latest version of the Install Pack (V2).

HDMI Audio has now been confirmed as fully working - will add the details for this shortly.

:thumbup:
 
Installation Guide : Intel Haswell NUC Core i5 (D54250WYK)

To enable repeatability of DSDT patches for this board (and maybe also help the i3 board)

I have gone through the comparison process and re-checked to list here the changes needed to make to a native (unfixed) DSDT to get a clean compiling one. Please note the results of this would be a DSDT which will firstly compile (no errors) and secondly compile cleanly (using ACPI 4.0). A fully clean compile under ACPI 4.0 may give rise to Remarks under ACPI 5.0 and vice versa.

Firstly, if you extract your Native DSDT you will get a load of errors, so here is a summary of a manual fixing for these errors [ perhaps someone would like to code a Maciasl patch for them? ]

Code:
1. 
Find these two statements and delete them:

   External (PS3X, MethodObj)   
   External (PS0X, MethodObj)   

Please note that as an alternative to delete, you could simply place this "//" in front of each statement you wish the compiler to ignore - to comment them out - like this:

   //  External (PS3X, MethodObj)   
   //  External (PS0X, MethodObj) 
 

2. At around line 6290 you find a column of

Zero
Zero
etc.

Delete all the Zeros

3.  If (CondRefOf (\_SB.PCI0.XHC.PS0X))
                {
             PS0X
                }

Delete ( or comment out by placing "//" this in front of ) PSOX like this:

  If (CondRefOf (\_SB.PCI0.XHC.PS0X))
                {
               //     PS0X  
                }

4.   If (CondRefOf (\_SB.PCI0.XHC.PS3X))
                {
                 PS3X 
                }
Delete ( or comment out by placing "//" this in front of ) PS3X like this:

 If (CondRefOf (\_SB.PCI0.XHC.PS3X))
                {
           //         PS3X 
                }

5.  If (CondRefOf (\_SB.PCI0.I2C0.PS0X))
                    {
                    PS0X 
                    }
       
Delete ( or comment out by placing "//" this in front of ) PS0X like this:

 If (CondRefOf (\_SB.PCI0.I2C0.PS0X))
                    {
               //         PS0X 
                    }
       
6. If (CondRefOf (\_SB.PCI0.I2C0.PS3X))
                    {
                    PS3X 
                    }
           
Delete ( or comment out by placing "//" this in front of ) PS3X like this:

  If (CondRefOf (\_SB.PCI0.I2C0.PS3X))
                    {
             //           PS3X 
                    }
             
7.    If (CondRefOf (\_SB.PCI0.I2C1.PS0X))
                        {
                      PS0X 
                        }
Delete ( or comment out by placing "//" this in front of ) PS0X like this:

   If (CondRefOf (\_SB.PCI0.I2C1.PS0X))
                        {
                    //        PS0X 
                        }

8.    If (CondRefOf (\_SB.PCI0.SDHC.PS0X))
                    {
                    PS0X
                    }
        
Delete ( or comment out by placing "//" this in front of ) PS0X like this:

   If (CondRefOf (\_SB.PCI0.SDHC.PS0X))
                    {
            //            PS0X
                    }

9.    If (CondRefOf (\_SB.PCI0.I2C1.TPD7.PS0X))
                    {
                  PS0X 
                    }
      
Delete ( or comment out by placing "//" this in front of ) PS0X like this:

  If (CondRefOf (\_SB.PCI0.I2C1.TPD7.PS0X))
                    {
              //          PS0X
                    }
      
10.   If (CondRefOf (\_SB.PCI0.I2C1.TPD8.PS0X))
                    {
                       PS0X 
                    }

Delete ( or comment out by placing "//" this in front of ) PS0X like this:

 If (CondRefOf (\_SB.PCI0.I2C1.TPD8.PS0X))
                    {
              //          PS0X
                    }

11.  If (CondRefOf (\_SB.PCI0.SDHC.WI01.PS0X))
                    {
                  PS0X
                    }
   Delete ( or comment out by placing "//" this in front of ) PS0X like this:     

 If (CondRefOf (\_SB.PCI0.SDHC.WI01.PS0X))
                    {
             //           PS0X 
                    }

12.     If (CondRefOf (\_SB.PCI0.SDHC.WI01.PS3X))
                    {
                     PS3X 
                    }
 
Delete ( or comment out by placing "//" this in front of ) PS3X like this:       

 If (CondRefOf (\_SB.PCI0.SDHC.WI01.PS3X))
                    {
                //        PS3X 
                    }

13. Find:

If (CondRefOf (MDBG))
        {
            Return (MDBG)
            Arg0 
        }
 Replace:

If (CondRefOf (MDBG))
        {
            Return (MDBG)
        //   Arg0
        }

You now should have a DSDT which will compile without errors, but you will still have a lot of Warnings and Remarks.

So here is a textual guide to getting rid of the warnings and remarks under compiling with ACPI 4.0 - a convenient text editor like Text Wrangler can be used to work with a .dsl file, as can Maciasl and DSDTse, one with a good search and replace function will help you.

Code:
1. Find 

                     _T_
Replace 

                       T_

2. Find

               Acquire (MUT0, 0x0FFF)
Replace
               Acquire (MUT0, 0xFFFF)

3. Find 

               _DEP
Replace 

              DEP

4. Find 

             _HRV
Replace 

               HRV


5.Warnings

A."Not all control paths return a value"

Find: Break
Replace: Return (zero)

B. Find:

 Method (_PS0, 0, Serialized)
            {
                If (LEqual (DVID, 0xFFFF))
                {
                    Return (Zero)
                }

                Store (MEMB, Local2)
                Store (PDBM, Local1)
                And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
                Store (SRMB, MEMB)
                Or (PDBM, 0x02, PDBM)
                OperationRegion (MCA1, SystemMemory, SRMB, 0x9000)
                Field (MCA1, DWordAcc, Lock, Preserve)
                {
                            Offset (0x510), 
                    R510,   32, 
                            Offset (0x520), 
                    R520,   32, 
                            Offset (0x530), 
                    R530,   32, 
                            Offset (0x540), 
                    R540,   32, 
                            Offset (0x80E0), 
                        ,   15, 
                    AX15,   1, 
                            Offset (0x8154), 
                        ,   31, 
                    CLK2,   1, 
                            Offset (0x816C), 
                        ,   2, 
                    CLK0,   1, 
                        ,   11, 
                    CLK1,   1
                }

                Store (D0D3, Local3)
                If (LEqual (Local3, 0x03))
                {
                    Store (Zero, D0D3)
                }

                If (LEqual (PCHS, 0x02))
                {
                    Store (Zero, MB13)
                    Store (Zero, MB14)
                    Store (Zero, CLK0)
                    Store (Zero, CLK1)
                }

                Store (One, CLK2)
                If (LEqual (PCHS, 0x02))
                {
                    While (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
                        And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 0x03FB), 
                        0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
                    {
                        Stall (0x32)
                    }

                    Store (R510, Local0)
                    If (LEqual (And (Local0, 0x000203FB), 0x02A0))
                    {
                        Or (Local0, 0x80000000, R510)
                        While (LEqual (And (R510, 0x00180000), Zero))
                        {
                            Stall (0x32)
                        }

                        And (R510, 0xFFFFFFFFFFFFFFFD, Local0)
                        Or (Local0, 0x00FE0000, R510)
                    }

                    Store (R520, Local0)
                    If (LEqual (And (Local0, 0x000203FB), 0x02A0))
                    {
                        Or (Local0, 0x80000000, R520)
                        While (LEqual (And (R520, 0x00180000), Zero))
                        {
                            Stall (0x32)
                        }

                        And (R520, 0xFFFFFFFFFFFFFFFD, Local0)
                        Or (Local0, 0x00FE0000, R520)
                    }

                    Store (R530, Local0)
                    If (LEqual (And (Local0, 0x000203FB), 0x02A0))
                    {
                        Or (Local0, 0x80000000, R530)
                        While (LEqual (And (R530, 0x00180000), Zero))
                        {
                            Stall (0x32)
                        }

                        And (R530, 0xFFFFFFFFFFFFFFFD, Local0)
                        Or (Local0, 0x00FE0000, R530)
                    }

                    Store (R540, Local0)
                    If (LEqual (And (Local0, 0x000203FB), 0x02A0))
                    {
                        Or (Local0, 0x80000000, R540)
                        While (LEqual (And (R540, 0x00180000), Zero))
                        {
                            Stall (0x32)
                        }

                        And (R540, 0xFFFFFFFFFFFFFFFD, Local0)
                        Or (Local0, 0x00FE0000, R540)
                    }

                    Store (One, AX15)
                }

                If (CondRefOf (\_SB.PCI0.XHC.PS0X)) {}
                If (LEqual (Local3, 0x03))
                {
                    Store (0x03, D0D3)
                }

                And (PDBM, 0xFFFFFFFFFFFFFFFD, PDBM)
                Store (Local2, MEMB)
                Store (Local1, PDBM)
                
            }


 And insert:  "Return (Zero)" before the last }, like this: 


 Method (_PS0, 0, Serialized)
            {
                If (LEqual (DVID, 0xFFFF))
                {
                    Return (Zero)
                }

                Store (MEMB, Local2)
                Store (PDBM, Local1)
                And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
                Store (SRMB, MEMB)
                Or (PDBM, 0x02, PDBM)
                OperationRegion (MCA1, SystemMemory, SRMB, 0x9000)
                Field (MCA1, DWordAcc, Lock, Preserve)
                {
                            Offset (0x510), 
                    R510,   32, 
                            Offset (0x520), 
                    R520,   32, 
                            Offset (0x530), 
                    R530,   32, 
                            Offset (0x540), 
                    R540,   32, 
                            Offset (0x80E0), 
                        ,   15, 
                    AX15,   1, 
                            Offset (0x8154), 
                        ,   31, 
                    CLK2,   1, 
                            Offset (0x816C), 
                        ,   2, 
                    CLK0,   1, 
                        ,   11, 
                    CLK1,   1
                }

                Store (D0D3, Local3)
                If (LEqual (Local3, 0x03))
                {
                    Store (Zero, D0D3)
                }

                If (LEqual (PCHS, 0x02))
                {
                    Store (Zero, MB13)
                    Store (Zero, MB14)
                    Store (Zero, CLK0)
                    Store (Zero, CLK1)
                }

                Store (One, CLK2)
                If (LEqual (PCHS, 0x02))
                {
                    While (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
                        And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 0x03FB), 
                        0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
                    {
                        Stall (0x32)
                    }

                    Store (R510, Local0)
                    If (LEqual (And (Local0, 0x000203FB), 0x02A0))
                    {
                        Or (Local0, 0x80000000, R510)
                        While (LEqual (And (R510, 0x00180000), Zero))
                        {
                            Stall (0x32)
                        }

                        And (R510, 0xFFFFFFFFFFFFFFFD, Local0)
                        Or (Local0, 0x00FE0000, R510)
                    }

                    Store (R520, Local0)
                    If (LEqual (And (Local0, 0x000203FB), 0x02A0))
                    {
                        Or (Local0, 0x80000000, R520)
                        While (LEqual (And (R520, 0x00180000), Zero))
                        {
                            Stall (0x32)
                        }

                        And (R520, 0xFFFFFFFFFFFFFFFD, Local0)
                        Or (Local0, 0x00FE0000, R520)
                    }

                    Store (R530, Local0)
                    If (LEqual (And (Local0, 0x000203FB), 0x02A0))
                    {
                        Or (Local0, 0x80000000, R530)
                        While (LEqual (And (R530, 0x00180000), Zero))
                        {
                            Stall (0x32)
                        }

                        And (R530, 0xFFFFFFFFFFFFFFFD, Local0)
                        Or (Local0, 0x00FE0000, R530)
                    }

                    Store (R540, Local0)
                    If (LEqual (And (Local0, 0x000203FB), 0x02A0))
                    {
                        Or (Local0, 0x80000000, R540)
                        While (LEqual (And (R540, 0x00180000), Zero))
                        {
                            Stall (0x32)
                        }

                        And (R540, 0xFFFFFFFFFFFFFFFD, Local0)
                        Or (Local0, 0x00FE0000, R540)
                    }

                    Store (One, AX15)
                }

                If (CondRefOf (\_SB.PCI0.XHC.PS0X)) {}
                If (LEqual (Local3, 0x03))
                {
                    Store (0x03, D0D3)
                }

                And (PDBM, 0xFFFFFFFFFFFFFFFD, PDBM)
                Store (Local2, MEMB)
                Store (Local1, PDBM)
                [B]Return (Zero)[/B]
            }


6. Find all instances of:
                     Else
                    {
                        Return (Buffer (One)
                        {
                            0x00
                        })
                    }
                }

and replace with :

                     Else
                    {
                        Return (Buffer (One)
                        {
                            0x00
                        })
                    }

                    Return (Zero)
                }

7. Into this method:

  Method (SPL1, 0, Serialized)
    {
        Name (PPUU, Zero)
        If (LEqual (CSEM, One))
        {
            Return (Zero)
        }

        Store (One, CSEM)
        Store (PPL1, PLSV)
        Store (PL1E, PLEN)
        Store (CLP1, CLMP)
        If (LEqual (PWRU, Zero))
        {
            Store (One, PPUU)
        }
        Else
        {
            ShiftLeft (Decrement (PWRU), 0x02, PPUU)
        }

        Multiply (PLVL, PPUU, Local0)
        Divide (Local0, 0x03E8, , Local1)
        Store (Local1, PPL1)
        Store (One, PL1E)
        Store (One, CLP1)
        
    }


Add "Return (Zero)" before the last } like this:

  Method (SPL1, 0, Serialized)
    {
        Name (PPUU, Zero)
        If (LEqual (CSEM, One))
        {
            Return (Zero)
        }

        Store (One, CSEM)
        Store (PPL1, PLSV)
        Store (PL1E, PLEN)
        Store (CLP1, CLMP)
        If (LEqual (PWRU, Zero))
        {
            Store (One, PPUU)
        }
        Else
        {
            ShiftLeft (Decrement (PWRU), 0x02, PPUU)
        }

        Multiply (PLVL, PPUU, Local0)
        Divide (Local0, 0x03E8, , Local1)
        Store (Local1, PPL1)
        Store (One, PL1E)
        Store (One, CLP1)
        [B]Return (Zero)[/B]
    }

8. Find

Method (_HID, 0, NotSerialized)
        {
            If (TCMF) {}
            Else
            {
                Return (0x310CD041)
            }
        }

and insert Return (zero) as below:

Method (_HID, 0, NotSerialized)
        {
            If (TCMF) {}
            Else
            {
                Return (0x310CD041)
            }
      Return (zero)
        }

9.
Find all instances of:

Return (Package (0x00) 

and replace with

Return (Package (Zero)

These patches are all you need to get the clean compile which will then be useful for applying further patches under Maciasl.

As mentioned, it would be great if someone has the time to wrap this all up into an NUC specific single script that can be run by Maciasl.
 
Installation Guide : Intel Haswell NUC Core i5 (D54250WYK)

To enable repeatability of DSDT patches for this board (and maybe also help the i3 board)

I have gone through the comparison process and re-checked to list here the changes needed to make to a native (unfixed) DSDT to get a clean compiling one. Please note the results of this would be a DSDT which will firstly compile (no errors) and secondly compile cleanly (using ACPI 4.0). A fully clean compile under ACPI 4.0 may give rise to Remarks under ACPI 5.0 and vice versa.

Firstly, if you extract your Native DSDT you will get a load of errors, so here is a summary of a manual fixing for these errors [ perhaps someone would like to code a Maciasl patch for them? ]

Code:
1. 
Find these two statements and delete them:

   External (PS3X, MethodObj)   
   External (PS0X, MethodObj)   

Please note that as an alternative to delete, you could simply place this "//" in front of each statement you wish the compiler to ignore - to comment them out - like this:

   //  External (PS3X, MethodObj)   
   //  External (PS0X, MethodObj) 
 

2. At around line 6290 you find a column of

Zero
Zero
etc.

Delete all the Zeros

3.  If (CondRefOf (\_SB.PCI0.XHC.PS0X))
                {
             PS0X
                }

Delete ( or comment out by placing "//" this in front of ) PSOX like this:

  If (CondRefOf (\_SB.PCI0.XHC.PS0X))
                {
               //     PS0X  
                }

4.   If (CondRefOf (\_SB.PCI0.XHC.PS3X))
                {
                 PS3X 
                }
Delete ( or comment out by placing "//" this in front of ) PS3X like this:

 If (CondRefOf (\_SB.PCI0.XHC.PS3X))
                {
           //         PS3X 
                }

5.  If (CondRefOf (\_SB.PCI0.I2C0.PS0X))
                    {
                    PS0X 
                    }
       
Delete ( or comment out by placing "//" this in front of ) PS0X like this:

 If (CondRefOf (\_SB.PCI0.I2C0.PS0X))
                    {
               //         PS0X 
                    }
       
6. If (CondRefOf (\_SB.PCI0.I2C0.PS3X))
                    {
                    PS3X 
                    }
           
Delete ( or comment out by placing "//" this in front of ) PS3X like this:

  If (CondRefOf (\_SB.PCI0.I2C0.PS3X))
                    {
             //           PS3X 
                    }
             
7.    If (CondRefOf (\_SB.PCI0.I2C1.PS0X))
                        {
                      PS0X 
                        }
Delete ( or comment out by placing "//" this in front of ) PS0X like this:

   If (CondRefOf (\_SB.PCI0.I2C1.PS0X))
                        {
                    //        PS0X 
                        }

8.    If (CondRefOf (\_SB.PCI0.SDHC.PS0X))
                    {
                    PS0X
                    }
        
Delete ( or comment out by placing "//" this in front of ) PS0X like this:

   If (CondRefOf (\_SB.PCI0.SDHC.PS0X))
                    {
            //            PS0X
                    }

9.    If (CondRefOf (\_SB.PCI0.I2C1.TPD7.PS0X))
                    {
                  PS0X 
                    }
      
Delete ( or comment out by placing "//" this in front of ) PS0X like this:

  If (CondRefOf (\_SB.PCI0.I2C1.TPD7.PS0X))
                    {
              //          PS0X
                    }
      
10.   If (CondRefOf (\_SB.PCI0.I2C1.TPD8.PS0X))
                    {
                       PS0X 
                    }

Delete ( or comment out by placing "//" this in front of ) PS0X like this:

 If (CondRefOf (\_SB.PCI0.I2C1.TPD8.PS0X))
                    {
              //          PS0X
                    }

11.  If (CondRefOf (\_SB.PCI0.SDHC.WI01.PS0X))
                    {
                  PS0X
                    }
   Delete ( or comment out by placing "//" this in front of ) PS0X like this:     

 If (CondRefOf (\_SB.PCI0.SDHC.WI01.PS0X))
                    {
             //           PS0X 
                    }

12.     If (CondRefOf (\_SB.PCI0.SDHC.WI01.PS3X))
                    {
                     PS3X 
                    }
 
Delete ( or comment out by placing "//" this in front of ) PS3X like this:       

 If (CondRefOf (\_SB.PCI0.SDHC.WI01.PS3X))
                    {
                //        PS3X 
                    }

13. Find:

If (CondRefOf (MDBG))
        {
            Return (MDBG)
            Arg0 
        }
 Replace:

If (CondRefOf (MDBG))
        {
            Return (MDBG)
        //   Arg0
        }

You now should have a DSDT which will compile without errors, but you will still have a lot of Warnings and Remarks.

So here is a textual guide to getting rid of the warnings and remarks under compiling with ACPI 4.0 - a convenient text editor like Text Wrangler can be used to work with a .dsl file, as can Maciasl and DSDTse, one with a good search and replace function will help you.

Code:
1. Find 

                     _T_
Replace 

                       T_

2. Find

               Acquire (MUT0, 0x0FFF)
Replace
               Acquire (MUT0, 0xFFFF)

3. Find 

               _DEP
Replace 

              DEP

4. Find 

             _HRV
Replace 

               HRV


5.Warnings

A."Not all control paths return a value"

Find: Break
Replace: Return (zero)

B. Find:

 Method (_PS0, 0, Serialized)
            {
                If (LEqual (DVID, 0xFFFF))
                {
                    Return (Zero)
                }

                Store (MEMB, Local2)
                Store (PDBM, Local1)
                And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
                Store (SRMB, MEMB)
                Or (PDBM, 0x02, PDBM)
                OperationRegion (MCA1, SystemMemory, SRMB, 0x9000)
                Field (MCA1, DWordAcc, Lock, Preserve)
                {
                            Offset (0x510), 
                    R510,   32, 
                            Offset (0x520), 
                    R520,   32, 
                            Offset (0x530), 
                    R530,   32, 
                            Offset (0x540), 
                    R540,   32, 
                            Offset (0x80E0), 
                        ,   15, 
                    AX15,   1, 
                            Offset (0x8154), 
                        ,   31, 
                    CLK2,   1, 
                            Offset (0x816C), 
                        ,   2, 
                    CLK0,   1, 
                        ,   11, 
                    CLK1,   1
                }

                Store (D0D3, Local3)
                If (LEqual (Local3, 0x03))
                {
                    Store (Zero, D0D3)
                }

                If (LEqual (PCHS, 0x02))
                {
                    Store (Zero, MB13)
                    Store (Zero, MB14)
                    Store (Zero, CLK0)
                    Store (Zero, CLK1)
                }

                Store (One, CLK2)
                If (LEqual (PCHS, 0x02))
                {
                    While (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
                        And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 0x03FB), 
                        0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
                    {
                        Stall (0x32)
                    }

                    Store (R510, Local0)
                    If (LEqual (And (Local0, 0x000203FB), 0x02A0))
                    {
                        Or (Local0, 0x80000000, R510)
                        While (LEqual (And (R510, 0x00180000), Zero))
                        {
                            Stall (0x32)
                        }

                        And (R510, 0xFFFFFFFFFFFFFFFD, Local0)
                        Or (Local0, 0x00FE0000, R510)
                    }

                    Store (R520, Local0)
                    If (LEqual (And (Local0, 0x000203FB), 0x02A0))
                    {
                        Or (Local0, 0x80000000, R520)
                        While (LEqual (And (R520, 0x00180000), Zero))
                        {
                            Stall (0x32)
                        }

                        And (R520, 0xFFFFFFFFFFFFFFFD, Local0)
                        Or (Local0, 0x00FE0000, R520)
                    }

                    Store (R530, Local0)
                    If (LEqual (And (Local0, 0x000203FB), 0x02A0))
                    {
                        Or (Local0, 0x80000000, R530)
                        While (LEqual (And (R530, 0x00180000), Zero))
                        {
                            Stall (0x32)
                        }

                        And (R530, 0xFFFFFFFFFFFFFFFD, Local0)
                        Or (Local0, 0x00FE0000, R530)
                    }

                    Store (R540, Local0)
                    If (LEqual (And (Local0, 0x000203FB), 0x02A0))
                    {
                        Or (Local0, 0x80000000, R540)
                        While (LEqual (And (R540, 0x00180000), Zero))
                        {
                            Stall (0x32)
                        }

                        And (R540, 0xFFFFFFFFFFFFFFFD, Local0)
                        Or (Local0, 0x00FE0000, R540)
                    }

                    Store (One, AX15)
                }

                If (CondRefOf (\_SB.PCI0.XHC.PS0X)) {}
                If (LEqual (Local3, 0x03))
                {
                    Store (0x03, D0D3)
                }

                And (PDBM, 0xFFFFFFFFFFFFFFFD, PDBM)
                Store (Local2, MEMB)
                Store (Local1, PDBM)
                
            }


 And insert:  "Return (Zero)" before the last }, like this: 


 Method (_PS0, 0, Serialized)
            {
                If (LEqual (DVID, 0xFFFF))
                {
                    Return (Zero)
                }

                Store (MEMB, Local2)
                Store (PDBM, Local1)
                And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
                Store (SRMB, MEMB)
                Or (PDBM, 0x02, PDBM)
                OperationRegion (MCA1, SystemMemory, SRMB, 0x9000)
                Field (MCA1, DWordAcc, Lock, Preserve)
                {
                            Offset (0x510), 
                    R510,   32, 
                            Offset (0x520), 
                    R520,   32, 
                            Offset (0x530), 
                    R530,   32, 
                            Offset (0x540), 
                    R540,   32, 
                            Offset (0x80E0), 
                        ,   15, 
                    AX15,   1, 
                            Offset (0x8154), 
                        ,   31, 
                    CLK2,   1, 
                            Offset (0x816C), 
                        ,   2, 
                    CLK0,   1, 
                        ,   11, 
                    CLK1,   1
                }

                Store (D0D3, Local3)
                If (LEqual (Local3, 0x03))
                {
                    Store (Zero, D0D3)
                }

                If (LEqual (PCHS, 0x02))
                {
                    Store (Zero, MB13)
                    Store (Zero, MB14)
                    Store (Zero, CLK0)
                    Store (Zero, CLK1)
                }

                Store (One, CLK2)
                If (LEqual (PCHS, 0x02))
                {
                    While (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
                        And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 0x03FB), 
                        0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
                    {
                        Stall (0x32)
                    }

                    Store (R510, Local0)
                    If (LEqual (And (Local0, 0x000203FB), 0x02A0))
                    {
                        Or (Local0, 0x80000000, R510)
                        While (LEqual (And (R510, 0x00180000), Zero))
                        {
                            Stall (0x32)
                        }

                        And (R510, 0xFFFFFFFFFFFFFFFD, Local0)
                        Or (Local0, 0x00FE0000, R510)
                    }

                    Store (R520, Local0)
                    If (LEqual (And (Local0, 0x000203FB), 0x02A0))
                    {
                        Or (Local0, 0x80000000, R520)
                        While (LEqual (And (R520, 0x00180000), Zero))
                        {
                            Stall (0x32)
                        }

                        And (R520, 0xFFFFFFFFFFFFFFFD, Local0)
                        Or (Local0, 0x00FE0000, R520)
                    }

                    Store (R530, Local0)
                    If (LEqual (And (Local0, 0x000203FB), 0x02A0))
                    {
                        Or (Local0, 0x80000000, R530)
                        While (LEqual (And (R530, 0x00180000), Zero))
                        {
                            Stall (0x32)
                        }

                        And (R530, 0xFFFFFFFFFFFFFFFD, Local0)
                        Or (Local0, 0x00FE0000, R530)
                    }

                    Store (R540, Local0)
                    If (LEqual (And (Local0, 0x000203FB), 0x02A0))
                    {
                        Or (Local0, 0x80000000, R540)
                        While (LEqual (And (R540, 0x00180000), Zero))
                        {
                            Stall (0x32)
                        }

                        And (R540, 0xFFFFFFFFFFFFFFFD, Local0)
                        Or (Local0, 0x00FE0000, R540)
                    }

                    Store (One, AX15)
                }

                If (CondRefOf (\_SB.PCI0.XHC.PS0X)) {}
                If (LEqual (Local3, 0x03))
                {
                    Store (0x03, D0D3)
                }

                And (PDBM, 0xFFFFFFFFFFFFFFFD, PDBM)
                Store (Local2, MEMB)
                Store (Local1, PDBM)
                [B]Return (Zero)[/B]
            }


6. Find all instances of:
                     Else
                    {
                        Return (Buffer (One)
                        {
                            0x00
                        })
                    }
                }

and replace with :

                     Else
                    {
                        Return (Buffer (One)
                        {
                            0x00
                        })
                    }

                    Return (Zero)
                }

7. Into this method:

  Method (SPL1, 0, Serialized)
    {
        Name (PPUU, Zero)
        If (LEqual (CSEM, One))
        {
            Return (Zero)
        }

        Store (One, CSEM)
        Store (PPL1, PLSV)
        Store (PL1E, PLEN)
        Store (CLP1, CLMP)
        If (LEqual (PWRU, Zero))
        {
            Store (One, PPUU)
        }
        Else
        {
            ShiftLeft (Decrement (PWRU), 0x02, PPUU)
        }

        Multiply (PLVL, PPUU, Local0)
        Divide (Local0, 0x03E8, , Local1)
        Store (Local1, PPL1)
        Store (One, PL1E)
        Store (One, CLP1)
        
    }


Add "Return (Zero)" before the last } like this:

  Method (SPL1, 0, Serialized)
    {
        Name (PPUU, Zero)
        If (LEqual (CSEM, One))
        {
            Return (Zero)
        }

        Store (One, CSEM)
        Store (PPL1, PLSV)
        Store (PL1E, PLEN)
        Store (CLP1, CLMP)
        If (LEqual (PWRU, Zero))
        {
            Store (One, PPUU)
        }
        Else
        {
            ShiftLeft (Decrement (PWRU), 0x02, PPUU)
        }

        Multiply (PLVL, PPUU, Local0)
        Divide (Local0, 0x03E8, , Local1)
        Store (Local1, PPL1)
        Store (One, PL1E)
        Store (One, CLP1)
        [B]Return (Zero)[/B]
    }

8. Find

Method (_HID, 0, NotSerialized)
        {
            If (TCMF) {}
            Else
            {
                Return (0x310CD041)
            }
        }

and insert Return (zero) as below:

Method (_HID, 0, NotSerialized)
        {
            If (TCMF) {}
            Else
            {
                Return (0x310CD041)
            }
      Return (zero)
        }

9.
Find all instances of:

Return (Package (0x00) 

and replace with

Return (Package (Zero)

These patches are all you need to get the clean compile which will then be useful for applying further patches under Maciasl.

As mentioned, it would be great if someone has the time to wrap this all up into an NUC specific single script that can be run by Maciasl.

Love the work minihack, thats great stuff!

If we can get it all wrapped up in a single update file, that would be super. I can include that in the install pack too, for those who want to roll their own DSDT.

I'm working night shifts the next few nights, so I will have a look at the updates you have listed above and see if I can come up with something.

Thanks again for all your work on the DSDT and also HDMI audio :cool:
 
Installation Guide : Intel Haswell NUC Core i5 (D54250WYK)

Thanks again for all your work on the DSDT and also HDMI audio :cool:

It's a pleasure. I like to know what has gone into a DSDT and I think they are important to getting as full a functioning board as we can.

Also I think it is important for people to roll their own where possible, because on more than one occasion I've had instances where things like a slightly different memory address or something between machines or bios versions can stop the whole machine booting.
 
Installation Guide : Intel Haswell NUC Core i5 (D54250WYK)

I can confirm hdmi audio working perfectly now for me too :) thanks!
 
Installation Guide : Intel Haswell NUC Core i5 (D54250WYK)

As mentioned, it would be great if someone has the time to wrap this all up into an NUC specific single script that can be run by Maciasl.
NUC dsdt NUC Compiler fixes (only fixes errors)

Tools

MaciASL

  1. Configure
    1. Preferences/Sources/+/
      Code:
      https://raw.github.com/toleda/audio_hdmi_8series/master
    2. Restart MaciASL
  2. Extract
    1. File/New From ACPI/DSDT
  3. Patch
    1. 8series
      1. NUC-Compiler fixes
    2. Apply
  4. Install
    1. Close (Patch window)
    2. Compile
    3. Save As../Extra/DSDT.aml
Restart
 
Installation Guide : Intel Haswell NUC Core i5 (D54250WYK)

NUC dsdt NUC Compiler fixes (only fixes errors)

Tools

MaciASL

  1. Configure
    1. Preferences/Sources/+/
      Code:
      https://raw.github.com/toleda/audio_hdmi_8series/master
    2. Restart MaciASL
  2. Extract
    1. File/New From ACPI/DSDT
  3. Patch
    1. 8series
      1. NUC-Compiler fixes
    2. Apply
  4. Install
    1. Close (Patch window)
    2. Compile
    3. Save As../Extra/DSDT.aml
Restart

:thumbup:
 
Installation Guide : Intel Haswell NUC Core i5 (D54250WYK)

WonkeyDonkey - Thank you for your efforts to get the NUC up and running with the documented installation. I have been following the progress and really appreciate the work that you have done.

Good modding
neil
 
Installation Guide : Intel Haswell NUC Core i5 (D54250WYK)

WonkeyDonkey - Thank you for your efforts to get the NUC up and running with the documented installation. I have been following the progress and really appreciate the work that you have done.

Good modding
neil

Thankyou Neil.

It is a lot of work. I am trying to keep the guide as simple as possible but also accurate, by verifying all the information myself on a clean installation before posting the details, as well as keeping the guide in a logical order.

Its more work than I anticipated, but I do think it is coming along nicely.

I think we are at a good stage considering how new this hardware is. Its not really taken that long overall.

:thumbup:
 
Status
Not open for further replies.
Back
Top