what is required to support a new laptop?
matt
sendtomatt at gmail.com
Mon Feb 25 00:58:41 UTC 2013
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 at 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 at 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 at 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
More information about the freebsd-acpi
mailing list