Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 24 Feb 2013 16:57:23 -0800
From:      matt <sendtomatt@gmail.com>
To:        Ian Smith <smithi@nimnet.asn.au>
Cc:        freebsd-acpi@freebsd.org, bapt@freebsd.org
Subject:   Re: what is required to support a new laptop?
Message-ID:  <512AB6F3.6030001@gmail.com>
In-Reply-To: <20130130050811.H87033@sola.nimnet.asn.au>
References:  <CAF6rxg=c=JN=N7NkWYdRHbgAqQTPGoFr=uLuXgiCfh%2BDdd-C4w@mail.gmail.com> <20130128114938.GK50515@e-new.0x20.net> <CAF6rxgnHayanFrLhmixdixe_pKeifPZG2mUYnJc51ioc47oYJQ@mail.gmail.com> <CAN6yY1tLY_LSv6xpcfD_oC_6769BSuFutKYE4%2BExN81oyue5vQ@mail.gmail.com> <20130130024649.R87033@sola.nimnet.asn.au> <CAF6rxgnuC%2B9-TZV_3uv2hyGiGOngost9k2ct0ZFtfvnzeDPvEA@mail.gmail.com> <20130130032714.D87033@sola.nimnet.asn.au> <CAF6rxgmuvv%2B8wOgju6bbjLk-WysDo8BpDaKebMMOd0aSohPO=w@mail.gmail.com> <20130130050811.H87033@sola.nimnet.asn.au>

next in thread | previous in thread | raw e-mail | index | archive | help
On 01/29/13 10:24, Ian Smith wrote:
> On Tue, 29 Jan 2013 12:46:43 -0500, Eitan Adler wrote:
>  > On 29 January 2013 12:29, Ian Smith <smithi@nimnet.asn.au> wrote:
>  > > Ah right.  I don't suppose kldload -v shows anything useful about the
>  > > problem loading it?  Ah, never mind, it may be obvious .. lightly
>  > > skimming your asl.y530.gz, I recalled folks having to patch something
>  > > for Lenovo rather than IBM OEMIDs .. hunt, hunt .. ok, here it is:
>  > >
>  > > http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/164538
>  > 
>  > 
>  > This is after the install of a patched acpi_ibm
>  > [3500 root@gravity /usr/src/sys/modules/acpi ]#kldload -v acpi_ibm
>  > Loaded acpi_ibm, id=12
>
> Which looks maybe successful, on the face of it? ..
>
>  > [5507 eitan@gravity (100)% ~ !1!]%sysctl dev.acpi_ibm
>  > sysctl: unknown oid 'dev.acpi_ibm'
>
> .. but clearly wasn't.
>

The Y series doesn't have the HKEY stuff, or it's not the same. You want
acpi_video (as does every new Lenovo, thinkpad or not).

The problem is Lenovo is putting the "correct" _BCL/_BCM under "PEG"
devices....section from your dsdt follows, temporary workaround test
after that

Device (LCD)
                {
                    Method (_ADR, 0, NotSerialized)
                    {
                        Return (0x0110)
                    }

                    Method (LVLS, 1, NotSerialized)
                    {
                        Store (One, Local0)
                        Store (Zero, Local1)
                        If (LEqual (OSYS, 0x07DC))
                        {
                            Store (0x14, Local5)
                            Store (PLV2, Local6)
                        }
                        Else
                        {
                            Store (0x0F, Local5)
                            Store (PLVL, Local6)
                        }

                        While (Local0)
                        {
                            Add (Local1, 0x02, Local2)
                            Store (DerefOf (Index (Local6, Local2)), Local3)
                            And (Arg0, 0xFF, Local4)
                            If (LEqual (Local4, Local3))
                            {
                                Store (Zero, Local0)
                            }

                            Subtract (Local3, One, Local3)
                            If (LEqual (Local4, Local3))
                            {
                                Store (Zero, Local0)
                            }

                            If (LGreaterEqual (Local1, Local5))
                            {
                                Store (Zero, Local0)
                            }

                            If (Local0)
                            {
                                Add (One, Local1, Local1)
                            }
                        }

                        Return (Local1)
                    }

                    Method (_BCL, 0, NotSerialized)
                    {
                        If (LNotEqual (OSYS, 0x07DC))
                        {
                            Return (PLVL)
                        }
                        Else
                        {
                            Return (PLV2)
                        }
                    }

                    Method (_BCM, 1, NotSerialized)
                    {
                        If (IGDS)
                        {
                            Store (^^^^GFX0.DD02.LVLS (Arg0), Local1)
                            Store (Local1, ^^^^LPCB.EC0.BRTS)
                            ^^^^GFX0.AINT (One, Arg0)
                        }
                        Else
                        {
                            Store (LVLS (Arg0), Local1)
                            Store (Local1, ^^^^LPCB.EC0.BRTS)
                        }

                        Store (Arg0, BRTL)
                    }

                    Method (_BQC, 0, NotSerialized)
                    {
                        Return (BRTL)
                    }
                }
            }
        }


This would be under _SB.PCI0.PEG0.VGA

Try acpi_call -p '\_SB.PCI0.PEG0.VGA.LCD._BCL'
then
acpi_call -p '\_SB.PCI0.PEG0.VGA.LCD._BCL' -i 50

Experiment with the numbers.

We need to fix acpi_video so it attaches to the correct _BCL on these
laptops.

Matt





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?512AB6F3.6030001>