[Intel-gfx] How to work around zero-initialized BLC_PWM_PCH_CTL2?
Takashi Iwai
tiwai at suse.de
Fri Aug 30 12:05:00 CEST 2013
Hi Jani,
At Thu, 29 Aug 2013 14:58:23 +0300,
Jani Nikula wrote:
>
>
> Hi Takashi -
>
> On Thu, 29 Aug 2013, Takashi Iwai <tiwai at suse.de> wrote:
> > a new laptop model we've been struggling has some strange hardware
> > configuration. BIOS turns off backlight and skips its initialization
> > when the machine is booted with the lid closed. This leaves
> > BLC_PWM_PCH_CTL2 and other registers uninitialized. Because a proper
> > max brightness value can't be obtained from this register, i915 driver
> > doesn't create the own backlight control any more. It results in the
> > permanent blank screen even after the lid is opened.
> >
> > Actually, the only missing piece is the initial BLC_PWM_PCH_CTL2
> > value. If I overwrite it via intel_reg_write before loading i915
> > module, everything works fine.
> >
> > Now I wonder whether we can get this max brightness value from
> > somewhere else. Is it defined in VBT or anywhere else persistent?
>
> Please run tools/intel_bios_reader from intel-gpu-tools, and post the
> results. If that fails, please attach hexdump of
> /sys/kernel/debug/dri/0/i915_opregion. The PWM value should be in the
> VBT, and we could use that as a fallback. If the value makes sense, that
> is.
Attached below. The tarball contains the boot cases where the lid is
opened and closed. The output of intel_bios_dumper couldn't be read
when the lid is closed, as it seems.
In anyway, I see no obvious value (the max brightness 0x3a9) in
intel_bios_reader output.
> Additionally we could enable the PWM request from ASLE. It would be
> interesting to see if there are PWM requests, and with what values, if
> you enable drm.debug=0xe and do:
> diff --git a/drivers/gpu/drm/i915/intel_opregion.c b/drivers/gpu/drm/i915/intel_opregion.c
> index 53a82ea..2b379ec 100644
> --- a/drivers/gpu/drm/i915/intel_opregion.c
> +++ b/drivers/gpu/drm/i915/intel_opregion.c
> @@ -390,6 +390,7 @@ static u32 asle_set_als_illum(struct drm_device *dev, u32 alsi)
>
> static u32 asle_set_pwm_freq(struct drm_device *dev, u32 pfmb)
> {
> + DRM_DEBUG_DRIVER("pfmb = 0x%08x\n", pfmb);
> DRM_DEBUG_DRIVER("PWM freq is not supported\n");
> return ASLE_PWM_FREQ_FAILED;
> }
> @@ -618,7 +619,8 @@ void intel_opregion_init(struct drm_device *dev)
> }
>
> if (opregion->asle) {
> - iowrite32(ASLE_TCHE_BLC_EN, &opregion->asle->tche);
> + iowrite32(ASLE_TCHE_BLC_EN | ASLE_TCHE_PFMB_EN,
> + &opregion->asle->tche);
> iowrite32(ASLE_ARDY_READY, &opregion->asle->ardy);
> }
> }
>
> Adding support for this is a bit tedious, though, as the PWM value has
> been set as the max for the backlight device. It's probably not a good
> idea to change the max on the fly in the user space facing interface, so
> scaling would be required.
With the patch, no useful information showed up, unfortunately.
> Note to self, we need to take machines like [1] into account too.
Yep, we can't take some value blindly.
thanks,
Takashi
>
>
> BR,
> Jani.
>
>
> [1] http://lkml.kernel.org/r/1347627426-3813-1-git-send-email-grant.likely@secretlab.ca
>
---
-------------- next part --------------
A non-text attachment was scrubbed...
Name: vbios-opregion.tar.bz2
Type: application/octet-stream
Size: 88423 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/intel-gfx/attachments/20130830/52598b7b/attachment.obj>
More information about the Intel-gfx
mailing list