Jump to content

UPDATED 20.12. GenericBrightness.kext


ivik
 Share

674 posts in this topic

Recommended Posts

Brightness get doesn't change brightness, it only reads it.

But in my case it does. Everytime I do brightness get it changes the brightness to maximum.

It looks like your _BQC returns wrong values.

 

So.. everytime you set to 0 for example, it returns 0, and hardware brightness is set to max (100)?

No, it all works - if I set it to 0 it will dim the screen, if I set it to 100 it will got to maximum.

The problem is when I do "brightness get" - this, for some reason, sets brightness to 100, and says "0".

 

Vanilla brightness doesn't move when min=max=0.

Is your brightness conrolled with EC?

Yes, it's controlled with EC.

 

Thanks!

Link to comment
Share on other sites

we managed to get a native GPUPM on Mini 311 by using LegacyAGPM developed by Master Chief, i think you could easily search it on this forum...

Hi aikidoka25,

Have you GPUPLimit key (with 0x00 value) under ACPI_SMC_PlatformPlugin in IORegExpl?

Link to comment
Share on other sites

 

 

Post your dsdt.
It look like _BQC is messing with brightness.

Device (LCD)
{
Name (_ADR, 0x0118)
Name (_HID, EisaId ("LCD1234"))
Method (_DCS, 0, NotSerialized)
{
Store ("LCD -- _DCS", Debug)
If (LCDA)
{
Return (0x1F)
}
Else
{
Return (0x1D)
}
}
Method (_DGS, 0, NotSerialized)
{
Store ("LCD -- _DCS", Debug)
If (LCDA)
{
Return (One)
}
Else
{
Return (Zero)
}
}
Method (_DSS, 1, NotSerialized)
{
Store ("LCD -- _DSS", Debug)
}
Method (_BCL, 0, NotSerialized)
{
If (IGDS)
{
Return (BCLT)
}
Else
{
Return (BCLT)
}
}
Method (_BCM, 1, NotSerialized)
{
If (ECON)
{
SBCM (Arg0)
}
}
Method (_BQC, 0, NotSerialized)
{
If (ECON)
{
Return (GBQC ())
}
Else
{
Return (GBQC ())
}
}
Method (GBQC, 0, NotSerialized)
{
Store (Zero, Local0)
Store (^^^^LPCB.EC0.BRTL, Local1)
While (LLess (Local0, 0x0B))
{
If (IGDS)
{
If (LEqual (LCDD, 0x22ECAF06))
{
Store (DerefOf (Index (BCL8, Local0)), Local2)
}
Else
{
If (LEqual (LCDD, 0x1680AF0D))
{
Store (DerefOf (Index (BCL9, Local0)), Local2)
}
Else
{
If (LEqual (LCDD, 0x021BE430))
{
Store (DerefOf (Index (BCLB, Local0)), Local2)
}
Else
{
If (LEqual (LCDD, 0x026AE430))
{
Store (DerefOf (Index (BCLC, Local0)), Local2)
}
Else
{
If (LEqual (LCDD, 0x3651A34C))
{
Store (DerefOf (Index (BCLD, Local0)), Local2)
}
Else
{
Store (DerefOf (Index (BCLD, Local0)), Local2)
}
}
}
}
}
}
Else
{
If (LEqual (LCDD, 0x22ECAF06))
{
Store (DerefOf (Index (BCL1, Local0)), Local2)
}
Else
{
If (LEqual (LCDD, 0x1680AF0D))
{
Store (DerefOf (Index (BCL2, Local0)), Local2)
}
Else
{
If (LEqual (LCDD, 0x021BE430))
{
Store (DerefOf (Index (BCL3, Local0)), Local2)
}
Else
{
If (LEqual (LCDD, 0x109EAF06))
{
Store (DerefOf (Index (BCL4, Local0)), Local2)
}
Else
{
If (LEqual (LCDD, 0x0226E430))
{
Store (DerefOf (Index (BCL5, Local0)), Local2)
}
Else
{
If (LEqual (LCDD, 0x1711AF0D))
{
Store (DerefOf (Index (BCL6, Local0)), Local2)
}
Else
{
If (LEqual (LCDD, 0x3651A34C))
{
Store (DerefOf (Index (BCLA, Local0)), ^^^^LPCB.EC0.BRTL)
}
Else
{
If (LEqual (LCDD, 0x026AE430))
{
Store (DerefOf (Index (BCLE, Local0)), ^^^^LPCB.EC0.BRTL)
}
Else
{
Store (DerefOf (Index (BCL7, Local0)), Local2)
}
}
}
}
}
}
}
}
}
If (LEqual (Local1, Local2))
{
Add (Local0, 0x02, Local2)
If (IGDS)
{
Store (DerefOf (Index (BCLT, Local2)), Local3)
}
Else
{
Store (DerefOf (Index (BCLT, Local2)), Local3)
}
Store (0x0B, Local0)
}
Increment (Local0)
}
Return (Local3)
}
Method (SBCM, 1, NotSerialized)
{
Store (Zero, Local0)
While (LLess (Local0, 0x0B))
{
Add (Local0, 0x02, Local1)
If (IGDS)
{
Store (DerefOf (Index (BCLT, Local1)), Local2)
}
Else
{
Store (DerefOf (Index (BCLT, Local1)), Local2)
}
If (LEqual (Arg0, Local2))
{
If (IGDS)
{
If (LEqual (LCDD, 0x22ECAF06))
{
Store (DerefOf (Index (BCL8, Local0)), DPBL)
}
Else
{
If (LEqual (LCDD, 0x1680AF0D))
{
Store (DerefOf (Index (BCL9, Local0)), DPBL)
}
Else
{
If (LEqual (LCDD, 0x021BE430))
{
Store (DerefOf (Index (BCLB, Local0)), DPBL)
}
Else
{
If (LEqual (LCDD, 0x026AE430))
{
Store (DerefOf (Index (BCLC, Local0)), DPBL)
}
Else
{
If (LEqual (LCDD, 0x3651A34C))
{
Store (DerefOf (Index (BCLD, Local0)), DPBL)
}
Else
{
Store (DerefOf (Index (BCLD, Local0)), DPBL)
}
}
}
}
}
Store (DPBL, ^^^^LPCB.EC0.BRTL)
^^^^GFX0.AINT (One, DPBL)
}
Else
{
If (LEqual (LCDD, 0x22ECAF06))
{
Store (DerefOf (Index (BCL1, Local0)), ^^^^LPCB.EC0.BRTL)
}
Else
{
If (LEqual (LCDD, 0x1680AF0D))
{
Store (DerefOf (Index (BCL2, Local0)), ^^^^LPCB.EC0.BRTL)
}
Else
{
If (LEqual (LCDD, 0x021BE430))
{
Store (DerefOf (Index (BCL3, Local0)), ^^^^LPCB.EC0.BRTL)
}
Else
{
If (LEqual (LCDD, 0x109EAF06))
{
Store (DerefOf (Index (BCL4, Local0)), ^^^^LPCB.EC0.BRTL)
}
Else
{
If (LEqual (LCDD, 0x0226E430))
{
Store (DerefOf (Index (BCL5, Local0)), ^^^^LPCB.EC0.BRTL)
}
Else
{
If (LEqual (LCDD, 0x1711AF0D))
{
Store (DerefOf (Index (BCL6, Local0)), ^^^^LPCB.EC0.BRTL)
}
Else
{
If (LEqual (LCDD, 0x3651A34C))
{
Store (DerefOf (Index (BCLA, Local0)), ^^^^LPCB.EC0.BRTL)
}
Else
{
If (LEqual (LCDD, 0x026AE430))
{
Store (DerefOf (Index (BCLE, Local0)), ^^^^LPCB.EC0.BRTL)
}
Else
{
Store (DerefOf (Index (BCL7, Local0)), ^^^^LPCB.EC0.BRTL)
}
}
}
}
}
}
}
}
}
Store (0x0B, Local0)
}
Increment (Local0)
}
}
}

And all the BCLx definitions from the Definition Block:
Name (BCL1, Package ()
{
0x07,
0x08,
0x0C,
0x11,
0x15,
0x1A,
0x1E,
0x2C,
0x39,
0x47,
0x5A
})
Name (BCL2, Package ()
{
0x06,
0x09,
0x0E,
0x11,
0x16,
0x18,
0x1F,
0x2E,
0x3C,
0x4A,
0x5A
})
Name (BCL3, Package ()
{
0x06,
0x08,
0x0B,
0x0F,
0x12,
0x18,
0x1A,
0x26,
0x30,
0x3B,
0x50
})
Name (BCL4, Package ()
{
0x06,
0x07,
0x0B,
0x0D,
0x10,
0x15,
0x17,
0x22,
0x2D,
0x38,
0x4F
})
Name (BCL5, Package ()
{
0x06,
0x07,
0x0B,
0x0E,
0x11,
0x14,
0x18,
0x23,
0x2E,
0x39,
0x4D
})
Name (BCL6, Package ()
{
0x06,
0x07,
0x0B,
0x0D,
0x10,
0x16,
0x1A,
0x22,
0x2D,
0x38,
0x53
})
Name (BCL7, Package ()
{
0x06,
0x08,
0x0B,
0x0F,
0x12,
0x18,
0x1A,
0x26,
0x30,
0x3B,
0x50
})
Name (BCL8, Package ()
{
0x0B,
0x0D,
0x0F,
0x11,
0x14,
0x18,
0x25,
0x32,
0x3C,
0x46,
0x50
})
Name (BCL9, Package ()
{
0x0B,
0x0D,
0x0F,
0x11,
0x14,
0x18,
0x25,
0x32,
0x3C,
0x46,
0x50
})
Name (BCLA, Package ()
{
0x06,
0x08,
0x0D,
0x12,
0x15,
0x19,
0x1F,
0x2E,
0x3C,
0x4A,
0x5A
})
Name (BCLB, Package ()
{
0x0B,
0x0D,
0x0F,
0x11,
0x14,
0x18,
0x25,
0x32,
0x3C,
0x46,
0x50
})
Name (BCLC, Package ()
{
0x0B,
0x0D,
0x0F,
0x11,
0x14,
0x18,
0x25,
0x32,
0x3C,
0x46,
0x50
})
Name (BCLD, Package ()
{
0x0B,
0x0D,
0x0F,
0x11,
0x14,
0x18,
0x25,
0x32,
0x3C,
0x46,
0x50
})
Name (BCLE, Package ()
{
0x06,
0x09,
0x0B,
0x0F,
0x15,
0x18,
0x1C,
0x29,
0x37,
0x43,
0x5A
})
Name (BCLT, Package ()
{
0x64,
0x32,
Zero,
0x0A,
0x14,
0x1E,
0x28,
0x32,
0x3C,
0x46,
0x50,
0x5A,
0x64
})

Full DSDT attached.
In Windows, I have this "smooth" backlight change, so if I press Fn+Backlight Up this will gradually change to the next BCL level - I think that's what those methods are, and they work with your GenericBrightness, so if I do
./brightness set 10
./brightness set 100
It will gradually go from 10 to 100 in a process that takes a couple of seconds.

dsdt.rar

Link to comment
Share on other sites

Please edit your post. make use of codebox instead of code

Edit: Thank you! ^_^ It makes reading the topic more easy on the eyes

Edited by Gringo Vermelho
codeboxes are broken, reverted to code tags
Link to comment
Share on other sites

OMG :blink: This is piece of work with brightness methods.

Just as I tought.
_BQC writes to BRTL.

If (LEqual (LCDD, 0x3651A34C))
{
Store (DerefOf (Index (BCLA, Local0)), ^^^^LPCB.EC0.BRTL)
}

Maybe disabling writing to this registers in GBQC could fix that.

Store (DerefOf (Index (BCLA, Local0)), ^^^^LPCB.EC0.BRTL)

to

Store (DerefOf (Index (BCLA, Local0)), Local5).
Link to comment
Share on other sites

OMG :blink: This is piece of work with brightness methods.

 

Maybe disabling writing to this registers in GBQC could fix that.

 

Store (DerefOf (Index (BCLA, Local0)), ^^^^LPCB.EC0.BRTL)

 

to

 

Store (DerefOf (Index (BCLA, Local0)), Local5).

Hey ivik,

I've tried that, I even tried disabling both writings:

															If (LEqual (LCDD, 0x026AE430))
														{
															Store (DerefOf (Index (BCLE, Local0)), Local2)
														}
														Else
														{
															Store (DerefOf (Index (BCL7, Local0)), Local2)
														}

But still the backlight command behaves the same. Strange.

 

@valv: Thanks for the tip!

Link to comment
Share on other sites

Don't write on local2. Use other variable like local5.

Tried local5 as well, but then I just edited the first one. I'll try it now, both on local5.

 

EDIT:

OK, sorry, correction :blink: Yes, when changed to local5 it works, turns out I wasn't changing the method in the right Device :)

Thanks, this works now!

 

Any thoughts on why native, vanilla brightness doesn't want to work with this?

Link to comment
Share on other sites

Native controll (without my driver) will never work. Apple doesn't use EC to controll brightness.

 

I think this is related to pwm-info.

Maybe if someone could post registers with slider working with same graphics as yours.

I posted what this registers are. Maybe writing some value on boot in _INI method could fix that.

Maybe min/max is readed from there.

Link to comment
Share on other sites

Hi aikidoka25,

Have you GPUPLimit key (with 0x00 value) under ACPI_SMC_PlatformPlugin in IORegExpl?

 

I just checked, there is no such key but CPUPLimit with value 0x0.

 

however, we know there is some degree of GPU PM by

- oberserving AGPM IGPU G-state change on kernel log

- checking nvclock output

 

Looks like it is not 100% GPU PM but then it is better than nothing at all.

 

ivik,

LCD1234 + generic kext make the slider works on HP Mini 311

Only it doesn't correspond with fn + bright up / down keys

Well, I didn't try custom voodoops2 keyboard kext, we have some stability issues with voodoo version before.

 

thanks for the good works!

Link to comment
Share on other sites

Native controll (without my driver) will never work. Apple doesn't use EC to controll brightness.

 

I think this is related to pwm-info.

Maybe if someone could post registers with slider working with same graphics as yours.

I posted what this registers are. Maybe writing some value on boot in _INI method could fix that.

Maybe min/max is readed from there.

I ment your other method, using native slider, not pure vanilla without your kext :(

I did it ! :-D I put pwm-info from MacBookPro6,1 which has GT 330M and I have GT 320M.

You are awesome, thanks so much.

I have the slider now and it's working with the keyboard as well.

The only strange thing is that there is delay after slider movement (about one-two seconds) before the screen backlight changes.

Link to comment
Share on other sites

@aikidoka25

 

Pause/Scrlk work?

Native keys won't work it their scancodes are not mapped to apple keycodes.

 

@NIXin

Nice!!

So brightness is readed from pwm-info for this graphics.

Delay is because value from ioreg is readed once per sec. So it is max 1.999999.... delay.

 

I don't wanna poll it to much for simple thing like brightness. We are on laptops, and every sec of battery life counts. :angel:

 

Time for update on first page.

Link to comment
Share on other sites

Dear ivik thank you for your work on this kext! Allow me to ask a couple of clarification questions:

1. Your kext goes in /E/E or /S/L/E?

2. The only modification needed is to introduce in DSDT the code Name (_HID, EisaId ("LCD1234")) right? We don't need Device (PNLF) added, anymore?

3. Is there a way to introduce your 30sec delay as a value we can change, in the actual Info.plist? I have no idea/understanding as to what this delay does or when it ends, just to play and see if on my Dell Inspiron (Mini) 10v (1011) there's a KP or not with/without delay...

4. How can we tell if Device (EC0) controls the brightness? Here is my (LCD) code of my Dell Inspiron 1011 untouched DSDT code (using an Intel GME945 display controller):

Device (LCD)
{
Name (_HID, EisaId ("LCD1234")) // Needed for ivik's GenericBrightness.kext
Method (_ADR, 0, NotSerialized)
{
Return (0x0400)
}

Method (_DCS, 0, NotSerialized)
{
^^^LPCB.PHSS (0x0C)
If (And (CSTE, 0x0808))
{
Return (0x1F)
}
Else
{
Return (0x1D)
}
}

Method (_DGS, 0, NotSerialized)
{
If (And (NSTE, 0x0808))
{
Return (One)
}
Else
{
Return (Zero)
}
}

Method (_DSS, 1, NotSerialized)
{
If (LEqual (And (Arg0, 0xC0000000), 0xC0000000))
{
Store (NSTE, CSTE)
}
}

Method (_BCL, 0, NotSerialized)
{
Store (0xC0, P80H)
Return (Package (0x12)
{
0x64,
0x41,
0x19,
0x1E,
0x23,
0x28,
0x2D,
0x32,
0x37,
0x3C,
0x41,
0x46,
0x4B,
0x50,
0x55,
0x5A,
0x5F,
0x64
})
}

Method (_BCM, 1, NotSerialized)
{
Store (0xC1, P80H)
Divide (Arg0, 0x05, Local0, Local1)
Subtract (Local1, 0x05, Local1)
Store (Local1, ^^^LPCB.EC0.BRTS)
}

Method (_BQC, 0, NotSerialized)
{
Store (0xC2, P80H)
Add (^^^LPCB.EC0.BRTS, 0x05, Local0)
Multiply (Local0, 0x05, Local1)
Return (Local1)
}
}
IMPORTANT EDIT: I placed the Device (PNLF) code in my DSDT alongside your device handler LCD1234, and GenericBrightness.kext in /E/E and I do get a change when moving the slider! Thank you! Used your updated kext in 1st post, not the one a few posts back.

However -- do you know as to:
(1) why I don't get keyboard brightness change, anymore? FN and the Up/Down keys for brightness don't work...
(2) Is it normal to have a slight delay for brightness to change once I move the slider? It's not really instant.
(3) Does the "screen dim" setting in Energy Saver options work, now, like in real MacBook's? Will the screen dim after a certain time?
(4) When booting verbose (-v) are we supposed to get any confirmation that the kext was loaded, etc.?

Thanks again!
Link to comment
Share on other sites

Don't write on local2. Use other variable like local5.

Hi ivik, I am so confused why we need to add local5? How about local6, local7, etc? And what does the variable local5 refer to?

Another question, for example

Method (GBQC, 0, NotSerialized)

, what does the number "0" meaning? Does it means the number of the arguments? If so, why there are so many local_x in this method?

I'm really interested in this, but right now it is a little difficult for me to fully understand it.

 

Thanks.

Link to comment
Share on other sites

@MacKonsti

 

1. Didn't try it from /E/E. It looks like it is working for you. Some users reported that it doesn't.

2. PNLF is needed for vanilla slider in display.pref because it loads backlight kext. If you don't wanna use apple slider, use NoSlider.zip driver and utilities from that archive.

3. 30 sec delay is only on NoSlider.zip archive. It is only on driver init.

4. Your brightness is controlled by EC (Store (Local1, ^^^LPCB.EC0.BRTS))

 

1. Hm.. don't know. They should work. Maybe they are somehow disabled from bios when brightness methods are called.

Maybe Store (0xC1, P80H) and Store (0xC2, P80H) disables keyboard.

2. Driver checks every sec in ioreg if brightness is changed. This is why there is delay. I could decrease that poll timer.

3. Dim screen on idle doesn't work. This is because values from ioreg are not not changed. I have pure dsdt method for changing brightness, It works then.

4. In dmesg there should be info about levels, min brightness and max. If apple slider works, and changing brightness works, then it is working. :help:

 

@weizh126

local5 is dummy variable. _BCQ shouldn't write to brightness register on brightness check. It could be local6, local7, but not local2. That variable is used for calculating current level.

 

If (LEqual (Local1, Local2)) local1=value from EC, local2=some value that it gets on that ifs.

 

Store (DerefOf (Index (BCLT, Local2)), Local3) => return value from BCLT (_BCL) table on index local2, write it to local3

and return that value (brightness percentage).

 

Yes, 0 arguments. Arguments are Arg0, Arg1...

localX are just local variables.

 

local0=while counter

local1=EC value

local2=some index?

local3=return value of current brightness in %

Link to comment
Share on other sites

@scorpy22.

Did you use graphics enabler in your boot plist? Have you tried setting it to "No" since using the device property injection from the MBP6,1?

For me, before I had the property injection that gives us native brightness I had to have graphicsenabler=yes. But now, I can delete graphics enabler and still get full QE/CI. So, taking those properties has had an unexpected extra effect......

Link to comment
Share on other sites

...

3. Dim screen on idle doesn't work. This is because values from ioreg are not not changed. I have pure dsdt method for changing brightness, It works then.

...

Hi Ivik,

could you please send you DSDT and explain which method you changed for brightness to work ?

 

thanks

s

Link to comment
Share on other sites

Hi there,

 

We just got this working on an HP Pavilion laptop DV8-1100 (VF836AV), which has an nVidia GT 320M. I had a HDMI cable connected to our HDTV for about 2 hours when GenericBrightness KPed upon disconnection of the HDMI cable.

 

I had done a couple of lid sleeps prior, screen saver came up a couple of times, and the brightness was adjusted a few times too. I wasn't using the HDTV anymore, so I first powered it off. After that, I pulled the HDMI cable out of the laptop and it immediately KPed. Unfortunately, the KP was most obscured by being blended with the desktop GUI, but I could see the section where it pointed to GenericBrightness.kext.

 

We are running OS X 10.6.5 and in full 64-bit mode.

Link to comment
Share on other sites

Was this extended desktop or only HDTV was working?

@swavek
This only works on intel.

OperationRegion (BRIT, SystemMemory, 0xD0261254, 0x04)
Field (BRIT, AnyAcc, Lock, Preserve)
{
LEV1, 16,
LEV2, 16
}

LEV1=brightness (value) slider
0xD0261254=bar0+0x00061254 (0x00061254 = offset for intel gma950 graphics)

Sync hardware brightness on boot from EC to slider under _REG method in EC:

If (LEqual (BRTS, Zero)) {Store (Zero, LEV1)}
If (LEqual (BRTS, One)) {Store (0x144A, LEV1)}
If (LEqual (BRTS, 0x2)) {Store (0x16DA, LEV1)}
If (LEqual (BRTS, 0x3)) {Store (0x19C6, LEV1)}
If (LEqual (BRTS, 0x4)) {Store (0x1CB4, LEV1)}
If (LEqual (BRTS, 0x5)) {Store (0x1FA0, LEV1)}
If (LEqual (BRTS, 0x6)) {Store (0x228E, LEV1)}
If (LEqual (BRTS, 0x7)) {Store (0x257A, LEV1)}
If (LEqual (BRTS, 0x8)) {Store (0x2866, LEV1)}
If (LEqual (BRTS, 0x9)) {Store (0x2B54, LEV1)}
If (LEqual (BRTS, 0xA)) {Store (0x2E40, LEV1)}
If (LEqual (BRTS, 0xB)) {Store (0x312C, LEV1)}
If (LEqual (BRTS, 0xC)) {Store (0x341A, LEV1)}
If (LEqual (BRTS, 0xD)) {Store (0x3706, LEV1)}
If (LEqual (BRTS, 0xE)) {Store (0x39F4, LEV1)}
If (LEqual (BRTS, 0xF)) {Store (0x512C, LEV1)}

For brightness poling in DSDT i use slice acpi monitor which polls/reads temperature and also checks brightness:
Method (SMCA, 0, NotSerialized) //CPU heatsink
{
If (LNotEqual (OLDB,LEV1))
{
Store(LEV1, OLDB)
If (LGreater (LEV1, 0x3CE0)) {Store (0xF, BRTS)} //maksimum
Else
{
If (LGreater (LEV1, 0x39F4)) {Store (0xE, BRTS)}
Else
{
If (LGreater (LEV1, 0x3706)) {Store (0xD, BRTS)}
Else
{
If (LGreater (LEV1, 0x341A)) {Store (0xC, BRTS)}
Else
{
If (LGreater (LEV1, 0x312C)) {Store (0xB, BRTS)}
Else
{
If (LGreater (LEV1, 0x2E40)) {Store (0xA, BRTS)}
Else
{
If (LGreater (LEV1, 0x2B54)) {Store (0x9, BRTS)}
Else
{
If (LGreater (LEV1, 0x2866)) {Store (0x8, BRTS)}
Else
{
If (LGreater (LEV1, 0x257A)) {Store (0x7, BRTS)}
Else
{
If (LGreater (LEV1, 0x228E)) {Store (0x6, BRTS)}
Else
{
If (LGreater (LEV1, 0x1FA0)) {Store (0x5, BRTS)}
Else
{
If (LGreater (LEV1, 0x1CB4)) {Store (0x4, BRTS)}
Else
{
If (LGreater (LEV1, 0x19C6)) {Store (0x3, BRTS)}
Else
{
If (LGreater (LEV1, 0x16DA)) {Store (0x2, BRTS)}
Else
{
If (LGreater (LEV1, 0x144A)) {Store (0x1, BRTS)}
Else
{
Store (0x0, BRTS)
//Store (0x11, ^^PCI0.LPCB.EC0.BRTS)
}
}
}
}
}
}
}
}
}
}
}
}
}
}

}
}



Return (CTMP)
}

BRTS is my brightness register with 16 levels: 0-F.
OLDB is variable for storing old brightness, so method doesn't call that ifs if brightness is not changed. (when LEV1 equals to OLDB=>dont write ro EC.BRTS)
Link to comment
Share on other sites

Dear ivik thanks for your post, can you please also share your DSDT so that I can understand how it is now structured, after your changes? Does the auto-screen-dim kick in after some inactivity in general or does OSX do that by itself?

Thank you!

Link to comment
Share on other sites

Hi there,

 

We just got this working on an HP Pavilion laptop DV8-1100 (VF836AV), which has an nVidia GT 320M. I had a HDMI cable connected to our HDTV for about 2 hours when GenericBrightness KPed upon disconnection of the HDMI cable.

 

I had done a couple of lid sleeps prior, screen saver came up a couple of times, and the brightness was adjusted a few times too. I wasn't using the HDTV anymore, so I first powered it off. After that, I pulled the HDMI cable out of the laptop and it immediately KPed. Unfortunately, the KP was most obscured by being blended with the desktop GUI, but I could see the section where it pointed to GenericBrightness.kext.

 

We are running OS X 10.6.5 and in full 64-bit mode.

 

This happened when on extended desktop. Here is a screen shot when inserting the HDMI cable:

 

post-81851-1293698313_thumb.jpg

 

So this happens right away if HDMI cable is pulled or inserted, and also at various times, such as when on web sites with heavy graphics, such as when on Disney's official TRON Legacy web site.

 

There is some talk that this could be caused by our AppleHDA.kext we are using. We are using an older version: 1.8.7f1. We are also having to use a legacy kernel due to HP's Insyde BIOS.

 

Our thread is here with all info on our machines:

 

http://www.insanelymac.com/forum/index.php?showtopic=221653

Link to comment
Share on other sites

 Share

×
×
  • Create New...