[NVAC] iMac9,1 effective backlight brightness range changes after S3
@jefferym
Submitted by Jeffery Miller Assigned to Nouveau Project
Description
Created attachment 127900
dmesg output after the resume with some nouveau trace options
I have an iMac 9,1 where the behaviour of the backlight of the built in screen works differently between the first boot and after a suspend to ram.
It appears to be darker at lower values before a suspend than after.
kernel: 4.8.6-300.fc25.x86_64
lspci adapter: VGA adapter NVIDIA Corporation C79 [GeForce 9400] [10de:0867]
DMI: Apple Inc. iMac9,1/Mac-F2218EA9
I've been booting in EFI mode.
I do not know of a regression. I've only tried 4.4 and this 4.8 kernels.
I've observed this with X running but I've been testing this without starting a graphical environment.
I've been testing by setting setting backlight values via the /sys/backlight/nv_backlight/brightness interface.
Before a suspend I can set values such as 40, 70, 100 and the brightness seems to be reasonable on the screen.
I then suspend to ram via the /sys/power/state interface.
Upon resuming the backlight appears to be at 100 percent. If I set the brightness to values such as 30 and 60 the screen remains dark. It is barely visible as a flicker at 70. At 100 it is visible.
I've observed that the value of NV50_PDISP_SOR_PWM_DIV (0x0061c080) is 0x1 after a boot but is set to 0x84 after a resume.
It appears there's an init script in the bios dump which sets it to the value of 0x84. I have confirmed if I use the nouveau option nouveau.config=NvForcePost=1 that the behavior after booting is the same as after a resume. The value of 0x61c080 is 0x84.
If I nvapoke 0x061c080 0x1
after a resume the backlight seems to work fairly well. I created patch to test this. I expect it isn't the proper solution.
I'm attaching the dmesg which includes a resume with the nouveau driver.
I'll also attach the vbios dump, acpidump, dmidecode, lspci,
I've gathered an mmiotrace of the binary driver as it sets a few brightness values as well.
Attachment 127900, "dmesg output after the resume with some nouveau trace options":
dmesg_resume.out