- Joined
- Dec 16, 2013
- Messages
- 82
- Motherboard
- Rampage 6 Extreme
- CPU
- i9-7900X
- Graphics
- Aorus 1080ti xTreme
- Mac
- Mobile Phone
No idea what that is all about... Want to clarify?
_BCL table will be scaled by the PNLF patch as needed. No need to customize it really, no matter whether you're using BIOS PWM max or other.
IntelBacklight.kext doesn't use _BCL at all.
No need to patch the framebuffer to match. It is ignored when using either ACPIBacklght.kext or IntelBacklight.kext as each kext/PNLF patch constantly resets the value.
1. I meant before, that Vanilla OS X only reads the _BCL table from acpi... But doesn't control the backlight via _BCM...
Thats why i stroked the text...
I wrote before, that its possible via dsdt code, to get transition working... but i forgot, that i did it long ago, and i used ACPI Backlight to get transition working via DSDT and not via ACPIBacklight itself...
ACPIBacklight calls _BCM/XBCM to change backlight...
I have removed the code, because it was useless...
"No need to patch the framebuffer to match. It is ignored when using either ACPIBacklght.kext or IntelBacklight.kext as each kext/PNLF patch constantly resets the value."
---> PNLF Patch reset the value of Framebuffer... thanks, thats what i wanted to know....
Here is my PNLF Device, that i did for yosemite long ago, with ACPIBacklight compatibility...
Code:
Device (PNLF) {
Name (_ADR, Zero) // _ADR: Address
Name (_HID, EisaId ("APP0002")) // _HID: Hardware ID
Name (_CID, "backlight") // _CID: Compatible ID
Name (_UID, 0x0F) // _UID: Unique ID
Name (_STA, 0x0B) // _STA: Status
Name (LMAX, 0x056C)
Name (SCFT, 0x08)
Name (BMIN, Zero)
Name (BMAX, 0x64)
Name (ACBR, 0x50)
Name (BATB, 0x3C)
Name (XOPT, Zero)
OperationRegion (BRIT, SystemMemory, (^PCI0.IGPU.BAR1 + 0x000C824F), 0x05)
Field (BRIT, AnyAcc, Lock, Preserve)
{
SLBT, 8,
XBQC, 16,
MAXL, 16
}
Method (_INI, 0, NotSerialized) // _INI: Initialize
{
SLBT = 0xC0
If ((LMAX > 0x0200))
{
MAXL = LMAX /* \_SB_.PNLF.LMAX */
}
Else
{
If ((!MAXL || (MAXL < 0x0200)))
{
MAXL = 0x0AD9
LMAX = 0x0AD9
}
Else
{
LMAX = MAXL /* \_SB_.PNLF.MAXL */
}
}
}
Method (XBCM, 1, NotSerialized)
{
Local0 = DerefOf (_BCL () [(BMIN + 0x02)])
Local1 = DerefOf (_BCL () [(BMAX + 0x02)])
If ((Arg0 < Local0))
{
Arg0 = Local0
}
If ((Arg0 > Local1))
{
Arg0 = Local1
}
MAXL = LMAX /* \_SB_.PNLF.LMAX */
XBQC = Arg0
}
Method (_DOS, 1, NotSerialized) // _DOS: Disable Output Switching
{
^^PCI0.IGPU._DOS (Arg0)
}
Method (_BCL, 0, Serialized) // _BCL: Brightness Control Levels
{
Name (PKBC, Package (0x67) {})
Local0 = (((0x64 * (SCFT + 0x64)) * 0x64) /
MAXL)
PKBC [Zero] = (((ACBR * (SCFT + ACBR)
) * 0x64) / Local0)
PKBC [One] = (((BATB * (SCFT + BATB)
) * 0x64) / Local0)
Local1 = Zero
While ((Local1 < 0x65))
{
PKBC [(Local1 + 0x02)] = (((Local1 * (
SCFT + Local1)) * 0x64) / Local0)
Local1++
}
PKBC [0x66] = MAXL /* \_SB_.PNLF.MAXL */
Return (PKBC) /* \_SB_.PNLF._BCL.PKBC */
}
}
Since El Capitan, 50% of the code is useless now...
There is only _BCL, _INI and _DOS usefull only...
_BCL is a completely generated version, that reads bios value if you set LMAX = 0... if there is no bios value its going to use 0x0AD9...
With a custom injector:
View attachment CustomBacklight.kext.zip
However, this is my old way of using backlight
Cheers