Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make the Keyboard Backlight work again. #1

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open

Conversation

Ph0rk0z
Copy link
Owner

@Ph0rk0z Ph0rk0z commented Feb 23, 2021

I think previously this was for the thinklight? 2 bits, shmoo bits, the driver wants 0x200 and the backlight level. Unfortunately this doesn't want to work on windows and I'm not sure why yet. Maybe something doesn't load or I need to throw the DLL in IDA and find out what is up. I have not worked out events yet.. perhaps windows operates on those more.

I think previously this was for the thinklight? 2 bits, shmoo bits, the driver wants 0x200 and the backlight level.  Unfortunately this doesn't want to work on windows and I'm not sure why yet. Maybe something doesn't load or I need to throw the DLL in IDA and find out what is up. I have not worked out events yet.. perhaps windows operates on those more.
I need to check the TP acpi driver and see hwo brightness setting of auto and manual work as well as the events, it currently doesn't work in windows for some reason either.
Still works fine on linux. Interstingly, the EC never has that extra 0x200 in EC ram that the driver expects, even on my x250.
@Ph0rk0z
Copy link
Owner Author

Ph0rk0z commented Mar 1, 2021

I think part of the problem with windows is that SMI is used to set the backlight and not the EC. The actual methods don't write to the EC when I looked at the DSDT from X250.

Method (KBLS, 2, NotSerialized)
    {
        Return (SMI (0x14, 0x09, Arg0, Arg1, 0x00))
    }

Method (MLCG, 1, NotSerialized)
                        {
                            Local0 = \KBLS (0x00, 0x00)
                            Return (Local0)
                        }

                        Method (MLCS, 1, NotSerialized)
                        {
                            Local0 = \KBLS (0x01, Arg0)
                            If (!(Local0 & 0x80000000))
                            {
                                If ((Arg0 & 0x00010000))
                                {
                                    \_SB.PCI0.LPC.EC.HKEY.MHKQ (0x6001)
                                }
                                ElseIf (\_SB.PCI0.LPC.EC.HKEY.MHKK (0x00020000))
                                {
                                    \_SB.PCI0.LPC.EC.HKEY.MHKQ (0x1012)
                                }
                            }

                            Return (Local0)
                        }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant