Jump to content

HWMonitor Problem


Faradis
 Share

6 posts in this topic

Recommended Posts

any one here can help me fixing my fan issue in Hwmonitor.app??

my Cpu and system fan reading is not showing in my  Hwmonitor.app

only my GPU fan reading is showing

i am on kolzak branch should i switch to slice branch my dump and screenshot are from my previous Yosemite installation right now i am on El-cap

HW_sensors.png
Link to comment
Share on other sites

 

any one here can help me fixing my fan issue in Hwmonitor.app??

my Cpu and system fan reading is not showing in my  Hwmonitor.app

only my GPU fan reading is showing

i am on kolzak branch should i switch to slice branch my dump and screenshot are from my previous Yosemite installation right now i am on El-cap

HW_sensors.png

 

seems like your superIO is not completely implemented into fakesmc...

You can use ACPI Sensors and if you know where the fan registers located in your acpi (dsdt) you can make an extra code like:

 

Here is an example code, but look only at FAN1/FAN0, since its from me, and i have some other sensors implemented too...

Device (SMCD)
    {
        Name (_HID, "MON0000")  // _HID: Hardware ID
        Name (TACH, Package (0x0C)
        {
            "Right Fan", "FAN0", 
            "Left Fan", "FAN1", 
            "ALS value 1", "AL11", 
            "ALS value 2", "AL12", 
            "ALS RALS", "AL13",
            "ALS ALSA", "AL14"
        })
        Method (FAN0, 0, Serialized)
        {
            Store (\_SB.PCI0.LPCB.EC0.TACH (Zero), Local0)
            Return (Local0)
        }

        Method (FAN1, 0, Serialized)
        {
            Store (\_SB.PCI0.LPCB.EC0.TACH (One), Local0)
            Return (Local0)
        }

        Method (AL11, 0, Serialized)
        {
            Store (\_SB.PCI0.LPCB.EC0.RRAM (0x02A3), Local0)
            Return (Local0)
        }

        Method (AL12, 0, Serialized)
        {
            Store (\_SB.PCI0.LPCB.EC0.RRAM (0x02A4), Local0)
            Return (Local0)
        }

        Method (AL13, 0, Serialized)
        {
            Store (\_SB.PCI0.LPCB.EC0.RALS (), Local0)
            Return (Local0)
        }
        
        Method (AL14, 0, Serialized)
        {
            Store (\_SB.ALSA, Local0)
            Return (Local0)
        }
    }

But i you can't write your own code, and don't know where the fans are located in dsdt... let it be... its just a visual change...

i have removed this useless code from my newer dsdt's since its only visual^^

 

Cheers :-)

Link to comment
Share on other sites

seems like your superIO is not completely implemented into fakesmc...

You can use ACPI Sensors and if you know where the fan registers located in your acpi (dsdt) you can make an extra code like:

 

Here is an example code, but look only at FAN1/FAN0, since its from me, and i have some other sensors implemented too...

Device (SMCD)
    {
        Name (_HID, "MON0000")  // _HID: Hardware ID
        Name (TACH, Package (0x0C)
        {
            "Right Fan", "FAN0", 
            "Left Fan", "FAN1", 
            "ALS value 1", "AL11", 
            "ALS value 2", "AL12", 
            "ALS RALS", "AL13",
            "ALS ALSA", "AL14"
        })
        Method (FAN0, 0, Serialized)
        {
            Store (\_SB.PCI0.LPCB.EC0.TACH (Zero), Local0)
            Return (Local0)
        }

        Method (FAN1, 0, Serialized)
        {
            Store (\_SB.PCI0.LPCB.EC0.TACH (One), Local0)
            Return (Local0)
        }

        Method (AL11, 0, Serialized)
        {
            Store (\_SB.PCI0.LPCB.EC0.RRAM (0x02A3), Local0)
            Return (Local0)
        }

        Method (AL12, 0, Serialized)
        {
            Store (\_SB.PCI0.LPCB.EC0.RRAM (0x02A4), Local0)
            Return (Local0)
        }

        Method (AL13, 0, Serialized)
        {
            Store (\_SB.PCI0.LPCB.EC0.RALS (), Local0)
            Return (Local0)
        }
        
        Method (AL14, 0, Serialized)
        {
            Store (\_SB.ALSA, Local0)
            Return (Local0)
        }
    }

But i you can't write your own code, and don't know where the fans are located in dsdt... let it be... its just a visual change...

i have removed this useless code from my newer dsdt's since its only visual^^

 

Cheers :-)

heres my sensor related code in my DSDT 

 

Scope (_SB.PCI0.LPCB.ASOC)
    {
        Name (G611, Package (0x07)
        {
            0x06020011, 
            "CPU Voltage", 
            0x20000000, 
            Zero, 
            0x0320, 
            0x03E8, 
            0x02
        })
        Name (G612, Package (0x07)
        {
            0x06020012, 
            "CPU PLL Voltage", 
            0x20000000, 
            Zero, 
            0x05DC, 
            0x01F4, 
            0x02
        })
        Name (G613, Package (0x07)
        {
            0x06020013, 
            "IMC Voltage", 
            0x20000000, 
            Zero, 
            0x0320, 
            0x04B0, 
            0x02
        })
        Name (G615, Package (0x07)
        {
            0x06020015, 
            "PCH Voltage", 
            0x20000000, 
            Zero, 
            0x03E8, 
            0x012C, 
            0x02
        })
        Name (G617, Package (0x07)
        {
            0x06020017, 
            "DRAM VTDR Voltage", 
            0x20000000, 
            Zero, 
            0x0258, 
            0x02BC, 
            0x02
        })
        Name (G618, Package (0x07)
        {
            0x06020018, 
            "DRAM Bus Voltage", 
            0x20000000, 
            Zero, 
            0x04E2, 
            0x01F4, 
            0x02
        })
        Name (G619, Package (0x07)
        {
            0x06020019, 
            "3.3V Voltage", 
            0x20000000, 
            Zero, 
            0x0B9A, 
            0x0294, 
            0x02
        })
        Name (G61A, Package (0x07)
        {
            0x0602001A, 
            "5V Voltage", 
            0x20000000, 
            Zero, 
            0x1194, 
            0x03E8, 
            0x02
        })
        Name (G61B, Package (0x07)
        {
            0x0602001B, 
            "12V Voltage", 
            0x20000000, 
            Zero, 
            0x27D8, 
            0x0E10, 
            0x02
        })
        Name (G621, Package (0x07)
        {
            0x06030021, 
            "CPU Temperature", 
            0x20000000, 
            Zero, 
            0x0190, 
            0x01F4, 
            0x02
        })
        Name (G622, Package (0x07)
        {
            0x06030022, 
            "MB Temperature", 
            0x20000000, 
            Zero, 
            0x015E, 
            0x0190, 
            0x02
        })
        Name (G623, Package (0x07)
        {
            0x06030023, 
            "PCH Temperature", 
            0x20000000, 
            Zero, 
            0x015E, 
            0x0258, 
            0x02
        })
        Name (G625, Package (0x07)
        {
            0x06030025, 
            "OPT_TEMP1 Temperature", 
            0x20000000, 
            Zero, 
            Zero, 
            0x0384, 
            0x02
        })
        Name (G626, Package (0x07)
        {
            0x06030026, 
            "OPT_TEMP2 Temperature", 
            0x20000000, 
            Zero, 
            Zero, 
            0x0384, 
            0x02
        })
        Name (G631, Package (0x07)
        {
            0x06040031, 
            "CPU FAN Speed", 
            0x20000000, 
            Zero, 
            Zero, 
            Zero, 
            Zero
        })
        Name (G632, Package (0x07)
        {
            0x06040032, 
            "CHA_FAN1 FAN Speed", 
            0x20000000, 
            Zero, 
            Zero, 
            Zero, 
            Zero
        })
        Name (G633, Package (0x07)
        {
            0x06040033, 
            "CHA_FAN2 FAN Speed", 
            0x20000000, 
            Zero, 
            Zero, 
            Zero, 
            Zero
        })
        Name (G636, Package (0x07)
        {
            0x06040036, 
            "OPT_FAN1 FAN Speed", 
            0x20000000, 
            Zero, 
            Zero, 
            Zero, 
            Zero
        })
        Name (G637, Package (0x07)
        {
            0x06040037, 
            "OPT_FAN2 FAN Speed", 
            0x20000000, 
            Zero, 
            Zero, 
            Zero, 
            Zero
        })
        Name (GRP6, Package (0x13)
        {
            G611, 
            G612, 
            G613, 
            G615, 
            G617, 
            G618, 
            G619, 
            G61A, 
            G61B, 
            G621, 
            G622, 
            G623, 
            G625, 
            G626, 
            G631, 
            G632, 
            G633, 
            G636, 
            G637
        })
        Method (GIT6, 1, Serialized)
        {
            Name (T_0, Zero)
            Store (And (Arg0, 0xFFFF), T_0)
            If (LEqual (T_0, 0x11))
            {
                Store (^^SIOR.ECV0 (), ASB1)
                If (LEqual (ASB1, 0xFF))
                {
                    Store (Zero, ASB0)
                }
            }
            Else
            {
                If (LEqual (T_0, 0x12))
                {
                    Store (^^SIOR.ECV4 (), ASB1)
                    If (LEqual (ASB1, 0xFF))
                    {
                        Store (Zero, ASB0)
                    }
                }
                Else
                {
                    If (LEqual (T_0, 0x13))
                    {
                        Store (^^SIOR.ECV3 (), ASB1)
                        If (LEqual (ASB1, 0xFF))
                        {
                            Store (Zero, ASB0)
                        }
                    }
                    Else
                    {
                        If (LEqual (T_0, 0x15))
                        {
                            Store (^^SIOR.ECV2 (), ASB1)
                            If (LEqual (ASB1, 0xFF))
                            {
                                Store (Zero, ASB0)
                            }
                        }
                        Else
                        {
                            If (LEqual (T_0, 0x17))
                            {
                                Store (^^SIOR.ECV6 (), ASB1)
                                If (LEqual (ASB1, 0xFF))
                                {
                                    Store (Zero, ASB0)
                                }
                            }
                            Else
                            {
                                If (LEqual (T_0, 0x18))
                                {
                                    Store (^^SIOR.ECV1 (), ASB1)
                                    If (LEqual (ASB1, 0xFF))
                                    {
                                        Store (Zero, ASB0)
                                    }
                                }
                                Else
                                {
                                    If (LEqual (T_0, 0x19))
                                    {
                                        Store (RVLT (Zero), ASB1)
                                        If (LEqual (ASB1, 0xFF))
                                        {
                                            Store (Zero, ASB0)
                                        }
                                    }
                                    Else
                                    {
                                        If (LEqual (T_0, 0x1A))
                                        {
                                            Store (RVLT (One), ASB1)
                                            If (LEqual (ASB1, 0xFF))
                                            {
                                                Store (Zero, ASB0)
                                            }
                                        }
                                        Else
                                        {
                                            If (LEqual (T_0, 0x1B))
                                            {
                                                Store (RVLT (0x02), ASB1)
                                                If (LEqual (ASB1, 0xFF))
                                                {
                                                    Store (Zero, ASB0)
                                                }
                                            }
                                            Else
                                            {
                                                If (LEqual (T_0, 0x21))
                                                {
                                                    Store (^^SIOR.HWT1 (), ASB1)
                                                    If (LEqual (ASB1, 0xFF))
                                                    {
                                                        Store (Zero, ASB0)
                                                    }
                                                }
                                                Else
                                                {
                                                    If (LEqual (T_0, 0x22))
                                                    {
                                                        Store (^^SIOR.BRT2 (), ASB1)
                                                        If (LEqual (ASB1, 0xFF))
                                                        {
                                                            Store (Zero, ASB0)
                                                        }
                                                    }
                                                    Else
                                                    {
                                                        If (LEqual (T_0, 0x23))
                                                        {
                                                            Store (^^SIOR.SBT2 (), ASB1)
                                                            If (LEqual (ASB1, 0xFF))
                                                            {
                                                                Store (Zero, ASB0)
                                                            }
                                                        }
                                                        Else
                                                        {
                                                            If (LEqual (T_0, 0x25))
                                                            {
                                                                Store (^^SIOR.OFT1 (), ASB1)
                                                                If (LEqual (ASB1, 0xFF))
                                                                {
                                                                    Store (Zero, ASB0)
                                                                }
                                                            }
                                                            Else
                                                            {
                                                                If (LEqual (T_0, 0x26))
                                                                {
                                                                    Store (^^SIOR.OFT2 (), ASB1)
                                                                    If (LEqual (ASB1, 0xFF))
                                                                    {
                                                                        Store (Zero, ASB0)
                                                                    }
                                                                }
                                                                Else
                                                                {
                                                                    If (LEqual (T_0, 0x27))
                                                                    {
                                                                        Store (^^SIOR.OFT3 (), ASB1)
                                                                        If (LEqual (ASB1, 0xFF))
                                                                        {
                                                                            Store (Zero, ASB0)
                                                                        }
                                                                    }
                                                                    Else
                                                                    {
                                                                        If (LEqual (T_0, 0x31))
                                                                        {
                                                                            Store (^^SIOR.HWF5 (), ASB1)
                                                                            If (LEqual (ASB1, 0xFF))
                                                                            {
                                                                                Store (Zero, ASB0)
                                                                            }
                                                                        }
                                                                        Else
                                                                        {
                                                                            If (LEqual (T_0, 0x32))
                                                                            {
                                                                                Store (^^SIOR.HWFA (), ASB1)
                                                                                If (LEqual (ASB1, 0xFF))
                                                                                {
                                                                                    Store (Zero, ASB0)
                                                                                }
                                                                            }
                                                                            Else
                                                                            {
                                                                                If (LEqual (T_0, 0x33))
                                                                                {
                                                                                    Store (^^SIOR.HWFB (), ASB1)
                                                                                    If (LEqual (ASB1, 0xFF))
                                                                                    {
                                                                                        Store (Zero, ASB0)
                                                                                    }
                                                                                }
                                                                                Else
                                                                                {
                                                                                    If (LEqual (T_0, 0x34))
                                                                                    {
                                                                                        Store (^^SIOR.HWFC (), ASB1)
                                                                                        If (LEqual (ASB1, 0xFF))
                                                                                        {
                                                                                            Store (Zero, ASB0)
                                                                                        }
                                                                                    }
                                                                                    Else
                                                                                    {
                                                                                        If (LEqual (T_0, 0x35))
                                                                                        {
                                                                                            Store (^^SIOR.HWF6 (), ASB1)
                                                                                            If (LEqual (ASB1, 0xFF))
                                                                                            {
                                                                                                Store (Zero, ASB0)
                                                                                            }
                                                                                        }
                                                                                        Else
                                                                                        {
                                                                                            If (LEqual (T_0, 0x36))
                                                                                            {
                                                                                                Store (^^SIOR.HWF9 (), ASB1)
                                                                                                If (LEqual (ASB1, 0xFF))
                                                                                                {
                                                                                                    Store (Zero, ASB0)
                                                                                                }
                                                                                            }
                                                                                            Else
                                                                                            {
                                                                                                If (LEqual (T_0, 0x37))
                                                                                                {
                                                                                                    Store (^^SIOR.HWF8 (), ASB1)
                                                                                                    If (LEqual (ASB1, 0xFF))
                                                                                                    {
                                                                                                        Store (Zero, ASB0)
                                                                                                    }
                                                                                                }
                                                                                                Else
                                                                                                {
                                                                                                    If (LEqual (T_0, 0x38))
                                                                                                    {
                                                                                                        Store (^^SIOR.HWF7 (), ASB1)
                                                                                                        If (LEqual (ASB1, 0xFF))
                                                                                                        {
                                                                                                            Store (Zero, ASB0)
                                                                                                        }
                                                                                                    }
                                                                                                }
                                                                                            }
                                                                                        }
                                                                                    }
                                                                                }
                                                                            }
                                                                        }
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
 
        Method (SIT6, 3, NotSerialized)
        {
        }
    }

but how to implement it to SMCD devices

Link to comment
Share on other sites

seems like you have already good acpi implementation...

 

i hope you are using patched dsdt already... if yes, you can add some code...

 

but really, thats only a visual thing... just a useless thing you want to have^^

 

like i said, i had this code in my dsdt long ago, but i have removed it...

 

on normally usage, i don't look into hwmonitor, i didn't have it even installed, lol^^

 

if you want to tune something in fakesmc,

check which mac is the nearest mac to your pc... which one is almost same... download from this mac ioreg files...

check which smh-device the real mac uses and change your smc-device to that... or add some keys inside your fakesmc... you can check your log, which errors you get for not existing keys...

 

but the fan monitor... really... for what?^^

 

 

i gave you an example above, its easy to implement, you need just some basic knowledge of acpi spec/language...

 

Cheers :-)

Link to comment
Share on other sites

seems like you have already good acpi implementation...

 

i hope you are using patched dsdt already... if yes, you can add some code...

 

but really, thats only a visual thing... just a useless thing you want to have^^

 

like i said, i had this code in my dsdt long ago, but i have removed it...

 

on normally usage, i don't look into hwmonitor, i didn't have it even installed, lol^^

 

if you want to tune something in fakesmc,

check which mac is the nearest mac to your pc... which one is almost same... download from this mac ioreg files...

check which smh-device the real mac uses and change your smc-device to that... or add some keys inside your fakesmc... you can check your log, which errors you get for not existing keys...

 

but the fan monitor... really... for what?^^

 

 

i gave you an example above, its easy to implement, you need just some basic knowledge of acpi spec/language...

 

Cheers :-)

 

heres is my fan related code From my dsdt

 

Scope (_SB.PCI0.LPCB.SIOR)
    {
        Name (SNCT, Zero)
        Name (E1BK, Zero)
        Method (HWV0, 0, NotSerialized)
        {
            Return (Multiply (VCOR, 0x08))
        }
 
        Method (HWV1, 0, NotSerialized)
        {
            Return (Multiply (V12V, 0x08))
        }
 
        Method (HWV3, 0, NotSerialized)
        {
            Return (Multiply (V33V, 0x08))
        }
 
        Method (HWV4, 0, NotSerialized)
        {
            Return (Multiply (V50V, 0x08))
        }
 
        Method (HWT0, 0, NotSerialized)
        {
            ENFG (0x0C)
            Store (CR20, Local0)
            EXFG ()
            If (LEqual (Local0, 0xB3))
            {
                Store (Zero, BSEL)
                Store (Zero, SR7D)
                Store (SR7E, Local1)
            }
            Else
            {
                Store (MBTE, Local1)
            }
 
            If (And (Local1, 0x80))
            {
                Or (Local1, 0xFFFFFF00, Local1)
            }
 
            Multiply (Local1, 0x0A, Local1)
            Return (Local1)
        }
 
        Method (HWT1, 0, NotSerialized)
        {
            Store (One, BSEL)
            Store (TSR1, Local1)
            If (And (Local1, 0x80))
            {
                Or (Local1, 0xFFFFFF00, Local1)
            }
 
            WBYT (0x80, 0x1D, Local1)
            Multiply (Local1, 0x0A, Local1)
            Store (TSR2, Local2)
            Multiply (Local2, 0x05, Local2)
            Add (Local1, Local2, Local1)
            Return (Local1)
        }
 
        Method (HWT2, 0, NotSerialized)
        {
            Store (0x02, BSEL)
            Store (TSR1, Local1)
            If (And (Local1, 0x80))
            {
                Or (Local1, 0xFFFFFF00, Local1)
            }
 
            Multiply (Local1, 0x0A, Local1)
            Store (TSR2, Local2)
            Multiply (Local2, 0x05, Local2)
            Add (Local1, Local2, Local1)
            Return (Local1)
        }
 
        OperationRegion (DBGE, SystemIO, 0x80, 0x04)
        Field (DBGE, WordAcc, NoLock, Preserve)
        {
            DBGG,   22
        }
 
        Method (HWF0, 0, NotSerialized)
        {
            Store (FAN1, Local0)
            Store (Zero, BSEL)
            And (FD21, 0x20, Local1)
            ShiftRight (Local1, 0x05, Local1)
            Multiply (Local1, 0x04, Local1)
            And (FDR1, 0x30, Local2)
            ShiftRight (Local2, 0x04, Local2)
            Add (Local1, Local2, Local1)
            If (LOr (LGreater (Local1, 0x05), LLess (Local1, 0x02)))
            {
                If (LGreater (Local0, 0xF0))
                {
                    Store (0x02, Local1)
                }
                Else
                {
                    If (LLess (Local0, 0x1E))
                    {
                        Store (0x05, Local1)
                    }
                    Else
                    {
                        Store (0x03, Local1)
                    }
                }
 
                Divide (Local1, 0x04, Local2, Local3)
                ShiftLeft (Local3, 0x05, Local3)
                Store (FD21, Local4)
                And (Local4, 0xDF, Local4)
                Or (Local3, Local4, FD21)
                Store (FDR1, Local4)
                And (Local4, 0xCF, Local4)
                ShiftLeft (Local2, 0x04, Local2)
                Or (Local4, One, Local4)
                Or (Local4, Local2, FDR1)
                Sleep (0x32)
                Store (FAN1, Local0)
            }
 
            While (LOr (LAnd (LGreater (Local0, 0xF0), LLess (Local1, 0x05)), LAnd (
                LLess (Local0, 0x1E), LGreater (Local1, 0x02))))
            {
                If (LAnd (LGreater (Local0, 0xF0), LLess (Local1, 0x05)))
                {
                    Add (Local1, One, Local1)
                    Divide (Local1, 0x04, Local2, Local3)
                    Store (Zero, BSEL)
                    ShiftLeft (Local3, 0x05, Local3)
                    Store (FD21, Local4)
                    And (Local4, 0xDF, Local4)
                    Or (Local3, Local4, FD21)
                    Store (FDR1, Local4)
                    And (Local4, 0xCF, Local4)
                    ShiftLeft (Local2, 0x04, Local2)
                    Or (Local4, One, Local4)
                    Or (Local4, Local2, FDR1)
                    Sleep (0x32)
                    Store (FAN1, Local0)
                    Sleep (0x32)
                    Store (FAN1, Local0)
                    Sleep (0x32)
                    Store (FAN1, Local0)
                }
                Else
                {
                    Subtract (Local1, One, Local1)
                    Divide (Local1, 0x04, Local2, Local3)
                    Store (Zero, BSEL)
                    ShiftLeft (Local3, 0x05, Local3)
                    Store (FD21, Local4)
                    And (Local4, 0xDF, Local4)
                    Or (Local3, Local4, FD21)
                    Store (FDR1, Local4)
                    And (Local4, 0xCF, Local4)
                    ShiftLeft (Local2, 0x04, Local2)
                    Or (Local4, One, Local4)
                    Or (Local4, Local2, FDR1)
                    Sleep (0x32)
                    Store (FAN1, Local0)
                    Sleep (0x32)
                    Store (FAN1, Local0)
                    Sleep (0x32)
                    Store (FAN1, Local0)
                }
            }
 
            If (LAnd (LEqual (Local0, 0xFF), LEqual (Local1, 0x05)))
            {
                Return (Zero)
            }
 
            If (LAnd (LEqual (Local0, Zero), LEqual (Local1, 0x02)))
            {
                Return (0xFFFF)
            }
 
            Store (One, Local2)
            While (Local1)
            {
                Multiply (Local2, 0x02, Local2)
                Decrement (Local1)
            }
 
            Multiply (Local0, Local2, Local0)
            Divide (0x00149970, Local0, Local1, Local0)
            Return (Local0)
        }
 
        Method (HWF1, 0, NotSerialized)
        {
            Store (Zero, BSEL)
            Store (FAN2, Local0)
            And (FD21, 0x40, Local1)
            ShiftRight (Local1, 0x06, Local1)
            Multiply (Local1, 0x04, Local1)
            And (FDR1, 0xC0, Local2)
            ShiftRight (Local2, 0x06, Local2)
            Add (Local1, Local2, Local1)
            If (LOr (LGreater (Local1, 0x05), LLess (Local1, 0x02)))
            {
                If (LGreater (Local0, 0xF0))
                {
                    Store (0x02, Local1)
                }
                Else
                {
                    If (LLess (Local0, 0x1E))
                    {
                        Store (0x05, Local1)
                    }
                    Else
                    {
                        Store (0x03, Local1)
                    }
                }
 
                Divide (Local1, 0x04, Local2, Local3)
                ShiftLeft (Local3, 0x06, Local3)
                Store (FD21, Local4)
                And (Local4, 0xBF, Local4)
                Or (Local3, Local4, FD21)
                Store (FDR1, Local4)
                And (Local4, 0x3F, Local4)
                ShiftLeft (Local2, 0x06, Local2)
                Or (Local4, One, Local4)
                Or (Local4, Local2, FDR1)
                Sleep (0x32)
                Store (Zero, BSEL)
                Store (FAN2, Local0)
            }
 
            While (LOr (LAnd (LGreater (Local0, 0xF0), LLess (Local1, 0x05)), LAnd (
                LLess (Local0, 0x1E), LGreater (Local1, 0x02))))
            {
                If (LAnd (LLess (Local0, 0x1E), LGreater (Local1, 0x02)))
                {
                    Subtract (Local1, One, Local1)
                    Divide (Local1, 0x04, Local2, Local3)
                    Store (Zero, BSEL)
                    ShiftLeft (Local3, 0x06, Local3)
                    Store (FD21, Local4)
                    And (Local4, 0xBF, Local4)
                    Or (Local3, Local4, FD21)
                    Store (FDR1, Local4)
                    And (Local4, 0x3F, Local4)
                    ShiftLeft (Local2, 0x06, Local2)
                    Or (Local4, One, Local4)
                    Or (Local4, Local2, FDR1)
                    Sleep (0x32)
                    Store (Zero, BSEL)
                    Store (FAN2, Local0)
                    Sleep (0x32)
                    Store (FAN2, Local0)
                    Sleep (0x32)
                    Store (FAN2, Local0)
                }
                Else
                {
                    Add (Local1, One, Local1)
                    Divide (Local1, 0x04, Local2, Local3)
                    Store (Zero, BSEL)
                    ShiftLeft (Local3, 0x06, Local3)
                    Store (FD21, Local4)
                    And (Local4, 0xBF, Local4)
                    Or (Local3, Local4, FD21)
                    Store (FDR1, Local4)
                    And (Local4, 0x3F, Local4)
                    ShiftLeft (Local2, 0x06, Local2)
                    Or (Local4, One, Local4)
                    Or (Local4, Local2, FDR1)
                    Sleep (0x32)
                    Store (Zero, BSEL)
                    Store (FAN2, Local0)
                    Sleep (0x32)
                    Store (FAN2, Local0)
                    Sleep (0x32)
                    Store (FAN2, Local0)
                }
            }
 
            If (LAnd (LEqual (Local0, 0xFF), LEqual (Local1, 0x05)))
            {
                Return (Zero)
            }
 
            If (LAnd (LEqual (Local0, Zero), LEqual (Local1, 0x02)))
            {
                Return (0xFFFF)
            }
 
            Store (One, Local2)
            While (Local1)
            {
                Multiply (Local2, 0x02, Local2)
                Decrement (Local1)
            }
 
            Multiply (Local0, Local2, Local0)
            Divide (0x00149970, Local0, Local1, Local0)
            Return (Local0)
        }
 
        Method (HWF2, 0, NotSerialized)
        {
            Store (FAN3, Local0)
            Store (Zero, BSEL)
            And (FD21, 0x80, Local1)
            ShiftRight (Local1, 0x07, Local1)
            Multiply (Local1, 0x04, Local1)
            Divide (FD13, 0x40, Local2, Local3)
            Add (Local1, Local3, Local1)
            If (LOr (LGreater (Local1, 0x05), LLess (Local1, 0x02)))
            {
                If (LGreater (Local0, 0xF0))
                {
                    Store (0x02, Local1)
                }
                Else
                {
                    If (LLess (Local0, 0x1E))
                    {
                        Store (0x05, Local1)
                    }
                    Else
                    {
                        Store (0x03, Local1)
                    }
                }
 
                Divide (Local1, 0x04, Local2, Local3)
                ShiftLeft (Local3, 0x07, Local3)
                Store (FD21, Local4)
                And (Local4, 0x7F, Local4)
                Or (Local3, Local4, FD21)
                Store (FD13, Local3)
                And (Local3, 0x3F, Local3)
                Multiply (Local2, 0x40, Local2)
                Add (Local3, Local2, Local2)
                Store (Local2, FD13)
                Sleep (0x32)
                Store (FAN3, Local0)
            }
 
            While (LOr (LAnd (LGreater (Local0, 0xF0), LLess (Local1, 0x05)), LAnd (
                LLess (Local0, 0x1E), LGreater (Local1, 0x02))))
            {
                If (LAnd (LGreater (Local0, 0xF0), LLess (Local1, 0x05)))
                {
                    If (LEqual (Local0, 0xFF))
                    {
                        Store (0x05, Local1)
                    }
                    Else
                    {
                        Add (Local1, One, Local1)
                    }
 
                    Divide (Local1, 0x04, Local2, Local3)
                    Store (Zero, BSEL)
                    ShiftLeft (Local3, 0x07, Local3)
                    Store (FD21, Local4)
                    And (Local4, 0x7F, Local4)
                    Or (Local3, Local4, FD21)
                    Store (FD13, Local3)
                    And (Local3, 0x3F, Local3)
                    Multiply (Local2, 0x40, Local2)
                    Add (Local3, Local2, Local2)
                    Store (Local2, FD13)
                    If (LNotEqual (Local0, 0xFF))
                    {
                        Sleep (0x32)
                    }
 
                    Store (FAN3, Local0)
                    Sleep (0x32)
                    Store (FAN3, Local0)
                    Sleep (0x32)
                    Store (FAN3, Local0)
                }
                Else
                {
                    Subtract (Local1, One, Local1)
                    Divide (Local1, 0x04, Local2, Local3)
                    Store (Zero, BSEL)
                    ShiftLeft (Local3, 0x07, Local3)
                    Store (FD21, Local4)
                    And (Local4, 0x7F, Local4)
                    Or (Local3, Local4, FD21)
                    Store (FD13, Local3)
                    And (Local3, 0x3F, Local3)
                    Multiply (Local2, 0x40, Local2)
                    Add (Local3, Local2, Local2)
                    Store (Local2, FD13)
                    Sleep (0x32)
                    Store (FAN3, Local0)
                    Sleep (0x32)
                    Store (FAN3, Local0)
                    Sleep (0x32)
                    Store (FAN3, Local0)
                }
            }
 
            If (LAnd (LEqual (Local0, 0xFF), LEqual (Local1, 0x05)))
            {
                Return (Zero)
            }
 
            If (LAnd (LEqual (Local0, Zero), LEqual (Local1, 0x02)))
            {
                Return (0xFFFF)
            }
 
            Store (One, Local2)
            While (Local1)
            {
                Multiply (Local2, 0x02, Local2)
                Decrement (Local1)
            }
 
            Multiply (Local0, Local2, Local0)
            Divide (0x00149970, Local0, Local1, Local0)
            Return (Local0)
        }
 
        Method (HWF4, 0, NotSerialized)
        {
            Store (0x05, BSEL)
            Store (FAN4, Local0)
            Store (Zero, BSEL)
            And (FND4, 0x80, Local1)
            ShiftRight (Local1, 0x07, Local1)
            Multiply (Local1, 0x04, Local1)
            And (FND4, 0x0C, Local2)
            ShiftRight (Local2, 0x02, Local2)
            Add (Local1, Local2, Local1)
            If (LOr (LGreater (Local1, 0x05), LLess (Local1, 0x02)))
            {
                If (LGreater (Local0, 0xF0))
                {
                    Store (0x02, Local1)
                }
                Else
                {
                    If (LLess (Local0, 0x1E))
                    {
                        Store (0x05, Local1)
                    }
                    Else
                    {
                        Store (0x03, Local1)
                    }
                }
 
                Divide (Local1, 0x04, Local2, Local3)
                ShiftLeft (Local3, 0x07, Local3)
                ShiftLeft (Local2, 0x02, Local2)
                Store (FND4, Local4)
                And (Local4, 0x73, Local4)
                Or (Local3, Local2, Local3)
                Or (Local3, Local4, FND4)
                Sleep (0x32)
                Store (0x05, BSEL)
                Store (FAN4, Local0)
            }
 
            While (LOr (LAnd (LGreater (Local0, 0xF0), LLess (Local1, 0x05)), LAnd (
                LLess (Local0, 0x1E), LGreater (Local1, 0x02))))
            {
                If (LAnd (LGreater (Local0, 0xF0), LLess (Local1, 0x05)))
                {
                    Add (Local1, One, Local1)
                    Divide (Local1, 0x04, Local2, Local3)
                    Store (Zero, BSEL)
                    ShiftLeft (Local3, 0x07, Local3)
                    ShiftLeft (Local2, 0x02, Local2)
                    Store (FND4, Local4)
                    And (Local4, 0x73, Local4)
                    Or (Local3, Local2, Local3)
                    Or (Local3, Local4, FND4)
                    If (LNotEqual (Local0, 0xFF))
                    {
                        Sleep (0x32)
                    }
 
                    Store (0x05, BSEL)
                    Store (FAN4, Local0)
                    Sleep (0x32)
                    Store (FAN4, Local0)
                    Sleep (0x32)
                    Store (FAN4, Local0)
                    Store (Zero, BSEL)
                }
                Else
                {
                    Subtract (Local1, One, Local1)
                    Divide (Local1, 0x04, Local2, Local3)
                    Store (Zero, BSEL)
                    ShiftLeft (Local3, 0x07, Local3)
                    ShiftLeft (Local2, 0x02, Local2)
                    Store (FND4, Local4)
                    And (Local4, 0x73, Local4)
                    Or (Local3, Local2, Local3)
                    Or (Local3, Local4, FND4)
                    Sleep (0x32)
                    Store (0x05, BSEL)
                    Store (FAN4, Local0)
                    Sleep (0x32)
                    Store (FAN4, Local0)
                    Sleep (0x32)
                    Store (FAN4, Local0)
                    Store (Zero, BSEL)
                }
            }
 
            If (LAnd (LEqual (Local0, 0xFF), LEqual (Local1, 0x05)))
            {
                Return (Zero)
            }
 
            If (LAnd (LEqual (Local0, Zero), LEqual (Local1, 0x02)))
            {
                Return (0xFFFF)
            }
 
            Store (One, Local2)
            While (Local1)
            {
                Multiply (Local2, 0x02, Local2)
                Decrement (Local1)
            }
 
            Multiply (Local0, Local2, Local0)
            Divide (0x00149970, Local0, Local1, Local0)
            Return (Local0)
        }
 
        Name (FNDT, Package (0x08)
        {
            One, 
            0x02, 
            0x04, 
            0x08, 
            0x10, 
            0x20, 
            0x40, 
            0x80
        })
        Method (HWF3, 0, NotSerialized)
        {
            Store (Zero, BSEL)
            Store (CFN3, Local0)
            And (FD15, 0x80, Local1)
            ShiftRight (Local1, 0x05, Local1)
            And (FND4, 0x03, Local2)
            Or (Local1, Local2, Local1)
            If (LOr (LGreater (Local1, 0x05), LLess (Local1, 0x02)))
            {
                If (LGreater (Local0, 0xF0))
                {
                    Store (0x02, Local1)
                }
                Else
                {
                    If (LLess (Local0, 0x1E))
                    {
                        Store (0x05, Local1)
                    }
                    Else
                    {
                        Store (0x03, Local1)
                    }
                }
 
                ShiftLeft (Local1, 0x05, Local2)
                And (Local2, 0x80, Local2)
                And (FD15, 0x7F, Local3)
                Or (Local2, Local3, Local3)
                Store (Local3, FD15)
                And (Local1, 0x03, Local2)
                And (FND4, 0xFC, Local3)
                Or (Local2, Local3, Local3)
                Store (Local3, FND4)
                Sleep (0x32)
                Store (CFN3, Local0)
            }
 
            While (LOr (LAnd (LGreater (Local0, 0xF0), LLess (Local1, 0x05)), LAnd (
                LLess (Local0, 0x1E), LGreater (Local1, 0x02))))
            {
                If (LAnd (LGreater (Local0, 0xF0), LLess (Local1, 0x05)))
                {
                    Increment (Local1)
                }
                Else
                {
                    Decrement (Local1)
                }
 
                ShiftLeft (Local1, 0x05, Local2)
                And (Local2, 0x80, Local2)
                And (FD15, 0x7F, Local3)
                Or (Local2, Local3, Local3)
                Store (Local3, FD15)
                And (Local1, 0x03, Local2)
                And (FND4, 0xFC, Local3)
                Or (Local2, Local3, Local3)
                Store (Local3, FND4)
                Sleep (0x32)
                Store (CFN3, Local0)
                Sleep (0x32)
                Store (CFN3, Local0)
                Sleep (0x32)
                Store (CFN3, Local0)
            }
 
            If (LAnd (LEqual (Local0, 0xFF), LEqual (Local1, 0x05)))
            {
                Return (Zero)
            }
 
            If (LAnd (LEqual (Local0, Zero), LEqual (Local1, 0x02)))
            {
                Return (0xFFFF)
            }
 
            Store (DerefOf (Index (FNDT, Local1)), Local2)
            Multiply (Local0, Local2, Local0)
            Divide (0x00149970, Local0, Local1, Local0)
            Return (Local0)
        }
 
        OperationRegion (HWRE, SystemIO, IOHW, 0x0A)
        Field (HWRE, ByteAcc, NoLock, Preserve)
        {
                    Offset (0x05), 
            HIDX,   8, 
            HDAT,   8
        }
 
        IndexField (HIDX, HDAT, ByteAcc, NoLock, Preserve)
        {
                    Offset (0x04), 
            CHNM,   1, 
            CFNM,   1, 
            CHNS,   2, 
            CFNS,   2, 
                    Offset (0x05), 
            SYST,   8, 
            TRGT,   8, 
                    Offset (0x08), 
            SSDN,   8, 
            CSDN,   8, 
            SSUP,   8, 
            CSUP,   8, 
                    Offset (0x20), 
            VCOR,   8, 
            V12V,   8, 
                    Offset (0x23), 
            V33V,   8, 
            V50V,   8, 
                    Offset (0x27), 
            MBTE,   8, 
            FAN1,   8, 
            FAN2,   8, 
            FAN3,   8, 
                    Offset (0x3F), 
            CFN3,   8, 
                    Offset (0x47), 
            FDR1,   8, 
                    Offset (0x4B), 
            FD13,   8, 
            FD15,   8, 
                    Offset (0x4E), 
            BSEL,   4, 
                    Offset (0x4F), 
                    Offset (0x50), 
            TSR1,   8, 
                ,   7, 
            TSR2,   1, 
                    Offset (0x53), 
            FAN4,   8, 
                    Offset (0x59), 
            FND4,   8, 
                    Offset (0x5D), 
            FD21,   8, 
                    Offset (0x7D), 
            SR7D,   8, 
            SR7E,   8
        }
    }
Link to comment
Share on other sites

 Share

×
×
  • Create New...