[Intel-gfx] [PATCH 11.5/13] drm/i915: remove QUIRK_NO_PCH_PWM_ENABLE
Imre Deak
imre.deak at intel.com
Thu Nov 14 11:50:29 CET 2013
On Thu, 2013-11-14 at 12:14 +0200, Jani Nikula wrote:
> The quirk was added as what I'd say was a stopgap measure in
>
> commit e85843bec6c2ea7c10ec61238396891cc2b753a9
> Author: Kamal Mostafa <kamal at canonical.com>
> Date: Fri Jul 19 15:02:01 2013 -0700
>
> drm/i915: quirk no PCH_PWM_ENABLE for Dell XPS13 backlight
>
> without really digging into what was going on.
>
> Also, as mentioned in the related bug [1], having the quirk regressed
> some of the machines it was supposed to fix to begin with, and there
> were patches posted to disable the quirk on such machines [2]!
>
> The fact is, we do need the BLM_PCH_PWM_ENABLE bit set to have
> backlight. With the quirk, we've relied on BIOS to have set it, and our
> save/restore code to retain it. With the full backlight setup at enable,
> we have no place for things that rely on previous state.
>
> With the per platform hooks, we've also made a change in the PCH
> platform enable order: setting the backlight duty cycle between CPU and
> PCH PWM enable. Some experimenting and
>
> commit 770c12312ad617172b1a65b911d3e6564fc5aca8
> Author: Takashi Iwai <tiwai at suse.de>
> Date: Sat Aug 11 08:56:42 2012 +0200
>
> drm/i915: Fix blank panel at reopening lid
>
> indicate that we can't set the backlight before enabling CPU PWM; the
> value just won't stick. But AFAICT we should do it before enabling the
> PCH PWM.
>
> Finally, any fallout we should fix properly, preferrably without quirks,
> and absolutely without quirks that rely on existing state. With the per
> platform hooks have much more flexibility to adjust the sequence as
> required by platforms.
>
> [1] https://bugzilla.kernel.org/show_bug.cgi?id=47941
> [2] http://lkml.kernel.org/r/1378229848-29113-1-git-send-email-kamal@canonical.com
>
> Signed-off-by: Jani Nikula <jani.nikula at intel.com>
Thanks for the explanation:
Reviewed-by: Imre Deak <imre.deak at intel.com>
> ---
> drivers/gpu/drm/i915/i915_drv.h | 1 -
> drivers/gpu/drm/i915/intel_display.c | 16 ----------------
> drivers/gpu/drm/i915/intel_panel.c | 4 ----
> 3 files changed, 21 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index c243b8e..e726ab9 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -717,7 +717,6 @@ enum intel_sbi_destination {
> #define QUIRK_PIPEA_FORCE (1<<0)
> #define QUIRK_LVDS_SSC_DISABLE (1<<1)
> #define QUIRK_INVERT_BRIGHTNESS (1<<2)
> -#define QUIRK_NO_PCH_PWM_ENABLE (1<<3)
>
> struct intel_fbdev;
> struct intel_fbc_work;
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 25ef080..b9f763c 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -10456,17 +10456,6 @@ static void quirk_invert_brightness(struct drm_device *dev)
> DRM_INFO("applying inverted panel brightness quirk\n");
> }
>
> -/*
> - * Some machines (Dell XPS13) suffer broken backlight controls if
> - * BLM_PCH_PWM_ENABLE is set.
> - */
> -static void quirk_no_pcm_pwm_enable(struct drm_device *dev)
> -{
> - struct drm_i915_private *dev_priv = dev->dev_private;
> - dev_priv->quirks |= QUIRK_NO_PCH_PWM_ENABLE;
> - DRM_INFO("applying no-PCH_PWM_ENABLE quirk\n");
> -}
> -
> struct intel_quirk {
> int device;
> int subsystem_vendor;
> @@ -10526,11 +10515,6 @@ static struct intel_quirk intel_quirks[] = {
> * seem to use inverted backlight PWM.
> */
> { 0x2a42, 0x1025, PCI_ANY_ID, quirk_invert_brightness },
> -
> - /* Dell XPS13 HD Sandy Bridge */
> - { 0x0116, 0x1028, 0x052e, quirk_no_pcm_pwm_enable },
> - /* Dell XPS13 HD and XPS13 FHD Ivy Bridge */
> - { 0x0166, 0x1028, 0x058b, quirk_no_pcm_pwm_enable },
> };
>
> static void intel_init_quirks(struct drm_device *dev)
> diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
> index 0986472..da088e3 100644
> --- a/drivers/gpu/drm/i915/intel_panel.c
> +++ b/drivers/gpu/drm/i915/intel_panel.c
> @@ -749,10 +749,6 @@ static void pch_enable_backlight(struct intel_connector *connector)
> pch_ctl2 = panel->backlight.max << 16;
> I915_WRITE(BLC_PWM_PCH_CTL2, pch_ctl2);
>
> - /* XXX: transitional */
> - if (dev_priv->quirks & QUIRK_NO_PCH_PWM_ENABLE)
> - return;
> -
> pch_ctl1 = 0;
> if (panel->backlight.active_low_pwm)
> pch_ctl1 |= BLM_PCH_POLARITY;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 490 bytes
Desc: This is a digitally signed message part
URL: <http://lists.freedesktop.org/archives/intel-gfx/attachments/20131114/fd3a3c56/attachment.sig>
More information about the Intel-gfx
mailing list