[GH-ISSUE #1237] Config Request for HP Pavilion 15 -cx0xxx #1061

Closed
opened 2026-02-26 00:34:17 +03:00 by kerem · 5 comments
Owner

Originally created by @confuciussayuhm on GitHub (Mar 27, 2022).
Original GitHub issue: https://github.com/hirschmann/nbfc/issues/1237

Hello there. I have been trying for a while now to get nbfc working on my laptop. I originally followed the wiki guide but found it quite daunting and ended up applying one-by-one all the different HP configs noting which profiles made changes to my fan speed. I found one in particular (HP Compaq 15-s103tx) which somehow manages to set my fan to 100%. I then copied this profile and started to edit it as it wasn't working 100% for me. After playing around with this particular config I found that it does something to the way the EC handles battery charging and puts my laptop into some state where it does not want to charge. I have to either take the battery out or wait for the laptop to die entirely before Windows boots correctly. I, therefore, infer that what I thought were the read/write fan registers (for the HP Compaq 15-s103tx) are something else entirely on my laptop. I found that the reason my fan goes to 100% using the HP Compaq 15-s103tx is that the critical temperature was met in the profile. Any other adjustments to try and "force" the fan to a specific speed fail.

I request assistance going through the following EmbeddedController "code" that I have taken out of the extracted DSDT to identify which are the correct registers I should be testing.

        Device (EC0)
        {
            Name (_HID, EisaId ("PNP0C09") /* Embedded Controller Device */)  // _HID: Hardware ID
            Name (_GPE, 0x14)  // _GPE: General Purpose Events
            Name (OKEC, One)
            Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
            {
                IO (Decode16,
                    0x0062,             // Range Minimum
                    0x0062,             // Range Maximum
                    0x01,               // Alignment
                    0x01,               // Length
                    )
                IO (Decode16,
                    0x0066,             // Range Minimum
                    0x0066,             // Range Maximum
                    0x01,               // Alignment
                    0x01,               // Length
                    )
            })
            Method (_REG, 2, NotSerialized)  // _REG: Region Availability
            {
                If ((Arg0 == 0x03))
                {
                    OKEC = Arg1
                    OSTP ()
                    ECFG (One)
                    MSFG = (S0ID & One)
                    PBOV = (PB1E & One)
                }
            }

            Method (CMDW, 2, NotSerialized)
            {
                Name (TEMP, One)
                While (TEMP)
                {
                    ECTB = Zero
                    TEMP = ECTB /* \_SB_.PCI0.LPCB.EC0_.ECTB */
                }

                ECTB = One
                ECMD = Arg0
                EDT1 = Arg1
                ECTE = One
                TEMP = One
                While (TEMP)
                {
                    TEMP = ECTE /* \_SB_.PCI0.LPCB.EC0_.ECTE */
                }

                ECTB = Zero
            }

            OperationRegion (ECMM, SystemMemory, 0xFC7E0800, 0x1000)
            Field (ECMM, AnyAcc, Lock, Preserve)
            {
                REC1,   8, 
                REC2,   8, 
                WEC1,   8, 
                WEC2,   8, 
                WMIM,   8, 
                Offset (0x06), 
                STMS,   2, 
                MBMS,   2, 
                ACLS,   1, 
                MBSS,   1, 
                CSHE,   1, 
                ACSP,   1, 
                PSAC,   1, 
                PSBC,   1, 
                PSED,   1, 
                Offset (0x08), 
                PSPD,   8, 
                BCPD,   8, 
                BSTH,   8, 
                PRDT,   8, 
                UCPT,   8, 
                HHKP,   8, 
                SADP,   8, 
                FANE,   1, 
                CPUO,   1, 
                M4GO,   1, 
                FNSW,   1, 
                SBTC,   1, 
                AMDK,   1, 
                    ,   1, 
                EHP1,   1, 
                SAD2,   8, 
                FRPM,   8, 
                FNMX,   8, 
                FNMN,   8, 
                FWPM,   8, 
                RSTV,   8, 
                CPTV,   8, 
                GPTV,   8, 
                PHTV,   8, 
                FNTV,   8, 
                BTTV,   8, 
                HDTV,   8, 
                    ,   1, 
                    ,   1, 
                W2BS,   1, 
                SK6U,   1, 
                BARD,   1, 
                    ,   1, 
                FNHK,   1, 
                Offset (0x1D), 
                FBST,   1, 
                NGPS,   1, 
                BCDG,   1, 
                DGPS,   1, 
                DGRS,   1, 
                Offset (0x1E), 
                DGPE,   1, 
                DGHR,   1, 
                FBPC,   1, 
                EC6I,   1, 
                EC6O,   1, 
                GC6E,   1, 
                RG12,   1, 
                Offset (0x21), 
                BTNO,   8, 
                Offset (0x23), 
                NVDX,   8, 
                Offset (0x25), 
                CFBE,   1, 
                EPCF,   1, 
                Offset (0x26), 
                DPTC,   8, 
                Offset (0x2A), 
                PBSM,   2, 
                SBSM,   2, 
                    ,   2, 
                BMNC,   1, 
                BCLC,   1, 
                Offset (0x2C), 
                IOAF,   8, 
                BCTL,   128, 
                Offset (0x45), 
                ATTE,   16, 
                RTTE,   16, 
                BC00,   8, 
                BC01,   8, 
                BC02,   8, 
                BC03,   8, 
                BC04,   8, 
                BC05,   8, 
                BC06,   8, 
                BC07,   8, 
                MXER,   8, 
                ATTF,   16, 
                SBVR,   16, 
                NBM1,   1, 
                BBM1,   1, 
                PBM1,   1, 
                Offset (0x58), 
                IOST,   16, 
                BMNE,   16, 
                WACL,   1, 
                Offset (0x5D), 
                ERIB,   16, 
                Offset (0x61), 
                SMST,   8, 
                SMAD,   8, 
                SMCM,   8, 
                SMD0,   256, 
                BCNT,   8, 
                SMAA,   24, 
                SMBN,   8, 
                Offset (0x90), 
                BMNN,   72, 
                BN00,   8, 
                BN01,   8, 
                BN02,   8, 
                BN03,   8, 
                BN04,   8, 
                BN05,   8, 
                BN06,   8, 
                Offset (0xA1), 
                    ,   1, 
                VIDO,   1, 
                TOUP,   1, 
                Offset (0xA2), 
                ODTS,   8, 
                OSTY,   4, 
                    ,   1, 
                PBOV,   1, 
                ECRD,   1, 
                ADPT,   1, 
                PWAK,   1, 
                MWAK,   1, 
                LWAK,   1, 
                RWAK,   1, 
                WWAK,   1, 
                UWAK,   1, 
                KWAK,   1, 
                TWAK,   1, 
                CCAC,   1, 
                AOAC,   1, 
                BLAC,   1, 
                PSRC,   1, 
                BOAC,   1, 
                LCAC,   1, 
                AAAC,   1, 
                ACAC,   1, 
                S3ST,   1, 
                S3RM,   1, 
                S4ST,   1, 
                S4RM,   1, 
                S5ST,   1, 
                S5RM,   1, 
                CSST,   1, 
                CSRM,   1, 
                OSTT,   8, 
                OSST,   8, 
                THLT,   8, 
                TCNL,   8, 
                MODE,   1, 
                    ,   2, 
                INIT,   1, 
                FAN1,   1, 
                FAN2,   1, 
                FANT,   1, 
                SKNM,   1, 
                SDTM,   8, 
                FSSN,   4, 
                FANU,   4, 
                PCVL,   6, 
                SWTO,   1, 
                TTHR,   1, 
                TTHM,   1, 
                THTL,   1, 
                TFCT,   1, 
                NPST,   5, 
                CTMP,   8, 
                CTML,   8, 
                EST3,   8, 
                SKTB,   8, 
                SKTC,   8, 
                DPOT,   8, 
                EST1,   8, 
                EST2,   8, 
                    ,   1, 
                LIDF,   1, 
                PMEE,   1, 
                PWBE,   1, 
                RNGE,   1, 
                BTWE,   1, 
                Offset (0xB9), 
                BRTS,   8, 
                S35M,   1, 
                S35S,   1, 
                    ,   1, 
                MSFG,   1, 
                FFEN,   1, 
                FFST,   1, 
                Offset (0xBB), 
                WLAT,   1, 
                BTAT,   1, 
                WLEX,   1, 
                BTEX,   1, 
                KLSW,   1, 
                WLOK,   1, 
                AT3G,   1, 
                EX3G,   1, 
                PJID,   8, 
                CPUJ,   3, 
                CPNM,   3, 
                GATY,   2, 
                BTP0,   1, 
                BTP1,   1, 
                    ,   2, 
                BCC0,   1, 
                BCC1,   1, 
                Offset (0xBF), 
                Offset (0xC0), 
                BTY0,   1, 
                BAM0,   1, 
                BAL0,   1, 
                    ,   1, 
                BMF0,   3, 
                Offset (0xC1), 
                BST0,   8, 
                BRC0,   16, 
                BSN0,   16, 
                BPV0,   16, 
                BDV0,   16, 
                BDC0,   16, 
                BFC0,   16, 
                GAU0,   8, 
                BAT0,   8, 
                BPC0,   16, 
                BAC0,   16, 
                BCG0,   16, 
                BFCB,   16, 
                BTPB,   16, 
                BOL0,   1, 
                BFS0,   1, 
                Offset (0xDB), 
                ORRF,   1, 
                Offset (0xDC), 
                    ,   2, 
                SBIS,   1, 
                Offset (0xDE), 
                BSSB,   16, 
                Offset (0xE3), 
                BCV1,   16, 
                BCV2,   16, 
                BCV3,   16, 
                BCV4,   16, 
                MUAC,   16, 
                CYC0,   8, 
                Offset (0xF4), 
                BMD0,   16, 
                BACV,   16, 
                BDN0,   8, 
                Offset (0xFB), 
                OTAW,   8, 
                Offset (0xFF), 
                CYC1,   8, 
                Offset (0x2C3), 
                    ,   3, 
                GBTC,   1, 
                Offset (0x3B0), 
                Offset (0x3BC), 
                CPUT,   8, 
                Offset (0x3BE), 
                CPUU,   8, 
                Offset (0x3C0)
            }

            OperationRegion (ERAM, EmbeddedControl, Zero, 0xFF)
            Field (ERAM, ByteAcc, Lock, Preserve)
            {
                Offset (0x5F), 
                ERBD,   8, 
                SMPR,   8, 
                Offset (0x62)
            }

            OperationRegion (CCLK, SystemIO, 0x1810, 0x04)
            Field (CCLK, DWordAcc, NoLock, Preserve)
            {
                    ,   1, 
                DUTY,   3, 
                THEN,   1, 
                Offset (0x01), 
                FTT,    1, 
                    ,   8, 
                TSTS,   1
            }

            Method (FANG, 1, NotSerialized)
            {
                Local0 = EIDR (Arg0)
                Return (Local0)
            }

            Method (FANW, 2, NotSerialized)
            {
                EIDW (Arg0, Arg1)
                Return (Arg1)
            }

            Method (TUVR, 1, NotSerialized)
            {
                Return (0x05)
            }

            Method (THRO, 1, NotSerialized)
            {
                ITHR (Arg0)
            }

            Method (CLCK, 1, NotSerialized)
            {
                If ((Arg0 == Zero))
                {
                    THEN = Zero
                    FTT = Zero
                }
                Else
                {
                    DUTY = Arg0
                    THEN = One
                }

                Return (THEN) /* \_SB_.PCI0.LPCB.EC0_.THEN */
            }

            Method (PCLK, 0, NotSerialized)
            {
                IPCL ()
            }

            Method (ITHR, 1, NotSerialized)
            {
                If ((Arg0 == Zero))
                {
                    Return (0xFF)
                }
                ElseIf ((Arg0 == One))
                {
                    Return (DUTY) /* \_SB_.PCI0.LPCB.EC0_.DUTY */
                }
                ElseIf ((Arg0 == 0x02))
                {
                    Return (TTHR) /* \_SB_.PCI0.LPCB.EC0_.TTHR */
                }
                Else
                {
                    Return (0xFF)
                }
            }

            Method (IPCL, 0, NotSerialized)
            {
                Local0 = PCVL /* \_SB_.PCI0.LPCB.EC0_.PCVL */
                CPPC = Local0
                PNOT ()
            }

            Method (_Q37, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                Debug = "=====QUERY_37====="
                P80H = 0x37
                Notify (ACAD, 0x80) // Status Change
                Sleep (0x03E8)
                Notify (BAT1, 0x80) // Status Change
                ^^^^WMID.WEI1 = 0x03
                ^^^^WMID.WED1 = Zero
                Notify (WMID, 0x80) // Status Change
                PWRS = One
                PNOT ()
            }

            Method (_Q38, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                Debug = "=====QUERY_38====="
                P80H = 0x38
                Notify (ACAD, 0x80) // Status Change
                Sleep (0x03E8)
                Notify (BAT1, 0x80) // Status Change
                PWRS = Zero
                PNOT ()
            }

            Method (_Q40, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                Debug = "=====QUERY_40====="
                P80H = 0x40
                Local0 = Zero
                If ((OSYS >= 0x07DC))
                {
                    Notify (WLBU, 0x80) // Status Change
                }
                Else
                {
                    ^^^^WLBU.UPWL ()
                    Sleep (0xC8)
                    ^^^^WMID.WEI1 = 0x05
                    ^^^^WMID.WED1 = Zero
                    Notify (WMID, 0x80) // Status Change
                }
            }

            Method (_Q48, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                Debug = "=====QUERY_48====="
                P80H = 0x48
                If ((NGPS == Zero))
                {
                    P80H = 0x48
                    Notify (^^^PEG0.PEGP, 0xD1) // Hardware-Specific
                }
                Else
                {
                    P80H = 0x49
                    Local0 = (NVDX + 0xD1)
                    Notify (^^^PEG0.PEGP, Local0)
                }
            }

            Method (_Q49, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                Debug = "=====QUERY_49====="
                P80H = 0x49
                If (ECOK ())
                {
                    CMDW (0x45, 0x45)
                    \_TZ.TZ02.TZTP = One
                    Notify (\_TZ.TZ02, 0x80) // Status Change
                }
                Else
                {
                    \_TZ.TZ02.TZTP = Zero
                }
            }

            Method (_Q4D, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                P80B = 0x4D
                Debug = "=====QUERY_26====="
                If (BMNC)
                {
                    ^^^^WMID.WEI1 = 0x16
                    ^^^^WMID.WED1 = One
                    Notify (WMID, 0x80) // Status Change
                }

                If (BCLC)
                {
                    ^^^^WMID.WEI1 = 0x16
                    ^^^^WMID.WED1 = One
                    Notify (WMID, 0x80) // Status Change
                }
            }

            OperationRegion (PRT0, SystemIO, 0x80, 0x04)
            Field (PRT0, ByteAcc, Lock, Preserve)
            {
                P80H,   8
            }

            Method (_Q10, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
            }

            Method (_Q11, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                Debug = "=====QUERY_11====="
                P80H = 0x11
                If (IGDS)
                {
                    Notify (^^^GFX0.DD1F, 0x87) // Device-Specific
                }
                Else
                {
                }
            }

            Method (_Q12, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                Debug = "=====QUERY_12====="
                P80H = 0x12
                If (IGDS)
                {
                    Notify (^^^GFX0.DD1F, 0x86) // Device-Specific
                }
                Else
                {
                }
            }

            Method (_Q15, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                Debug = "=====QUERY_15====="
                P80H = 0x15
                If (IGDS)
                {
                    Local0 = LIDF /* \_SB_.PCI0.LPCB.EC0_.LIDF */
                    Local0 = ~Local0
                    Local0 &= One
                    Local0 += 0x02
                    If (^^^GFX0.GLID (Local0))
                    {
                        ^^^GFX0.CLID |= 0x80000000 /* External reference */
                    }
                }

                Notify (LID0, 0x80) // Status Change
            }

            Method (_Q1D, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                Debug = "=====QUERY_1D====="
                P80H = 0x1D
                PCLK ()
            }

            Method (_Q1E, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                Debug = "=====QUERY_1E====="
                P80H = 0x1E
                If (CTUR)
                {
                    If ((TFCT == Zero))
                    {
                        CSMI (0xDA, Zero)
                    }
                    Else
                    {
                        CSMI (0xDA, One)
                    }
                }
            }

            Method (_Q24, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                Debug = "=====QUERY_24====="
                P80H = 0x24
                Sleep (0x03E8)
                Notify (BAT1, 0x80) // Status Change
            }

            Method (_Q25, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                Debug = "=====QUERY_25====="
                P80H = 0x25
                Sleep (0x03E8)
                Notify (BAT1, 0x81) // Information Change
                Sleep (0x03E8)
                Notify (BAT1, 0x80) // Status Change
            }

            Method (_Q33, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                Debug = "=====QUERY_33====="
                P80H = 0x33
                ADBG ("EC PB press")
                PWPR ()
            }

            Method (_Q34, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                Debug = "=====QUERY_34====="
                P80H = 0x34
                ADBG ("EC PB release")
                PWRR ()
            }

            Name (CTSL, Package (0x19)
            {
                0x10, 
                0x12, 
                0x13, 
                0x14, 
                0x15, 
                0x16, 
                0x17, 
                0x20, 
                0x21, 
                0x22, 
                0x24, 
                0x25, 
                0x26, 
                0x28, 
                0x90, 
                0x91, 
                0xFE, 
                0x92, 
                0x93, 
                0x94, 
                0x95, 
                0x96, 
                0x97, 
                0x98, 
                0x99
            })
            Mutex (CFMX, 0x00)
            Method (CFUN, 4, Serialized)
            {
                Name (ESRC, 0x05)
                If ((DerefOf (Arg0 [Zero]) == 0x15))
                {
                    CreateWordField (Arg1, Zero, SFUN)
                    If ((SFUN == 0x9001)){}
                    ElseIf ((SFUN == 0x9002))
                    {
                        STDT = Zero
                        BFDT = Zero
                        BFDT = Zero
                        STDT = One
                    }
                    ElseIf ((SFUN == 0x9000))
                    {
                        ESMC (Arg2)
                        If ((ESMS != 0xFF))
                        {
                            Local1 = Buffer (0x80){}
                            Local1 [Zero] = 0x80
                            Local1 [One] = ESMS /* External reference */
                            Local3 = ESMB /* External reference */
                            Local1 [0x02] = DerefOf (Local3 [Zero])
                            Local1 [0x03] = DerefOf (Local3 [One])
                            Local1 [0x04] = DerefOf (Local3 [0x02])
                            Local1 [0x05] = DerefOf (Local3 [0x03])
                            Local1 [0x06] = DerefOf (Local3 [0x04])
                            Local1 [0x07] = DerefOf (Local3 [0x05])
                            Local1 [0x08] = DerefOf (Local3 [0x06])
                            Local1 [0x09] = DerefOf (Local3 [0x07])
                            Local1 [0x0A] = DerefOf (Local3 [0x08])
                            Local1 [0x0B] = DerefOf (Local3 [0x09])
                            Local1 [0x0C] = DerefOf (Local3 [0x0A])
                            Local1 [0x0D] = DerefOf (Local3 [0x0B])
                            Local1 [0x0E] = DerefOf (Local3 [0x0C])
                            Local1 [0x0F] = DerefOf (Local3 [0x0D])
                            Local1 [0x10] = DerefOf (Local3 [0x0E])
                            Local1 [0x11] = DerefOf (Local3 [0x0F])
                            Local1 [0x12] = DerefOf (Local3 [0x10])
                            Local1 [0x13] = DerefOf (Local3 [0x11])
                            Local1 [0x14] = DerefOf (Local3 [0x12])
                            Local1 [0x15] = DerefOf (Local3 [0x13])
                            Local1 [0x16] = DerefOf (Local3 [0x14])
                            Local1 [0x17] = DerefOf (Local3 [0x15])
                            Local1 [0x18] = DerefOf (Local3 [0x16])
                            Local1 [0x19] = DerefOf (Local3 [0x17])
                            Local1 [0x1A] = DerefOf (Local3 [0x18])
                            Local1 [0x1B] = DerefOf (Local3 [0x19])
                            Local1 [0x1C] = DerefOf (Local3 [0x1A])
                            Local1 [0x1D] = DerefOf (Local3 [0x1B])
                            Local1 [0x1E] = DerefOf (Local3 [0x1C])
                            Local1 [0x1F] = DerefOf (Local3 [0x1D])
                            Local1 [0x20] = DerefOf (Local3 [0x1E])
                            Local1 [0x21] = DerefOf (Local3 [0x1F])
                            BFDT = Local1
                            STDT = One
                        }
                        Else
                        {
                            STDT = 0x8000
                        }
                    }
                    Else
                    {
                        SFNO = Arg1
                        BFDT = Arg2
                        CSMI (0xCE, Arg0)
                    }
                }
                ElseIf ((Match (CTSL, MEQ, DerefOf (Arg0 [Zero]), 
                    MTR, Zero, Zero) != Ones))
                {
                    SFNO = Arg1
                    BFDT = Arg2
                    CSMI (0xCE, Arg0)
                }
                Else
                {
                    STDT = 0x8000
                }
            }

            Name (OCSL, Package (0x03)
            {
                0x80, 
                0x81, 
                0x82
            })
            Method (PFUN, 4, Serialized)
            {
                SFNO = Arg1
                BFDT = Arg2
                CSMI (0xCF, Arg0)
            }

            Method (CMFC, 4, Serialized)
            {
                Name (RTVL, Package (0x04)
                {
                    Zero, 
                    Zero, 
                    Zero, 
                    Zero
                })
                Debug = "=== In CMFC method ==="
                If ((ObjectType (Arg0) == One))
                {
                    RTVL [Zero] = 0x8000
                }
                ElseIf ((DerefOf (Arg0 [Zero]) < 0xFE))
                {
                    Local1 = Buffer (0x82){}
                    CreateWordField (Local1, Zero, RTST)
                    CreateField (Local1, 0x10, 0x0400, RTDT)
                    If (((ToInteger (Arg0) <= 0x8F) && (ToInteger (Arg0
                        ) >= 0x80)))
                    {
                        PFUN (Arg0, Arg1, Arg2, Arg3)
                    }
                    ElseIf ((ToInteger (Arg0) == 0x92))
                    {
                        PFUN (Arg0, Arg1, Arg2, Arg3)
                    }
                    Else
                    {
                        CFUN (Arg0, Arg1, Arg2, Arg3)
                    }

                    RTST = STDT /* External reference */
                    RTDT = BFDT /* External reference */
                    Return (Local1)
                }
                Else
                {
                    RTVL [Zero] = 0x8000
                }

                Return (RTVL) /* \_SB_.PCI0.LPCB.EC0_.CMFC.RTVL */
            }

            Mutex (FAMX, 0x00)
            Method (EIDR, 1, Serialized)
            {
                Acquire (FAMX, 0xFFFF)
                ERIB = Arg0
                Local0 = ERRD (0x5F)
                Release (FAMX)
                Return (Local0)
            }

            Method (EIDW, 2, Serialized)
            {
                Acquire (FAMX, 0xFFFF)
                ERIB = Arg0
                ERWT (0x5F, Arg1)
                Release (FAMX)
            }

            OperationRegion (ECCD, SystemMemory, 0xFC7E0800, 0x1000)
            Field (ECCD, AnyAcc, Lock, Preserve)
            {
                Offset (0x580), 
                Offset (0x582), 
                ECTB,   1, 
                ECTE,   1, 
                Offset (0x583), 
                ERN1,   8, 
                ERN2,   8, 
                ERN3,   8, 
                ERN4,   8, 
                ERN5,   8, 
                ERN6,   8, 
                ERN7,   8, 
                ERN8,   8, 
                ECMD,   8, 
                EDT1,   8, 
                EDT2,   8, 
                EDT3,   8, 
                EDT4,   8, 
                EDT5,   8, 
                    ,   1
            }

            Method (ERWT, 2, Serialized)
            {
                Local0 = Buffer (0x08){}
                Local0 [Zero] = 0xB1
                Local0 [One] = Arg0
                Local0 [0x02] = Arg1
                ERCD (Local0)
            }

            Method (ERRD, 1, Serialized)
            {
                Local0 = Buffer (0x08){}
                Local0 [Zero] = 0xB0
                Local0 [One] = Arg0
                Return (ERCD (Local0))
            }

            Mutex (CSMX, 0x00)
            Method (ERCD, 1, Serialized)
            {
                Acquire (CSMX, 0xFFFF)
                Name (ESRC, 0x64)
                ECTB = One
                ECMD = DerefOf (Arg0 [Zero])
                EDT1 = DerefOf (Arg0 [One])
                EDT2 = DerefOf (Arg0 [0x02])
                ECTE = One
                While (((ESRC != Zero) && (ECTE != Zero)))
                {
                    Sleep (0x0A)
                    ESRC -= One
                }

                Local0 = ERN1 /* \_SB_.PCI0.LPCB.EC0_.ERN1 */
                ECTB = Zero
                Release (CSMX)
                Return (Local0)
            }

            Method (SBAT, 2, NotSerialized)
            {
                Local0 = Buffer (0x08){}
                Local0 [Zero] = Arg0
                Local0 [One] = 0x16
                Local0 [0x02] = Arg1
                Local0 [0x03] = Zero
                Local0 [0x04] = Zero
                ESMC (Local0)
            }

            Method (SBA2, 2, NotSerialized)
            {
                Local0 = Buffer (0x08){}
                Local0 [Zero] = Arg0
                Local0 [One] = 0x36
                Local0 [0x02] = Arg1
                Local0 [0x03] = Zero
                Local0 [0x04] = Zero
                ESMC (Local0)
            }

            Mutex (ESCX, 0x00)
            Method (ESMC, 1, NotSerialized)
            {
                Acquire (ESCX, 0xFFFF)
                Name (ESRC, 0x05)
                SMD0 = Zero
                SMAD = DerefOf (Arg0 [One])
                SMCM = DerefOf (Arg0 [0x02])
                SMBN = DerefOf (Arg0 [0x03])
                Local4 = DerefOf (Arg0 [0x04])
                Local5 = Zero
                BCNT = Local4
                If ((Local4 != Zero))
                {
                    Local1 = SMD0 /* \_SB_.PCI0.LPCB.EC0_.SMD0 */
                    While (~(Local4 == Local5))
                    {
                        Local1 [Local5] = DerefOf (Arg0 [(0x05 + Local5)]
                            )
                        Local5 += One
                    }

                    SMD0 = Local1
                }

                SMPR = DerefOf (Arg0 [Zero])
                While ((~(ESRC == Zero) && ~((SMST & 0x80
                    ) == 0x80)))
                {
                    Sleep (0x14)
                    ESRC -= One
                }

                If ((SMST == 0x80))
                {
                    ESMB = SMD0 /* \_SB_.PCI0.LPCB.EC0_.SMD0 */
                    ESMS = BCNT /* \_SB_.PCI0.LPCB.EC0_.BCNT */
                }
                Else
                {
                    Debug = "====== Sent EC SMBus command time out. ======"
                    ESMS = 0xFF
                }

                Release (ESCX)
            }
        }

If I have not provided enough information please let me know and I will get that across.

Originally created by @confuciussayuhm on GitHub (Mar 27, 2022). Original GitHub issue: https://github.com/hirschmann/nbfc/issues/1237 Hello there. I have been trying for a while now to get nbfc working on my laptop. I originally followed the wiki guide but found it quite daunting and ended up applying one-by-one all the different HP configs noting which profiles made changes to my fan speed. I found one in particular (HP Compaq 15-s103tx) which somehow manages to set my fan to 100%. I then copied this profile and started to edit it as it wasn't working 100% for me. After playing around with this particular config I found that it does something to the way the EC handles battery charging and puts my laptop into some state where it does not want to charge. I have to either take the battery out or wait for the laptop to die entirely before Windows boots correctly. I, therefore, infer that what I thought were the read/write fan registers (for the HP Compaq 15-s103tx) are something else entirely on my laptop. I found that the reason my fan goes to 100% using the HP Compaq 15-s103tx is that the critical temperature was met in the profile. Any other adjustments to try and "force" the fan to a specific speed fail. I request assistance going through the following EmbeddedController "code" that I have taken out of the extracted DSDT to identify which are the correct registers I should be testing. ``` Device (EC0) { Name (_HID, EisaId ("PNP0C09") /* Embedded Controller Device */) // _HID: Hardware ID Name (_GPE, 0x14) // _GPE: General Purpose Events Name (OKEC, One) Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings { IO (Decode16, 0x0062, // Range Minimum 0x0062, // Range Maximum 0x01, // Alignment 0x01, // Length ) IO (Decode16, 0x0066, // Range Minimum 0x0066, // Range Maximum 0x01, // Alignment 0x01, // Length ) }) Method (_REG, 2, NotSerialized) // _REG: Region Availability { If ((Arg0 == 0x03)) { OKEC = Arg1 OSTP () ECFG (One) MSFG = (S0ID & One) PBOV = (PB1E & One) } } Method (CMDW, 2, NotSerialized) { Name (TEMP, One) While (TEMP) { ECTB = Zero TEMP = ECTB /* \_SB_.PCI0.LPCB.EC0_.ECTB */ } ECTB = One ECMD = Arg0 EDT1 = Arg1 ECTE = One TEMP = One While (TEMP) { TEMP = ECTE /* \_SB_.PCI0.LPCB.EC0_.ECTE */ } ECTB = Zero } OperationRegion (ECMM, SystemMemory, 0xFC7E0800, 0x1000) Field (ECMM, AnyAcc, Lock, Preserve) { REC1, 8, REC2, 8, WEC1, 8, WEC2, 8, WMIM, 8, Offset (0x06), STMS, 2, MBMS, 2, ACLS, 1, MBSS, 1, CSHE, 1, ACSP, 1, PSAC, 1, PSBC, 1, PSED, 1, Offset (0x08), PSPD, 8, BCPD, 8, BSTH, 8, PRDT, 8, UCPT, 8, HHKP, 8, SADP, 8, FANE, 1, CPUO, 1, M4GO, 1, FNSW, 1, SBTC, 1, AMDK, 1, , 1, EHP1, 1, SAD2, 8, FRPM, 8, FNMX, 8, FNMN, 8, FWPM, 8, RSTV, 8, CPTV, 8, GPTV, 8, PHTV, 8, FNTV, 8, BTTV, 8, HDTV, 8, , 1, , 1, W2BS, 1, SK6U, 1, BARD, 1, , 1, FNHK, 1, Offset (0x1D), FBST, 1, NGPS, 1, BCDG, 1, DGPS, 1, DGRS, 1, Offset (0x1E), DGPE, 1, DGHR, 1, FBPC, 1, EC6I, 1, EC6O, 1, GC6E, 1, RG12, 1, Offset (0x21), BTNO, 8, Offset (0x23), NVDX, 8, Offset (0x25), CFBE, 1, EPCF, 1, Offset (0x26), DPTC, 8, Offset (0x2A), PBSM, 2, SBSM, 2, , 2, BMNC, 1, BCLC, 1, Offset (0x2C), IOAF, 8, BCTL, 128, Offset (0x45), ATTE, 16, RTTE, 16, BC00, 8, BC01, 8, BC02, 8, BC03, 8, BC04, 8, BC05, 8, BC06, 8, BC07, 8, MXER, 8, ATTF, 16, SBVR, 16, NBM1, 1, BBM1, 1, PBM1, 1, Offset (0x58), IOST, 16, BMNE, 16, WACL, 1, Offset (0x5D), ERIB, 16, Offset (0x61), SMST, 8, SMAD, 8, SMCM, 8, SMD0, 256, BCNT, 8, SMAA, 24, SMBN, 8, Offset (0x90), BMNN, 72, BN00, 8, BN01, 8, BN02, 8, BN03, 8, BN04, 8, BN05, 8, BN06, 8, Offset (0xA1), , 1, VIDO, 1, TOUP, 1, Offset (0xA2), ODTS, 8, OSTY, 4, , 1, PBOV, 1, ECRD, 1, ADPT, 1, PWAK, 1, MWAK, 1, LWAK, 1, RWAK, 1, WWAK, 1, UWAK, 1, KWAK, 1, TWAK, 1, CCAC, 1, AOAC, 1, BLAC, 1, PSRC, 1, BOAC, 1, LCAC, 1, AAAC, 1, ACAC, 1, S3ST, 1, S3RM, 1, S4ST, 1, S4RM, 1, S5ST, 1, S5RM, 1, CSST, 1, CSRM, 1, OSTT, 8, OSST, 8, THLT, 8, TCNL, 8, MODE, 1, , 2, INIT, 1, FAN1, 1, FAN2, 1, FANT, 1, SKNM, 1, SDTM, 8, FSSN, 4, FANU, 4, PCVL, 6, SWTO, 1, TTHR, 1, TTHM, 1, THTL, 1, TFCT, 1, NPST, 5, CTMP, 8, CTML, 8, EST3, 8, SKTB, 8, SKTC, 8, DPOT, 8, EST1, 8, EST2, 8, , 1, LIDF, 1, PMEE, 1, PWBE, 1, RNGE, 1, BTWE, 1, Offset (0xB9), BRTS, 8, S35M, 1, S35S, 1, , 1, MSFG, 1, FFEN, 1, FFST, 1, Offset (0xBB), WLAT, 1, BTAT, 1, WLEX, 1, BTEX, 1, KLSW, 1, WLOK, 1, AT3G, 1, EX3G, 1, PJID, 8, CPUJ, 3, CPNM, 3, GATY, 2, BTP0, 1, BTP1, 1, , 2, BCC0, 1, BCC1, 1, Offset (0xBF), Offset (0xC0), BTY0, 1, BAM0, 1, BAL0, 1, , 1, BMF0, 3, Offset (0xC1), BST0, 8, BRC0, 16, BSN0, 16, BPV0, 16, BDV0, 16, BDC0, 16, BFC0, 16, GAU0, 8, BAT0, 8, BPC0, 16, BAC0, 16, BCG0, 16, BFCB, 16, BTPB, 16, BOL0, 1, BFS0, 1, Offset (0xDB), ORRF, 1, Offset (0xDC), , 2, SBIS, 1, Offset (0xDE), BSSB, 16, Offset (0xE3), BCV1, 16, BCV2, 16, BCV3, 16, BCV4, 16, MUAC, 16, CYC0, 8, Offset (0xF4), BMD0, 16, BACV, 16, BDN0, 8, Offset (0xFB), OTAW, 8, Offset (0xFF), CYC1, 8, Offset (0x2C3), , 3, GBTC, 1, Offset (0x3B0), Offset (0x3BC), CPUT, 8, Offset (0x3BE), CPUU, 8, Offset (0x3C0) } OperationRegion (ERAM, EmbeddedControl, Zero, 0xFF) Field (ERAM, ByteAcc, Lock, Preserve) { Offset (0x5F), ERBD, 8, SMPR, 8, Offset (0x62) } OperationRegion (CCLK, SystemIO, 0x1810, 0x04) Field (CCLK, DWordAcc, NoLock, Preserve) { , 1, DUTY, 3, THEN, 1, Offset (0x01), FTT, 1, , 8, TSTS, 1 } Method (FANG, 1, NotSerialized) { Local0 = EIDR (Arg0) Return (Local0) } Method (FANW, 2, NotSerialized) { EIDW (Arg0, Arg1) Return (Arg1) } Method (TUVR, 1, NotSerialized) { Return (0x05) } Method (THRO, 1, NotSerialized) { ITHR (Arg0) } Method (CLCK, 1, NotSerialized) { If ((Arg0 == Zero)) { THEN = Zero FTT = Zero } Else { DUTY = Arg0 THEN = One } Return (THEN) /* \_SB_.PCI0.LPCB.EC0_.THEN */ } Method (PCLK, 0, NotSerialized) { IPCL () } Method (ITHR, 1, NotSerialized) { If ((Arg0 == Zero)) { Return (0xFF) } ElseIf ((Arg0 == One)) { Return (DUTY) /* \_SB_.PCI0.LPCB.EC0_.DUTY */ } ElseIf ((Arg0 == 0x02)) { Return (TTHR) /* \_SB_.PCI0.LPCB.EC0_.TTHR */ } Else { Return (0xFF) } } Method (IPCL, 0, NotSerialized) { Local0 = PCVL /* \_SB_.PCI0.LPCB.EC0_.PCVL */ CPPC = Local0 PNOT () } Method (_Q37, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF { Debug = "=====QUERY_37=====" P80H = 0x37 Notify (ACAD, 0x80) // Status Change Sleep (0x03E8) Notify (BAT1, 0x80) // Status Change ^^^^WMID.WEI1 = 0x03 ^^^^WMID.WED1 = Zero Notify (WMID, 0x80) // Status Change PWRS = One PNOT () } Method (_Q38, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF { Debug = "=====QUERY_38=====" P80H = 0x38 Notify (ACAD, 0x80) // Status Change Sleep (0x03E8) Notify (BAT1, 0x80) // Status Change PWRS = Zero PNOT () } Method (_Q40, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF { Debug = "=====QUERY_40=====" P80H = 0x40 Local0 = Zero If ((OSYS >= 0x07DC)) { Notify (WLBU, 0x80) // Status Change } Else { ^^^^WLBU.UPWL () Sleep (0xC8) ^^^^WMID.WEI1 = 0x05 ^^^^WMID.WED1 = Zero Notify (WMID, 0x80) // Status Change } } Method (_Q48, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF { Debug = "=====QUERY_48=====" P80H = 0x48 If ((NGPS == Zero)) { P80H = 0x48 Notify (^^^PEG0.PEGP, 0xD1) // Hardware-Specific } Else { P80H = 0x49 Local0 = (NVDX + 0xD1) Notify (^^^PEG0.PEGP, Local0) } } Method (_Q49, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF { Debug = "=====QUERY_49=====" P80H = 0x49 If (ECOK ()) { CMDW (0x45, 0x45) \_TZ.TZ02.TZTP = One Notify (\_TZ.TZ02, 0x80) // Status Change } Else { \_TZ.TZ02.TZTP = Zero } } Method (_Q4D, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF { P80B = 0x4D Debug = "=====QUERY_26=====" If (BMNC) { ^^^^WMID.WEI1 = 0x16 ^^^^WMID.WED1 = One Notify (WMID, 0x80) // Status Change } If (BCLC) { ^^^^WMID.WEI1 = 0x16 ^^^^WMID.WED1 = One Notify (WMID, 0x80) // Status Change } } OperationRegion (PRT0, SystemIO, 0x80, 0x04) Field (PRT0, ByteAcc, Lock, Preserve) { P80H, 8 } Method (_Q10, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF { } Method (_Q11, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF { Debug = "=====QUERY_11=====" P80H = 0x11 If (IGDS) { Notify (^^^GFX0.DD1F, 0x87) // Device-Specific } Else { } } Method (_Q12, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF { Debug = "=====QUERY_12=====" P80H = 0x12 If (IGDS) { Notify (^^^GFX0.DD1F, 0x86) // Device-Specific } Else { } } Method (_Q15, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF { Debug = "=====QUERY_15=====" P80H = 0x15 If (IGDS) { Local0 = LIDF /* \_SB_.PCI0.LPCB.EC0_.LIDF */ Local0 = ~Local0 Local0 &= One Local0 += 0x02 If (^^^GFX0.GLID (Local0)) { ^^^GFX0.CLID |= 0x80000000 /* External reference */ } } Notify (LID0, 0x80) // Status Change } Method (_Q1D, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF { Debug = "=====QUERY_1D=====" P80H = 0x1D PCLK () } Method (_Q1E, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF { Debug = "=====QUERY_1E=====" P80H = 0x1E If (CTUR) { If ((TFCT == Zero)) { CSMI (0xDA, Zero) } Else { CSMI (0xDA, One) } } } Method (_Q24, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF { Debug = "=====QUERY_24=====" P80H = 0x24 Sleep (0x03E8) Notify (BAT1, 0x80) // Status Change } Method (_Q25, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF { Debug = "=====QUERY_25=====" P80H = 0x25 Sleep (0x03E8) Notify (BAT1, 0x81) // Information Change Sleep (0x03E8) Notify (BAT1, 0x80) // Status Change } Method (_Q33, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF { Debug = "=====QUERY_33=====" P80H = 0x33 ADBG ("EC PB press") PWPR () } Method (_Q34, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF { Debug = "=====QUERY_34=====" P80H = 0x34 ADBG ("EC PB release") PWRR () } Name (CTSL, Package (0x19) { 0x10, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x20, 0x21, 0x22, 0x24, 0x25, 0x26, 0x28, 0x90, 0x91, 0xFE, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99 }) Mutex (CFMX, 0x00) Method (CFUN, 4, Serialized) { Name (ESRC, 0x05) If ((DerefOf (Arg0 [Zero]) == 0x15)) { CreateWordField (Arg1, Zero, SFUN) If ((SFUN == 0x9001)){} ElseIf ((SFUN == 0x9002)) { STDT = Zero BFDT = Zero BFDT = Zero STDT = One } ElseIf ((SFUN == 0x9000)) { ESMC (Arg2) If ((ESMS != 0xFF)) { Local1 = Buffer (0x80){} Local1 [Zero] = 0x80 Local1 [One] = ESMS /* External reference */ Local3 = ESMB /* External reference */ Local1 [0x02] = DerefOf (Local3 [Zero]) Local1 [0x03] = DerefOf (Local3 [One]) Local1 [0x04] = DerefOf (Local3 [0x02]) Local1 [0x05] = DerefOf (Local3 [0x03]) Local1 [0x06] = DerefOf (Local3 [0x04]) Local1 [0x07] = DerefOf (Local3 [0x05]) Local1 [0x08] = DerefOf (Local3 [0x06]) Local1 [0x09] = DerefOf (Local3 [0x07]) Local1 [0x0A] = DerefOf (Local3 [0x08]) Local1 [0x0B] = DerefOf (Local3 [0x09]) Local1 [0x0C] = DerefOf (Local3 [0x0A]) Local1 [0x0D] = DerefOf (Local3 [0x0B]) Local1 [0x0E] = DerefOf (Local3 [0x0C]) Local1 [0x0F] = DerefOf (Local3 [0x0D]) Local1 [0x10] = DerefOf (Local3 [0x0E]) Local1 [0x11] = DerefOf (Local3 [0x0F]) Local1 [0x12] = DerefOf (Local3 [0x10]) Local1 [0x13] = DerefOf (Local3 [0x11]) Local1 [0x14] = DerefOf (Local3 [0x12]) Local1 [0x15] = DerefOf (Local3 [0x13]) Local1 [0x16] = DerefOf (Local3 [0x14]) Local1 [0x17] = DerefOf (Local3 [0x15]) Local1 [0x18] = DerefOf (Local3 [0x16]) Local1 [0x19] = DerefOf (Local3 [0x17]) Local1 [0x1A] = DerefOf (Local3 [0x18]) Local1 [0x1B] = DerefOf (Local3 [0x19]) Local1 [0x1C] = DerefOf (Local3 [0x1A]) Local1 [0x1D] = DerefOf (Local3 [0x1B]) Local1 [0x1E] = DerefOf (Local3 [0x1C]) Local1 [0x1F] = DerefOf (Local3 [0x1D]) Local1 [0x20] = DerefOf (Local3 [0x1E]) Local1 [0x21] = DerefOf (Local3 [0x1F]) BFDT = Local1 STDT = One } Else { STDT = 0x8000 } } Else { SFNO = Arg1 BFDT = Arg2 CSMI (0xCE, Arg0) } } ElseIf ((Match (CTSL, MEQ, DerefOf (Arg0 [Zero]), MTR, Zero, Zero) != Ones)) { SFNO = Arg1 BFDT = Arg2 CSMI (0xCE, Arg0) } Else { STDT = 0x8000 } } Name (OCSL, Package (0x03) { 0x80, 0x81, 0x82 }) Method (PFUN, 4, Serialized) { SFNO = Arg1 BFDT = Arg2 CSMI (0xCF, Arg0) } Method (CMFC, 4, Serialized) { Name (RTVL, Package (0x04) { Zero, Zero, Zero, Zero }) Debug = "=== In CMFC method ===" If ((ObjectType (Arg0) == One)) { RTVL [Zero] = 0x8000 } ElseIf ((DerefOf (Arg0 [Zero]) < 0xFE)) { Local1 = Buffer (0x82){} CreateWordField (Local1, Zero, RTST) CreateField (Local1, 0x10, 0x0400, RTDT) If (((ToInteger (Arg0) <= 0x8F) && (ToInteger (Arg0 ) >= 0x80))) { PFUN (Arg0, Arg1, Arg2, Arg3) } ElseIf ((ToInteger (Arg0) == 0x92)) { PFUN (Arg0, Arg1, Arg2, Arg3) } Else { CFUN (Arg0, Arg1, Arg2, Arg3) } RTST = STDT /* External reference */ RTDT = BFDT /* External reference */ Return (Local1) } Else { RTVL [Zero] = 0x8000 } Return (RTVL) /* \_SB_.PCI0.LPCB.EC0_.CMFC.RTVL */ } Mutex (FAMX, 0x00) Method (EIDR, 1, Serialized) { Acquire (FAMX, 0xFFFF) ERIB = Arg0 Local0 = ERRD (0x5F) Release (FAMX) Return (Local0) } Method (EIDW, 2, Serialized) { Acquire (FAMX, 0xFFFF) ERIB = Arg0 ERWT (0x5F, Arg1) Release (FAMX) } OperationRegion (ECCD, SystemMemory, 0xFC7E0800, 0x1000) Field (ECCD, AnyAcc, Lock, Preserve) { Offset (0x580), Offset (0x582), ECTB, 1, ECTE, 1, Offset (0x583), ERN1, 8, ERN2, 8, ERN3, 8, ERN4, 8, ERN5, 8, ERN6, 8, ERN7, 8, ERN8, 8, ECMD, 8, EDT1, 8, EDT2, 8, EDT3, 8, EDT4, 8, EDT5, 8, , 1 } Method (ERWT, 2, Serialized) { Local0 = Buffer (0x08){} Local0 [Zero] = 0xB1 Local0 [One] = Arg0 Local0 [0x02] = Arg1 ERCD (Local0) } Method (ERRD, 1, Serialized) { Local0 = Buffer (0x08){} Local0 [Zero] = 0xB0 Local0 [One] = Arg0 Return (ERCD (Local0)) } Mutex (CSMX, 0x00) Method (ERCD, 1, Serialized) { Acquire (CSMX, 0xFFFF) Name (ESRC, 0x64) ECTB = One ECMD = DerefOf (Arg0 [Zero]) EDT1 = DerefOf (Arg0 [One]) EDT2 = DerefOf (Arg0 [0x02]) ECTE = One While (((ESRC != Zero) && (ECTE != Zero))) { Sleep (0x0A) ESRC -= One } Local0 = ERN1 /* \_SB_.PCI0.LPCB.EC0_.ERN1 */ ECTB = Zero Release (CSMX) Return (Local0) } Method (SBAT, 2, NotSerialized) { Local0 = Buffer (0x08){} Local0 [Zero] = Arg0 Local0 [One] = 0x16 Local0 [0x02] = Arg1 Local0 [0x03] = Zero Local0 [0x04] = Zero ESMC (Local0) } Method (SBA2, 2, NotSerialized) { Local0 = Buffer (0x08){} Local0 [Zero] = Arg0 Local0 [One] = 0x36 Local0 [0x02] = Arg1 Local0 [0x03] = Zero Local0 [0x04] = Zero ESMC (Local0) } Mutex (ESCX, 0x00) Method (ESMC, 1, NotSerialized) { Acquire (ESCX, 0xFFFF) Name (ESRC, 0x05) SMD0 = Zero SMAD = DerefOf (Arg0 [One]) SMCM = DerefOf (Arg0 [0x02]) SMBN = DerefOf (Arg0 [0x03]) Local4 = DerefOf (Arg0 [0x04]) Local5 = Zero BCNT = Local4 If ((Local4 != Zero)) { Local1 = SMD0 /* \_SB_.PCI0.LPCB.EC0_.SMD0 */ While (~(Local4 == Local5)) { Local1 [Local5] = DerefOf (Arg0 [(0x05 + Local5)] ) Local5 += One } SMD0 = Local1 } SMPR = DerefOf (Arg0 [Zero]) While ((~(ESRC == Zero) && ~((SMST & 0x80 ) == 0x80))) { Sleep (0x14) ESRC -= One } If ((SMST == 0x80)) { ESMB = SMD0 /* \_SB_.PCI0.LPCB.EC0_.SMD0 */ ESMS = BCNT /* \_SB_.PCI0.LPCB.EC0_.BCNT */ } Else { Debug = "====== Sent EC SMBus command time out. ======" ESMS = 0xFF } Release (ESCX) } } ``` If I have not provided enough information please let me know and I will get that across.
kerem 2026-02-26 00:34:17 +03:00
  • closed this issue
  • added the
    Stale
    label
Author
Owner

@ewaldc commented on GitHub (Jun 24, 2022):

See my answer here for Pavilion 15-cs0xxx.
Ewald

<!-- gh-comment-id:1165603508 --> @ewaldc commented on GitHub (Jun 24, 2022): See my answer here[](https://github.com/hirschmann/nbfc/issues/1240) for Pavilion 15-cs0xxx. Ewald
Author
Owner

@NiitoCHKN commented on GitHub (Jul 20, 2022):

See my answer here for Pavilion 15-cs0xxx. Ewald

excuse me, what do you mean?

<!-- gh-comment-id:1190614660 --> @NiitoCHKN commented on GitHub (Jul 20, 2022): > See my answer here for Pavilion 15-cs0xxx. Ewald excuse me, what do you mean?
Author
Owner

@ewaldc commented on GitHub (Jul 20, 2022):

Take a look here, it may work for your config as well.

<!-- gh-comment-id:1190617589 --> @ewaldc commented on GitHub (Jul 20, 2022): [Take a look here](https://github.com/hirschmann/nbfc/issues/1240), it may work for your config as well.
Author
Owner

@NiitoCHKN commented on GitHub (Jul 20, 2022):

Take a look here, it may work for your config as well.

unfortunately doesn't work

<!-- gh-comment-id:1190671009 --> @NiitoCHKN commented on GitHub (Jul 20, 2022): > [Take a look here](https://github.com/hirschmann/nbfc/issues/1240), it may work for your config as well. unfortunately doesn't work
Author
Owner

@github-actions[bot] commented on GitHub (Jan 18, 2023):

This issue is stale because it has been open more than 180 days with no activity. If nobody comments within 7 days, this issue will be closed

<!-- gh-comment-id:1386259765 --> @github-actions[bot] commented on GitHub (Jan 18, 2023): This issue is stale because it has been open more than 180 days with no activity. If nobody comments within 7 days, this issue will be closed
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/nbfc-hirschmann#1061
No description provided.