Re: [Intel-gfx] [PATCH for stable 3.14 only 1/1] drm/i915: restore QUIRK_NO_PCH_PWM_ENABLE

2014-04-29 Thread Kamal Mostafa
On Mon, 2014-04-28 at 13:10 +0300, Jani Nikula wrote:
> This reverts the bisected regressing
> 
> commit bc0bb9fd1c7810407ab810d204bbaecb255fddde
> Author: Jani Nikula 
> Date:   Thu Nov 14 12:14:29 2013 +0200
> 
> drm/i915: remove QUIRK_NO_PCH_PWM_ENABLE
> 
> restoring QUIRK_NO_PCH_PWM_ENABLE for a couple of Dell XPS models which
> broke in 3.14.


Confirmed: This patch (restore QUIRK_NO_PCH_PWM_ENABLE) on top of 3.14.2
does fix it again for the two affected models.

Tested-by: Kamal Mostafa 

Thanks, Jani!

 -Kamal


> There is no such revert upstream. We have root caused and fixed the
> issue upstream, without the quirk, with:
> 
> commit 39fbc9c8f6765959b55e0b127dd5c57df5a47d67
> Author: Jani Nikula 
> Date:   Wed Apr 9 11:22:06 2014 +0300
> 
> drm/i915: check VBT for supported backlight type
> 
> and
> 
> commit c675949ec58ca50d5a3ae3c757892f1560f6e896
> Author: Jani Nikula 
> Date:   Wed Apr 9 11:31:37 2014 +0300
> 
> drm/i915: do not setup backlight if not available according to VBT
> 
> While the commits are within the stable rules otherwise, and fix more
> machines than just the regressed Dell XPS models, we feel backporting
> them to stable may be too risky. The revert is limited to the broken
> machines, and the impact should be effectively the same as what the
> upstream commits do more generally.
> 
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=76276
> Reported-by: Romain Francoise 
> CC: Kamal Mostafa 
> CC: Daniel Vetter 
> CC: sta...@vger.kernel.org (3.14 only)
> Signed-off-by: Jani Nikula 
> ---
>  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 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index df77e20e3c3d..697f2150a997 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -734,6 +734,7 @@ 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 9b8a7c7ea7fc..963639d9049b 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -10771,6 +10771,17 @@ 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;
> @@ -10839,6 +10850,11 @@ static struct intel_quirk intel_quirks[] = {
>  
>   /* Acer Aspire 4736Z */
>   { 0x2a42, 0x1025, 0x0260, 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 079ea38f14d9..9f1d7a9300e8 100644
> --- a/drivers/gpu/drm/i915/intel_panel.c
> +++ b/drivers/gpu/drm/i915/intel_panel.c
> @@ -671,6 +671,10 @@ 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;



signature.asc
Description: This is a digitally signed message part
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 2/2] drm/i915: do not setup backlight if not available according to VBT

2014-04-09 Thread Kamal Mostafa
On Wed, 2014-04-09 at 13:35 +0300, Jani Nikula wrote:
> Some machines use an external EC for controlling the backlight. Info
> about this is present in the VBT. Do not setup native backlight control
> if no PWM backlight is available or supported according to VBT. The
> acpi_backlight interface appears to work for the EC control.
> 
> In most cases there has been no harm done, but it looks like there are
> machines out there that have both an EC and our PWM line connected to
> the same wire. This, obviously, does not end well.
> 
> This should fix the regression caused by
> commit bc0bb9fd1c7810407ab810d204bbaecb255fddde
> Author: Jani Nikula 
> Date:   Thu Nov 14 12:14:29 2013 +0200
> 
> drm/i915: remove QUIRK_NO_PCH_PWM_ENABLE


Works great!  These patches do indeed re-fix backlight control in v3.14,
on both of the two XPS13 models that had needed the NO_PCH_PWM_ENABLE
quirk.

Tested-by: Kamal Mostafa 

Thanks Jani!

 -Kamal


> AFAICT the quirk removed by the above commit effectively resulted in
> i915 not driving the backlight PWM output, thus not messing things up.
> 
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=76276
> Reference: https://bugzilla.kernel.org/show_bug.cgi?id=47941
> CC: Aaron Lu 
> CC: Kamal Mostafa 
> CC: Eric Griffith 
> CC: Kent Baxley 
> CC: sta...@vger.kernel.org [v3.14+]
> Signed-off-by: Jani Nikula 
> ---
>  drivers/gpu/drm/i915/intel_panel.c |5 +
>  1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/intel_panel.c 
> b/drivers/gpu/drm/i915/intel_panel.c
> index cb058408c70e..0eead16aeda7 100644
> --- a/drivers/gpu/drm/i915/intel_panel.c
> +++ b/drivers/gpu/drm/i915/intel_panel.c
> @@ -1065,6 +1065,11 @@ int intel_panel_setup_backlight(struct drm_connector 
> *connector)
>   unsigned long flags;
>   int ret;
>  
> + if (!dev_priv->vbt.backlight.present) {
> + DRM_DEBUG_KMS("native backlight control not available per 
> VBT\n");
> + return 0;
> + }
> +
>   /* set level and max in panel struct */
>   spin_lock_irqsave(&dev_priv->backlight_lock, flags);
>   ret = dev_priv->display.setup_backlight(intel_connector);



signature.asc
Description: This is a digitally signed message part
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 15/19] drm/i915: i915.quirks_set/quirks_mask overrides dmi match

2013-09-17 Thread Kamal Mostafa
On Wed, 2013-09-11 at 11:21 +0300, Jani Nikula wrote:
> On Wed, 11 Sep 2013, Rodrigo Vivi  wrote:
> > From: Kamal Mostafa 
> >
> > Boot params quirks_set and quirks_mask allow the user to enable or
> > inhibit any dmi-matched quirks, overriding the dmi match table.  Examples:
> >
> >   i915.quirks_set=0x2   - enables QUIRK_LVDS_SSC_DISABLE
> >   i915.quirks_set=0x8   - enables QUIRK_NO_PCH_PWM_ENABLE
> >   i915.quirks_mask=0x8  - disables QUIRK_NO_PCH_PWM_ENABLE
> >   i915.quirks_mask=0xFF - disables all quirks


Thanks for reviewing this, Jani.  I hope you're open to a little more
debate on the topic...

> While I admit this can be used to workaround issues with certain
> machines, this is a hack that exposes an implementation detail to the
> userspace, and carves it into the stone. Any user of it would have to
> look at the kernel source to make a smart choice of parameters; more
> likely forums would start filling with tips what to set.

All of the above is true of all boot params.  Why is that a problem?

Consider that if this quirks_set/mask feature were available:

 - Users and developers could trivially check whether any future machine
needs to be added to any of the existing dmi-match quirk tables.
Currently we have to build a test kernel and get the user to install it,
but this would allow us to just ask "Does i915.quirks_set=0x2 fix it?".
That feature alone makes me want quirks_set/mask.

 - We would unblock some black-screen-on-boot users who currently have
no other solution.  And we would unblock future users who face future
dmi/quirk-mismatch issues (of which I am sure there will be more).

 - The existing i915.invert_brightness override param would not have
been needed.  (It is worth nothing also that my previously proposed
i915.disable_pch_pwm override patch was rejected, even though its
implementation is identical to invert_brightness.)


> So NAK from me.
> 
> That said, I think we still have a few stones unturned wrt backlight and
> what BIOS does in UEFI mode.

I would be thrilled to see the UEFI/BIOS/backlight issue get fixed, but
in my opinion i915.quirks_set/mask would be very useful (a) anyway, and
(b) immediately.

 -Kamal


> 
> Cheers,
> Jani.
> 
> >
> > Signed-off-by: Kamal Mostafa 
> > Cc: sta...@vger.kernel.org
> > Signed-off-by: Rodrigo Vivi 
> > ---
> >  drivers/gpu/drm/i915/intel_display.c | 15 +++
> >  1 file changed, 15 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/i915/intel_display.c 
> > b/drivers/gpu/drm/i915/intel_display.c
> > index 1eabca3..12607f2 100644
> > --- a/drivers/gpu/drm/i915/intel_display.c
> > +++ b/drivers/gpu/drm/i915/intel_display.c
> > @@ -10043,8 +10043,19 @@ static struct intel_quirk intel_quirks[] = {
> > { 0x0166, 0x1028, 0x058b, quirk_no_pcm_pwm_enable },
> >  };
> >  
> > +unsigned long i915_quirks_set __read_mostly = 0;
> > +module_param_named(quirks_set, i915_quirks_set, ulong, 0600);
> > +MODULE_PARM_DESC(quirks_set,
> > +   "Enable specified quirks bits.");
> > +
> > +unsigned long i915_quirks_mask __read_mostly = 0;
> > +module_param_named(quirks_mask, i915_quirks_mask, ulong, 0600);
> > +MODULE_PARM_DESC(quirks_mask,
> > +   "Disable specified quirks bits (override dmi match).");
> > +
> >  static void intel_init_quirks(struct drm_device *dev)
> >  {
> > +   struct drm_i915_private *dev_priv = dev->dev_private;
> > struct pci_dev *d = dev->pdev;
> > int i;
> >  
> > @@ -10062,6 +10073,10 @@ static void intel_init_quirks(struct drm_device 
> > *dev)
> > if (dmi_check_system(*intel_dmi_quirks[i].dmi_id_list) != 0)
> > intel_dmi_quirks[i].hook(dev);
> > }
> > +
> > +   /* handle user-specified quirks overrides */
> > +   dev_priv->quirks |= i915_quirks_set;
> > +   dev_priv->quirks &= ~i915_quirks_mask;
> >  }
> >  
> >  /* Disable the VGA plane that we never use */
> > -- 
> > 1.8.1.4
> >
> > ___
> > Intel-gfx mailing list
> > Intel-gfx@lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/intel-gfx
> 



signature.asc
Description: This is a digitally signed message part
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH] drm/i915: i915.quirks_set/quirks_mask overrides dmi match

2013-09-04 Thread Kamal Mostafa
Boot params quirks_set and quirks_mask allow the user to enable or
inhibit any dmi-matched quirks, overriding the dmi match table.  Examples:

  i915.quirks_set=0x2   - enables QUIRK_LVDS_SSC_DISABLE
  i915.quirks_set=0x8   - enables QUIRK_NO_PCH_PWM_ENABLE
  i915.quirks_mask=0x8  - disables QUIRK_NO_PCH_PWM_ENABLE
  i915.quirks_mask=0xFF - disables all quirks

Signed-off-by: Kamal Mostafa 
Cc: sta...@vger.kernel.org
---
 drivers/gpu/drm/i915/intel_display.c | 15 +++
 1 file changed, 15 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_display.c 
b/drivers/gpu/drm/i915/intel_display.c
index d88057e..a6af11c 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -10028,8 +10028,19 @@ static struct intel_quirk intel_quirks[] = {
{ 0x0166, 0x1028, 0x058b, quirk_no_pcm_pwm_enable },
 };
 
+unsigned long i915_quirks_set __read_mostly = 0;
+module_param_named(quirks_set, i915_quirks_set, ulong, 0600);
+MODULE_PARM_DESC(quirks_set,
+   "Enable specified quirks bits.");
+
+unsigned long i915_quirks_mask __read_mostly = 0;
+module_param_named(quirks_mask, i915_quirks_mask, ulong, 0600);
+MODULE_PARM_DESC(quirks_mask,
+   "Disable specified quirks bits (override dmi match).");
+
 static void intel_init_quirks(struct drm_device *dev)
 {
+   struct drm_i915_private *dev_priv = dev->dev_private;
struct pci_dev *d = dev->pdev;
int i;
 
@@ -10047,6 +10058,10 @@ static void intel_init_quirks(struct drm_device *dev)
if (dmi_check_system(*intel_dmi_quirks[i].dmi_id_list) != 0)
intel_dmi_quirks[i].hook(dev);
}
+
+   /* handle user-specified quirks overrides */
+   dev_priv->quirks |= i915_quirks_set;
+   dev_priv->quirks &= ~i915_quirks_mask;
 }
 
 /* Disable the VGA plane that we never use */
-- 
1.8.1.2

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] drm/i915: i915.disable_pch_pwm overrides PCH_PWM_ENABLE quirk

2013-09-03 Thread Kamal Mostafa
On Tue, 2013-09-03 at 19:50 +0200, Daniel Vetter wrote:
> On Tue, Sep 3, 2013 at 7:37 PM, Kamal Mostafa  wrote:
> > BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=47941
> >
> > Some BIOS configurations of Dell XPS13 are adversely affected by e85843b
> > ("drm/i915: quirk no PCH_PWM_ENABLE for Dell XPS13 backlight") so provide a
> > boot param to inhibit the quirk, or force it on.
> >
> > i915.disable_pch_pwm can be set to
> >  -1: auto (default; allows the disabling of pch_pwm by dmi quirk table 
> > match)
> >   0: inhibits the disabling of pch_pwm (overrides dmi quirk table match)
> >   1: forces the disabling of pch_pwm
> >
> > Signed-off-by: Kamal Mostafa 
> 
> Nack. Piling quirk over quirk isn't the right approach

I understand your reluctance, but this isn't actually any new quirk
functionality, just a way to manually enable/disable the original
PCH_PWM_ENABLE quirk.  I think this is the least crazy approach,
because:

Most XPS13 configurations do need the quirk (and maybe some other yet to
be identified machines also), but dmi matching cannot discern the one
particular XPS13 configuration ("Ivy Bridge booting UEFI mode without
Legacy Option ROM") that is adversely affected by it.  We could
alternately consider trying to detect that specific configuration with
code in i915, but that seemed a lot crazier (and less generally useful)
than just providing an override switch for rare or yet-to-be-discovered
configurations.

Hmmm.  What if we had a pair of boot params "i915.quirks_set" and
"i915.quirks_mask" boot params that could be used to manually set or
mask _all_ the bits in dev_priv->quirks?  Such params would surely come
in handy for cases just like this one, and would be useful for testing
future machines easily.  (Would you take that if I submitted it?)


>  and I think I
> should just revert the pch_pwm enable quirk again.
> -Daniel

But reverting the original quirk would break ALL the XPS13
configurations, which nobody is requesting.  Please don't revert the
quirk.  At most, you might want to disable the Ivy Bridge dmi match (but
I don't recommend this either):

/* Dell XPS13 HD and XPS13 FHD Ivy Bridge */
{ 0x0166, 0x1028, 0x058b, quirk_no_pcm_pwm_enable },

 -Kamal


signature.asc
Description: This is a digitally signed message part
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH] drm/i915: i915.disable_pch_pwm overrides PCH_PWM_ENABLE quirk

2013-09-03 Thread Kamal Mostafa
BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=47941

Some BIOS configurations of Dell XPS13 are adversely affected by e85843b
("drm/i915: quirk no PCH_PWM_ENABLE for Dell XPS13 backlight") so provide a
boot param to inhibit the quirk, or force it on.

i915.disable_pch_pwm can be set to
 -1: auto (default; allows the disabling of pch_pwm by dmi quirk table match)
  0: inhibits the disabling of pch_pwm (overrides dmi quirk table match)
  1: forces the disabling of pch_pwm

Signed-off-by: Kamal Mostafa 
---
 drivers/gpu/drm/i915/i915_drv.c  |  4 
 drivers/gpu/drm/i915/i915_drv.h  |  1 +
 drivers/gpu/drm/i915/intel_display.c | 11 ---
 3 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 72e2be7..fee05df 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -154,6 +154,10 @@ module_param_named(prefault_disable, 
i915_prefault_disable, bool, 0600);
 MODULE_PARM_DESC(prefault_disable,
"Disable page prefaulting for pread/pwrite/reloc 
(default:false). For developers only.");
 
+int i915_disable_pch_pwm __read_mostly = -1;
+module_param_named(disable_pch_pwm, i915_disable_pch_pwm, int, 0600);
+MODULE_PARM_DESC(disable_pch_pwm, "disable PCH_PWM (default: -1 (auto))");
+
 static struct drm_driver driver;
 extern int intel_agp_enabled;
 
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 769c138..e6f2a34 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -1726,6 +1726,7 @@ extern bool i915_fastboot __read_mostly;
 extern int i915_enable_pc8 __read_mostly;
 extern int i915_pc8_timeout __read_mostly;
 extern bool i915_prefault_disable __read_mostly;
+extern int i915_disable_pch_pwm __read_mostly;
 
 extern int i915_suspend(struct drm_device *dev, pm_message_t state);
 extern int i915_resume(struct drm_device *dev);
diff --git a/drivers/gpu/drm/i915/intel_display.c 
b/drivers/gpu/drm/i915/intel_display.c
index 30e5946..86fa722 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -9948,9 +9948,8 @@ static void quirk_invert_brightness(struct drm_device 
*dev)
  */
 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");
+   if (i915_disable_pch_pwm < 0)
+   i915_disable_pch_pwm = 1;
 }
 
 struct intel_quirk {
@@ -10048,6 +10047,12 @@ static void intel_init_quirks(struct drm_device *dev)
if (dmi_check_system(*intel_dmi_quirks[i].dmi_id_list) != 0)
intel_dmi_quirks[i].hook(dev);
}
+
+   if (i915_disable_pch_pwm == 1) {
+   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");
+   }
 }
 
 /* Disable the VGA plane that we never use */
-- 
1.8.1.2

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] Linux 3.11-rc2 (acpi backlight, revert)

2013-07-25 Thread Kamal Mostafa
On Thu, 2013-07-25 at 16:46 +0200, Daniel Vetter wrote:
> On Thu, Jul 25, 2013 at 07:43:17AM -0700, Kamal Mostafa wrote:
> > On Thu, 2013-07-25 at 15:00 +0200, Rafael J. Wysocki wrote:
> > > On Monday, July 22, 2013 09:54:21 PM Rafael J. Wysocki wrote:
> > > > On Monday, July 22, 2013 11:11:54 AM Linus Torvalds wrote:
> > > > > On Mon, Jul 22, 2013 at 6:02 AM, Rafael J. Wysocki  
> > > > > wrote:
> > > > > >
> > > > > > Linus, do you want me to send a pull request reverting 8c5bd7a and 
> > > > > > efaa14c?
> > > > > 
> > > > > Yes, but let's wait a while. Not because I think we'll fix the problem
> > > > > (hey, miracles might happen), but because I think it would be useful
> > > > > to couple the reverts with information about the particular machines
> > > > > that broke (and the people who reported it). So that when we
> > > > > inevitably try again, we can perhaps get some testing effort with
> > > > > those machines/people.
> > > > > 
> > > > > It doesn't seem to be a show-stopped for a large number of people, so
> > > > > there's no huge hurry. I'd suggest doing the revert just in time for
> > > > > rc3, but waiting until then to gather info about people who see
> > > > > breakage.
> > > > > 
> > > > > Sound like a plan?
> > > > 
> > > > Yes, it does.
> > > 
> > > OK, time to revert I guess.
> > > 
> > > James, Kamal, Steven, Jörg, Martin, Kalle, please check if the apppended 
> > > patch
> > > fixes the backlight for you.
> > 
> > Yes, this revert patch does re-enable backlight control for the affected
> > Dell XPS13 models.
> 
> Are these the same models that neeed the special quirk to not write
> PCH_PWM_ENABLE? Or do they need both?

Hi Daniel-

Yes, these are the same models (Dell XPS13) that need the PCH_PWM_ENABLE
quirk, but that's not related to this ACPI problem...

All of the XPS13 models still need the PCH_PWM_ENABLE quirk which is now
present in mainline (e85843b "drm/i915: quirk no PCH_PWM_ENABLE for Dell
XPS13 backlight").

Separately from that, some of the XPS13 models were _also_ adversely
affected (as were some other machines) by the ACPI changes that are
about to be reverted.

 -Kamal



signature.asc
Description: This is a digitally signed message part
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] Linux 3.11-rc2 (acpi backlight, revert)

2013-07-25 Thread Kamal Mostafa
On Thu, 2013-07-25 at 15:00 +0200, Rafael J. Wysocki wrote:
> On Monday, July 22, 2013 09:54:21 PM Rafael J. Wysocki wrote:
> > On Monday, July 22, 2013 11:11:54 AM Linus Torvalds wrote:
> > > On Mon, Jul 22, 2013 at 6:02 AM, Rafael J. Wysocki  wrote:
> > > >
> > > > Linus, do you want me to send a pull request reverting 8c5bd7a and 
> > > > efaa14c?
> > > 
> > > Yes, but let's wait a while. Not because I think we'll fix the problem
> > > (hey, miracles might happen), but because I think it would be useful
> > > to couple the reverts with information about the particular machines
> > > that broke (and the people who reported it). So that when we
> > > inevitably try again, we can perhaps get some testing effort with
> > > those machines/people.
> > > 
> > > It doesn't seem to be a show-stopped for a large number of people, so
> > > there's no huge hurry. I'd suggest doing the revert just in time for
> > > rc3, but waiting until then to gather info about people who see
> > > breakage.
> > > 
> > > Sound like a plan?
> > 
> > Yes, it does.
> 
> OK, time to revert I guess.
> 
> James, Kamal, Steven, Jörg, Martin, Kalle, please check if the apppended patch
> fixes the backlight for you.

Yes, this revert patch does re-enable backlight control for the affected
Dell XPS13 models.

 -Kamal


> Aaron, please double check if acpi_video_backlight_quirks() will still work as
> needed.
> 
> Thanks,
> Rafael
> 
> 
> ---
> From: Rafael J. Wysocki 
> Subject: Revert "ACPI / video / i915: No ACPI backlight if firmware expects 
> Windows 8"
> 
> We attempted to address a regression introduced by commit a57f7f9
> (ACPICA: Add Windows8/Server2012 string for _OSI method.) after which
> ACPI video backlight support doesn't work on a number of systems,
> because the relevant AML methods in the ACPI tables in their BIOSes
> become useless after the BIOS has been told that the OS is compatible
> with Windows 8.  That problem is tracked by the bug entry at:
> 
> https://bugzilla.kernel.org/show_bug.cgi?id=51231
> 
> Commit 8c5bd7a (ACPI / video / i915: No ACPI backlight if firmware
> expects Windows 8) introduced for this purpose essentially prevented
> the ACPI backlight support from being used if the BIOS had been told
> that the OS was compatible with Windows 8 and the i915 driver was
> loaded, in which case the backlight would always be handled by i915.
> Unfortunately, however, that turned out to cause problems with
> backlight to appear on multiple systems with symptoms indicating that
> i915 was unable to control the backlight on those systems as
> expected.
> 
> For this reason, revert commit 8c5bd7a, but leave the function
> acpi_video_backlight_quirks() introduced by it, because another
> commit on top of it uses that function.
> 
> References: https://lkml.org/lkml/2013/7/21/119
> References: https://lkml.org/lkml/2013/7/22/261
> References: https://lkml.org/lkml/2013/7/23/429
> References: https://lkml.org/lkml/2013/7/23/459
> References: https://lkml.org/lkml/2013/7/23/81
> References: https://lkml.org/lkml/2013/7/24/27
> Reported-by: James Hogan 
> Reported-by: Steven Newbury 
> Reported-by: Kamal Mostafa 
> Reported-by: Martin Steigerwald 
> Reported-by: Jörg Otte 
> Reported-by: Kalle Valo 
> Signed-off-by: Rafael J. Wysocki 
> ---
>  drivers/acpi/internal.h |2 -
>  drivers/acpi/video.c|   67 
> 
>  drivers/acpi/video_detect.c |   15 
>  drivers/gpu/drm/i915/i915_dma.c |2 -
>  include/acpi/video.h|   11 --
>  include/linux/acpi.h|1 
>  6 files changed, 11 insertions(+), 87 deletions(-)
> 
> Index: linux-pm/drivers/acpi/video.c
> ===
> --- linux-pm.orig/drivers/acpi/video.c
> +++ linux-pm/drivers/acpi/video.c
> @@ -897,7 +897,7 @@ static void acpi_video_device_find_cap(s
>   if (acpi_video_init_brightness(device))
>   return;
>  
> - if (acpi_video_verify_backlight_support()) {
> + if (acpi_video_backlight_support()) {
>   struct backlight_properties props;
>   struct pci_dev *pdev;
>   acpi_handle acpi_parent;
> @@ -1344,8 +1344,8 @@ acpi_video_switch_brightness(struct acpi
>   unsigned long long level_current, level_next;
>   int result = -EINVAL;
>  
> - /* no warning message if acpi_backlight=vendor or a quirk is used */
> - if (!acpi_video_verify_backlight_support())
> + /* no 

[Intel-gfx] [PATCH] drm/i915: quirk no PCH_PWM_ENABLE for Dell XPS13 backlight

2013-07-19 Thread Kamal Mostafa
BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=47941
BugLink: https://bugs.launchpad.net/bugs/1163720
BugLink: https://bugs.launchpad.net/bugs/1162026

Some machines suffer from non-functional backlight controls if
BLM_PCH_PWM_ENABLE is set, so provide a quirk to avoid doing so.
Apply this quirk to Dell XPS 13 models.

Tested-by: Eric Griffith 
Tested-by: Kent Baxley 
Cc:  # v3.8+
Signed-off-by: Kamal Mostafa 
---
 drivers/gpu/drm/i915/i915_drv.h  |  1 +
 drivers/gpu/drm/i915/intel_display.c | 16 
 drivers/gpu/drm/i915/intel_panel.c   |  3 ++-
 3 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index a416645..204c3ec 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -555,6 +555,7 @@ 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 85f3eb7..42e207e 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -9398,6 +9398,17 @@ 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;
@@ -9467,6 +9478,11 @@ static struct intel_quirk intel_quirks[] = {
 
/* Acer Aspire 4736Z */
{ 0x2a42, 0x1025, 0x0260, 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 80bea1d..01b5a51 100644
--- a/drivers/gpu/drm/i915/intel_panel.c
+++ b/drivers/gpu/drm/i915/intel_panel.c
@@ -580,7 +580,8 @@ void intel_panel_enable_backlight(struct drm_device *dev,
POSTING_READ(reg);
I915_WRITE(reg, tmp | BLM_PWM_ENABLE);
 
-   if (HAS_PCH_SPLIT(dev)) {
+   if (HAS_PCH_SPLIT(dev) &&
+   !(dev_priv->quirks & QUIRK_NO_PCH_PWM_ENABLE)) {
tmp = I915_READ(BLC_PWM_PCH_CTL1);
tmp |= BLM_PCH_PWM_ENABLE;
tmp &= ~BLM_PCH_OVERRIDE_ENABLE;
-- 
1.8.1.2

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] i915 PCH backlight vs. Dell XPS13

2013-02-12 Thread Kamal Mostafa
On Fri, Feb 8, 2013 at 8:36 PM, Kamal Mostafa  wrote:
> > Daniel's backlight fixes which landed in 3.6 did enable working
> > backlight controls on the XPS13, but it appears that this commit from
> > Paolo broke it again:
> > a4f32fc drm/i915: don't forget the PCH backlight registers

On Fri, 2013-02-08 at 20:55 +0100, Daniel Vetter wrote:
> You might want to try the latest drm-intel-nightly git branch from
> http://cgit.freedesktop.org/~danvet/drm-intel This has a few more
> tricks which helped on some similar platforsm to yours (and similar
> resume issues).


Yes indeed, this commit from drm-intel-nightly does fix the problem:
"drm/i915: write backlight harder".

Thanks as always, for your help Daniel!

 -Kamal



signature.asc
Description: This is a digitally signed message part
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 2/2] drm/i915: quirk disable i915 backlight on Dell XPS 13z

2012-05-14 Thread Kamal Mostafa
Hi Daniel-

Reminding you of this issue...  I've sent the register dump you asked
for... You said you had an idea?

Thanks very much for looking into it,

 -Kamal


On Fri, 2012-04-27 at 14:55 -0700, Kamal Mostafa wrote:
> On Fri, 2012-04-27 at 23:25 +0200, Daniel Vetter wrote:
> > Hm. Can you please install intel-gpu-tools and attach the output of
> > intel_reg_dumper? I have an idea ...
> 
> Here it is with intel_backlight/brightness set to 1 ("strobe light"
> behavior occurring):
> 
> PGETBL_CTL: 0x
>GEN6_INSTDONE_1: 0xfffb
>GEN6_INSTDONE_2: 0x03305e3f
>   CPU_VGACNTRL: 0x8000 (disabled)
> DIGITAL_PORT_HOTPLUG_CNTRL: 0x
>  RR_HW_CTL: 0x (low 0, high 0)
> FDI_PLL_BIOS_0: 0x
> FDI_PLL_BIOS_1: 0x
> FDI_PLL_BIOS_2: 0x
>DISPLAY_PORT_PLL_BIOS_0: 0x
>DISPLAY_PORT_PLL_BIOS_1: 0x
>DISPLAY_PORT_PLL_BIOS_2: 0x
>   FDI_PLL_FREQ_CTL: 0x
>  PIPEACONF: 0xc050 (enabled, active, 6bpc)
>   HTOTAL_A: 0x05d90555 (1366 active, 1498 total)
>   HBLANK_A: 0x05d90555 (1366 start, 1498 end)
>HSYNC_A: 0x05a50585 (1414 start, 1446 end)
>   VTOTAL_A: 0x031502ff (768 active, 790 total)
>   VBLANK_A: 0x031502ff (768 start, 790 end)
>VSYNC_A: 0x03040300 (769 start, 773 end)
>   VSYNCSHIFT_A: 0x
>   PIPEASRC: 0x055502ff (1366, 768)
>  PIPEA_DATA_M1: 0x7e1380e4 (TU 64, val 0x1380e4 1278180)
>  PIPEA_DATA_N1: 0x0020f580 (val 0x20f580 216)
>  PIPEA_DATA_M2: 0x (TU 1, val 0x0 0)
>  PIPEA_DATA_N2: 0x (val 0x0 0)
>  PIPEA_LINK_M1: 0x00011562 (val 0x11562 71010)
>  PIPEA_LINK_N1: 0x00041eb0 (val 0x41eb0 27)
>  PIPEA_LINK_M2: 0x (val 0x0 0)
>  PIPEA_LINK_N2: 0x (val 0x0 0)
>   DSPACNTR: 0xd8004400 (enabled)
>   DSPABASE: 0x
> DSPASTRIDE: 0x1600 (88)
>   DSPASURF: 0x009bf000
>DSPATILEOFF: 0x (0, 0)
>  PIPEBCONF: 0x (disabled, inactive, 8bpc)
>   HTOTAL_B: 0x (1 active, 1 total)
>   HBLANK_B: 0x (1 start, 1 end)
>HSYNC_B: 0x (1 start, 1 end)
>   VTOTAL_B: 0x (1 active, 1 total)
>   VBLANK_B: 0x (1 start, 1 end)
>VSYNC_B: 0x (1 start, 1 end)
>   VSYNCSHIFT_B: 0x
>   DSPBCNTR: 0x4000 (disabled)
>   DSPBBASE: 0x
> DSPBSTRIDE: 0x (0)
>   DSPBSURF: 0x
>DSPBTILEOFF: 0x (0, 0)
>   PIPEBSRC: 0x (1, 1)
>  PIPEB_DATA_M1: 0x (TU 1, val 0x0 0)
>  PIPEB_DATA_N1: 0x (val 0x0 0)
>  PIPEB_DATA_M2: 0x (TU 1, val 0x0 0)
>  PIPEB_DATA_N2: 0x (val 0x0 0)
>  PIPEB_LINK_M1: 0x (val 0x0 0)
>  PIPEB_LINK_N1: 0x (val 0x0 0)
>  PIPEB_LINK_M2: 0x (val 0x0 0)
>  PIPEB_LINK_N2: 0x (val 0x0 0)
>  PFA_CTL_1: 0x (disable, auto_scale yes, 
> auto_scale_cal no, v_filter enable, vadapt disable, mode least, filter_sel 
> programmed,chroma pre-filter disable, vert3tap auto, v_inter_invert field 1)
>  PFA_CTL_2: 0x7e80 (vscale 0.988281)
>  PFA_CTL_3: 0x3f40 (vscale initial phase 0.494141)
>  PFA_CTL_4: 0x7d54 (hscale 0.979126)
>PFA_WIN_POS: 0x (0, 0)
>   PFA_WIN_SIZE: 0x (0, 0)
>  PFB_CTL_1: 0x (disable, auto_scale yes, 
> auto_scale_cal no, v_filter enable, vadapt disable, mode least, filter_sel 
> programmed,chroma pre-filter disable, vert3tap auto, v_inter_invert field 1)
>  PFB_CTL_2: 0x (vscale 0.00)
>  PFB_CTL_3: 0x (vscale initial phase 0.00)
>  PFB_CTL_4: 0x (hscale 0.00)
>PFB_WIN_POS: 0x (0, 0)
>   

Re: [Intel-gfx] [PATCH 1/2] drm/i915: i915.enable_backlight=0 disables intel_backlight

2012-05-14 Thread Kamal Mostafa
Hi Daniel-

Reminding you of this patch...

The new i915.enable_backlight modparam introduced in patch 1/2 is
generally useful, regardless of whether we quirk-enable as done in patch
2/2.  Its already been used successfully for a different machine[0] with
a different backlight problem.

Please consider applying this patch 1/2.

Thanks,

 -Kamal

[0] https://bugs.launchpad.net/ubuntu/+source/linux/+bug/954661/comments/27


On Thu, 2012-04-26 at 22:07 +0200, Daniel Vetter wrote:
> On Wed, Apr 25, 2012 at 10:28:41AM -0700, Kamal Mostafa wrote:
> > i915.enable_backlight=0 can be used to disable i915 backlight control
> > and the /sys/class/backlight/intel_backlight interface -- useful for
> > systems where intel_backight conflicts with BIOS backlight control.
> > 
> > BugLink: https://launchpad.net/bugs/954661
> > Signed-off-by: Kamal Mostafa 
> 
> Ok, I've just gone through the fun of merging a set of backlight quirks a
> few weeks back. Then noticed that an awful lot of machines seem to be
> affected and later on read about a few interesting bits in the
> documentation. Turns out the hw is all good, it's just the driver totally
> mishandling the backlight.
> 
> To cut things short: This time around I want more justification for the
> quirk than just "this makes this one machine work somehow".
> -Daniel
> 
> > ---
> >  drivers/gpu/drm/i915/i915_drv.c|6 ++
> >  drivers/gpu/drm/i915/i915_drv.h|1 +
> >  drivers/gpu/drm/i915/intel_panel.c |   12 
> >  3 files changed, 19 insertions(+), 0 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/i915_drv.c 
> > b/drivers/gpu/drm/i915/i915_drv.c
> > index ae8a64f..ddb947b 100644
> > --- a/drivers/gpu/drm/i915/i915_drv.c
> > +++ b/drivers/gpu/drm/i915/i915_drv.c
> > @@ -112,6 +112,12 @@ module_param_named(i915_enable_ppgtt, 
> > i915_enable_ppgtt, int, 0600);
> >  MODULE_PARM_DESC(i915_enable_ppgtt,
> > "Enable PPGTT (default: true)");
> >  
> > +int i915_enable_backlight __read_mostly = -1;
> > +module_param_named(enable_backlight, i915_enable_backlight, int, 0644);
> > +MODULE_PARM_DESC(enable_backlight,
> > +   "Enable backlight control and the intel_backlight interface. "
> > +   "(default: -1 (auto))");
> > +
> >  static struct drm_driver driver;
> >  extern int intel_agp_enabled;
> >  
> > diff --git a/drivers/gpu/drm/i915/i915_drv.h 
> > b/drivers/gpu/drm/i915/i915_drv.h
> > index 5fabc6c..6e52a42 100644
> > --- a/drivers/gpu/drm/i915/i915_drv.h
> > +++ b/drivers/gpu/drm/i915/i915_drv.h
> > @@ -1087,6 +1087,7 @@ extern int i915_enable_rc6 __read_mostly;
> >  extern int i915_enable_fbc __read_mostly;
> >  extern bool i915_enable_hangcheck __read_mostly;
> >  extern int i915_enable_ppgtt __read_mostly;
> > +extern int i915_enable_backlight __read_mostly;
> >  
> >  extern int i915_suspend(struct drm_device *dev, pm_message_t state);
> >  extern int i915_resume(struct drm_device *dev);
> > diff --git a/drivers/gpu/drm/i915/intel_panel.c 
> > b/drivers/gpu/drm/i915/intel_panel.c
> > index 48177ec..fcecbd2 100644
> > --- a/drivers/gpu/drm/i915/intel_panel.c
> > +++ b/drivers/gpu/drm/i915/intel_panel.c
> > @@ -259,6 +259,9 @@ void intel_panel_disable_backlight(struct drm_device 
> > *dev)
> >  {
> > struct drm_i915_private *dev_priv = dev->dev_private;
> >  
> > +   if (!i915_enable_backlight)
> > +   return;
> > +
> > dev_priv->backlight_enabled = false;
> > intel_panel_actually_set_backlight(dev, 0);
> >  }
> > @@ -267,6 +270,9 @@ void intel_panel_enable_backlight(struct drm_device 
> > *dev)
> >  {
> > struct drm_i915_private *dev_priv = dev->dev_private;
> >  
> > +   if (!i915_enable_backlight)
> > +   return;
> > +
> > if (dev_priv->backlight_level == 0)
> > dev_priv->backlight_level = intel_panel_get_max_backlight(dev);
> >  
> > @@ -333,6 +339,9 @@ int intel_panel_setup_backlight(struct drm_device *dev)
> > struct backlight_properties props;
> > struct drm_connector *connector;
> >  
> > +   if (!i915_enable_backlight)
> > +   return 0;
> > +
> > intel_panel_init_backlight(dev);
> >  
> > if (dev_priv->int_lvds_connector)
> > @@ -368,6 +377,9 @@ void intel_panel_destroy_backlight(struct drm_device 
> > *dev)
> >  #else
> >  int intel_panel_setup_backlight(struct drm_device *dev)
> >  {
> > +   if (!i915_enable_backlight)
> > +   return;
> > +
> > intel_panel_init_backlight(dev);
> > return 0;
> >  }
> > -- 
> > 1.7.5.4
> > 
> > ___
> > Intel-gfx mailing list
> > Intel-gfx@lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/intel-gfx
> 



signature.asc
Description: This is a digitally signed message part
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 2/2] drm/i915: quirk disable i915 backlight on Dell XPS 13z

2012-04-27 Thread Kamal Mostafa
On Fri, 2012-04-27 at 23:25 +0200, Daniel Vetter wrote:
> Hm. Can you please install intel-gpu-tools and attach the output of
> intel_reg_dumper? I have an idea ...

Here it is with intel_backlight/brightness set to 1 ("strobe light"
behavior occurring):

PGETBL_CTL: 0x
   GEN6_INSTDONE_1: 0xfffb
   GEN6_INSTDONE_2: 0x03305e3f
  CPU_VGACNTRL: 0x8000 (disabled)
DIGITAL_PORT_HOTPLUG_CNTRL: 0x
 RR_HW_CTL: 0x (low 0, high 0)
FDI_PLL_BIOS_0: 0x
FDI_PLL_BIOS_1: 0x
FDI_PLL_BIOS_2: 0x
   DISPLAY_PORT_PLL_BIOS_0: 0x
   DISPLAY_PORT_PLL_BIOS_1: 0x
   DISPLAY_PORT_PLL_BIOS_2: 0x
  FDI_PLL_FREQ_CTL: 0x
 PIPEACONF: 0xc050 (enabled, active, 6bpc)
  HTOTAL_A: 0x05d90555 (1366 active, 1498 total)
  HBLANK_A: 0x05d90555 (1366 start, 1498 end)
   HSYNC_A: 0x05a50585 (1414 start, 1446 end)
  VTOTAL_A: 0x031502ff (768 active, 790 total)
  VBLANK_A: 0x031502ff (768 start, 790 end)
   VSYNC_A: 0x03040300 (769 start, 773 end)
  VSYNCSHIFT_A: 0x
  PIPEASRC: 0x055502ff (1366, 768)
 PIPEA_DATA_M1: 0x7e1380e4 (TU 64, val 0x1380e4 1278180)
 PIPEA_DATA_N1: 0x0020f580 (val 0x20f580 216)
 PIPEA_DATA_M2: 0x (TU 1, val 0x0 0)
 PIPEA_DATA_N2: 0x (val 0x0 0)
 PIPEA_LINK_M1: 0x00011562 (val 0x11562 71010)
 PIPEA_LINK_N1: 0x00041eb0 (val 0x41eb0 27)
 PIPEA_LINK_M2: 0x (val 0x0 0)
 PIPEA_LINK_N2: 0x (val 0x0 0)
  DSPACNTR: 0xd8004400 (enabled)
  DSPABASE: 0x
DSPASTRIDE: 0x1600 (88)
  DSPASURF: 0x009bf000
   DSPATILEOFF: 0x (0, 0)
 PIPEBCONF: 0x (disabled, inactive, 8bpc)
  HTOTAL_B: 0x (1 active, 1 total)
  HBLANK_B: 0x (1 start, 1 end)
   HSYNC_B: 0x (1 start, 1 end)
  VTOTAL_B: 0x (1 active, 1 total)
  VBLANK_B: 0x (1 start, 1 end)
   VSYNC_B: 0x (1 start, 1 end)
  VSYNCSHIFT_B: 0x
  DSPBCNTR: 0x4000 (disabled)
  DSPBBASE: 0x
DSPBSTRIDE: 0x (0)
  DSPBSURF: 0x
   DSPBTILEOFF: 0x (0, 0)
  PIPEBSRC: 0x (1, 1)
 PIPEB_DATA_M1: 0x (TU 1, val 0x0 0)
 PIPEB_DATA_N1: 0x (val 0x0 0)
 PIPEB_DATA_M2: 0x (TU 1, val 0x0 0)
 PIPEB_DATA_N2: 0x (val 0x0 0)
 PIPEB_LINK_M1: 0x (val 0x0 0)
 PIPEB_LINK_N1: 0x (val 0x0 0)
 PIPEB_LINK_M2: 0x (val 0x0 0)
 PIPEB_LINK_N2: 0x (val 0x0 0)
 PFA_CTL_1: 0x (disable, auto_scale yes, 
auto_scale_cal no, v_filter enable, vadapt disable, mode least, filter_sel 
programmed,chroma pre-filter disable, vert3tap auto, v_inter_invert field 1)
 PFA_CTL_2: 0x7e80 (vscale 0.988281)
 PFA_CTL_3: 0x3f40 (vscale initial phase 0.494141)
 PFA_CTL_4: 0x7d54 (hscale 0.979126)
   PFA_WIN_POS: 0x (0, 0)
  PFA_WIN_SIZE: 0x (0, 0)
 PFB_CTL_1: 0x (disable, auto_scale yes, 
auto_scale_cal no, v_filter enable, vadapt disable, mode least, filter_sel 
programmed,chroma pre-filter disable, vert3tap auto, v_inter_invert field 1)
 PFB_CTL_2: 0x (vscale 0.00)
 PFB_CTL_3: 0x (vscale initial phase 0.00)
 PFB_CTL_4: 0x (hscale 0.00)
   PFB_WIN_POS: 0x (0, 0)
  PFB_WIN_SIZE: 0x (0, 0)
  PCH_DREF_CONTROL: 0x1402 (cpu source disable, ssc_source 
enable, nonspread_source enable, superspread_source disable, ssc4_mode 
downspread, ssc1 enable, ssc4 disable)
   PCH_RAWCLK_FREQ: 0x007d (FDL_TP1 timer 0.5us, FDL_TP2 timer 
1.5us, freq 125)
  PCH_DPLL_TMR_CFG: 0x0271186a
PCH_SSC4_PARMS: 0x01204860
PCH_SSC4_AUX_PARMS: 0x29c5
  PCH_DPLL_SEL: 0x0008 (TransA DPLL enable (DPLL A), TransB 
DPLL disable (DPLL (null)))
   PCH_DPLL_ANALOG_CTL: 0x8000
PCH_DPLL_A: 0x88046004 (

Re: [Intel-gfx] [PATCH 2/2] drm/i915: quirk disable i915 backlight on Dell XPS 13z

2012-04-27 Thread Kamal Mostafa
On Thu, 2012-04-26 at 22:07 +0200, Daniel Vetter wrote:
> ...
> To cut things short: This time around I want more justification for the
> quirk than just "this makes this one machine work somehow".


A bit more detail...

On this Dell XPS 13z "Ultrabook" (sandybridge_m 0x0116) when
intel_backlight/brightness gets stuffed with any value except 0 or
max_brightness, the backlight cycles between flashing (like a strobe
light!) and then pulsating (bright to dim to bright).  That
flashing/pulsating cycle repeats continuously, about every 2 seconds.
The behavior is affected by the value stuffed into brightness more or
less along the lines of:

   0: very dim, totally stable
   1: flashes like crazy for about 1.5 sec, then pulsates for 0.5 sec
1000: flashes for about 0.5 sec, then pulsates for about 1.5 sec
2000: flashes very briefly, then pulsates for about 2 sec
3000: flickers, then pulsates for about 2 sec
4000  pulsates continuously, every 2 sec
4882: (max_brightness) full brightness, stable

This behavior manifests both in X and in a text VT, and occurs with or
without the presence of other backlight interfaces besides
intel_backlight.  It does not appear to me to be a userspace problem.

The additional wrinkle is that this machine presents an acpi_video0
backlight interface as well, and it even works properly -- but *only*
after you specifically stuff 0 into intel_backlight/brightness (or if
intel_backlight is disabled by the proposed quirk).

Any non-zero intel_backlight/brightness value prevents acpi_video0 from
working.  When intel_backlight is set to max_brightness (like at boot),
acpi_video0/brightness seems to have no effect at all; when
intel_backlight is set to other non-zero values, the flashing/pulsating
behavior occurs.

I'd be (quite) happy to test a proper intel_backlight fix, but in the
meantime disabling it by quirk seems appropriate for this machine, since
that allows the acpi_video0 interface to work out of the box.

Thanks for considering it,

 -Kamal


On Wed, 2012-04-25 at 10:28 -0700, Kamal Mostafa wrote:
> From: Robert Hooker 
> 
> Dell XPS 13z exhibits problems (backlight flashing/pulsating) when
> intel_backlight is enabled at all, so disable it.
> 
> BugLink: https://launchpad.net/bugs/954661
> Signed-off-by: Robert Hooker 
> Signed-off-by: Kamal Mostafa 
> ---
>  drivers/gpu/drm/i915/intel_display.c |   17 +
>  1 files changed, 17 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_display.c 
> b/drivers/gpu/drm/i915/intel_display.c
> index 5908cd5..0c4cac4 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -9100,6 +9100,19 @@ static void quirk_ssc_force_disable(struct drm_device 
> *dev)
>   struct drm_i915_private *dev_priv = dev->dev_private;
>   dev_priv->quirks |= QUIRK_LVDS_SSC_DISABLE;
>  }
> + 
> +/*
> + * Some machines (Dell XPS 13z) exhibit problems with i915 control of the
> + * backlight registers; Others may need the intel_backlight interface
> + * disabled for some other reason.
> + */
> +static void quirk_backlight_disable(struct drm_device *dev)
> +{
> + if (i915_enable_backlight == -1) {
> + i915_enable_backlight = 0;
> + DRM_DEBUG_DRIVER("disabling intel_backlight interface via quirk\n");
> + }
> +}
>  
>  struct intel_quirk {
>   int device;
> @@ -9133,6 +9146,10 @@ struct intel_quirk intel_quirks[] = {
>  
>   /* Sony Vaio Y cannot use SSC on LVDS */
>   { 0x0046, 0x104d, 0x9076, quirk_ssc_force_disable },
> +
> + /* Dell XPS 13z needs to disable the intel_backlight interface
> +(LP: #954661) */
> + { 0x0116, 0x1028, 0x052e, quirk_backlight_disable },
>  };
>  
>  static void intel_init_quirks(struct drm_device *dev)


___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 1/2] drm/i915: i915.enable_backlight=0 disables intel_backlight

2012-04-27 Thread Kamal Mostafa
On Thu, 2012-04-26 at 22:07 +0200, Daniel Vetter wrote:
> On Wed, Apr 25, 2012 at 10:28:41AM -0700, Kamal Mostafa wrote:
> > i915.enable_backlight=0 can be used to disable i915 backlight control
> > and the /sys/class/backlight/intel_backlight interface -- useful for
> > systems where intel_backight conflicts with BIOS backlight control.
> > 
> > BugLink: https://launchpad.net/bugs/954661
> > Signed-off-by: Kamal Mostafa 
> 
> Ok, I've just gone through the fun of merging a set of backlight quirks a
> few weeks back. Then noticed that an awful lot of machines seem to be
> affected and later on read about a few interesting bits in the
> documentation. Turns out the hw is all good, it's just the driver totally
> mishandling the backlight.
> 
> To cut things short: This time around I want more justification for the
> quirk than just "this makes this one machine work somehow".


The enable_backlight modparam (this PATCH 1/2) would be generally useful
to have, whether or not we quirk-disable it for that particular machine.
Consider accepting this first patch 1/2 on its own?

 -Kamal


> > ---
> >  drivers/gpu/drm/i915/i915_drv.c|6 ++
> >  drivers/gpu/drm/i915/i915_drv.h|1 +
> >  drivers/gpu/drm/i915/intel_panel.c |   12 
> >  3 files changed, 19 insertions(+), 0 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/i915_drv.c 
> > b/drivers/gpu/drm/i915/i915_drv.c
> > index ae8a64f..ddb947b 100644
> > --- a/drivers/gpu/drm/i915/i915_drv.c
> > +++ b/drivers/gpu/drm/i915/i915_drv.c
> > @@ -112,6 +112,12 @@ module_param_named(i915_enable_ppgtt, 
> > i915_enable_ppgtt, int, 0600);
> >  MODULE_PARM_DESC(i915_enable_ppgtt,
> > "Enable PPGTT (default: true)");
> >  
> > +int i915_enable_backlight __read_mostly = -1;
> > +module_param_named(enable_backlight, i915_enable_backlight, int, 0644);
> > +MODULE_PARM_DESC(enable_backlight,
> > +   "Enable backlight control and the intel_backlight interface. "
> > +   "(default: -1 (auto))");
> > +
> >  static struct drm_driver driver;
> >  extern int intel_agp_enabled;
> >  
> > diff --git a/drivers/gpu/drm/i915/i915_drv.h 
> > b/drivers/gpu/drm/i915/i915_drv.h
> > index 5fabc6c..6e52a42 100644
> > --- a/drivers/gpu/drm/i915/i915_drv.h
> > +++ b/drivers/gpu/drm/i915/i915_drv.h
> > @@ -1087,6 +1087,7 @@ extern int i915_enable_rc6 __read_mostly;
> >  extern int i915_enable_fbc __read_mostly;
> >  extern bool i915_enable_hangcheck __read_mostly;
> >  extern int i915_enable_ppgtt __read_mostly;
> > +extern int i915_enable_backlight __read_mostly;
> >  
> >  extern int i915_suspend(struct drm_device *dev, pm_message_t state);
> >  extern int i915_resume(struct drm_device *dev);
> > diff --git a/drivers/gpu/drm/i915/intel_panel.c 
> > b/drivers/gpu/drm/i915/intel_panel.c
> > index 48177ec..fcecbd2 100644
> > --- a/drivers/gpu/drm/i915/intel_panel.c
> > +++ b/drivers/gpu/drm/i915/intel_panel.c
> > @@ -259,6 +259,9 @@ void intel_panel_disable_backlight(struct drm_device 
> > *dev)
> >  {
> > struct drm_i915_private *dev_priv = dev->dev_private;
> >  
> > +   if (!i915_enable_backlight)
> > +   return;
> > +
> > dev_priv->backlight_enabled = false;
> > intel_panel_actually_set_backlight(dev, 0);
> >  }
> > @@ -267,6 +270,9 @@ void intel_panel_enable_backlight(struct drm_device 
> > *dev)
> >  {
> > struct drm_i915_private *dev_priv = dev->dev_private;
> >  
> > +   if (!i915_enable_backlight)
> > +   return;
> > +
> > if (dev_priv->backlight_level == 0)
> > dev_priv->backlight_level = intel_panel_get_max_backlight(dev);
> >  
> > @@ -333,6 +339,9 @@ int intel_panel_setup_backlight(struct drm_device *dev)
> > struct backlight_properties props;
> > struct drm_connector *connector;
> >  
> > +   if (!i915_enable_backlight)
> > +   return 0;
> > +
> > intel_panel_init_backlight(dev);
> >  
> > if (dev_priv->int_lvds_connector)
> > @@ -368,6 +377,9 @@ void intel_panel_destroy_backlight(struct drm_device 
> > *dev)
> >  #else
> >  int intel_panel_setup_backlight(struct drm_device *dev)
> >  {
> > +   if (!i915_enable_backlight)
> > +   return;
> > +
> > intel_panel_init_backlight(dev);
> > return 0;
> >  }
> > -- 
> > 1.7.5.4
> > 
> > ___
> > Intel-gfx mailing list
> > Intel-gfx@lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/intel-gfx
> 


___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 2/2] drm/i915: quirk disable i915 backlight on Dell XPS 13z

2012-04-25 Thread Kamal Mostafa
From: Robert Hooker 

Dell XPS 13z exhibits problems (backlight flashing/pulsating) when
intel_backlight is enabled at all, so disable it.

BugLink: https://launchpad.net/bugs/954661
Signed-off-by: Robert Hooker 
Signed-off-by: Kamal Mostafa 
---
 drivers/gpu/drm/i915/intel_display.c |   17 +
 1 files changed, 17 insertions(+), 0 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_display.c 
b/drivers/gpu/drm/i915/intel_display.c
index 5908cd5..0c4cac4 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -9100,6 +9100,19 @@ static void quirk_ssc_force_disable(struct drm_device 
*dev)
struct drm_i915_private *dev_priv = dev->dev_private;
dev_priv->quirks |= QUIRK_LVDS_SSC_DISABLE;
 }
+ 
+/*
+ * Some machines (Dell XPS 13z) exhibit problems with i915 control of the
+ * backlight registers; Others may need the intel_backlight interface
+ * disabled for some other reason.
+ */
+static void quirk_backlight_disable(struct drm_device *dev)
+{
+   if (i915_enable_backlight == -1) {
+   i915_enable_backlight = 0;
+   DRM_DEBUG_DRIVER("disabling intel_backlight interface via quirk\n");
+   }
+}
 
 struct intel_quirk {
int device;
@@ -9133,6 +9146,10 @@ struct intel_quirk intel_quirks[] = {
 
/* Sony Vaio Y cannot use SSC on LVDS */
{ 0x0046, 0x104d, 0x9076, quirk_ssc_force_disable },
+
+   /* Dell XPS 13z needs to disable the intel_backlight interface
+  (LP: #954661) */
+   { 0x0116, 0x1028, 0x052e, quirk_backlight_disable },
 };
 
 static void intel_init_quirks(struct drm_device *dev)
-- 
1.7.5.4

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 1/2] drm/i915: i915.enable_backlight=0 disables intel_backlight

2012-04-25 Thread Kamal Mostafa
i915.enable_backlight=0 can be used to disable i915 backlight control
and the /sys/class/backlight/intel_backlight interface -- useful for
systems where intel_backight conflicts with BIOS backlight control.

BugLink: https://launchpad.net/bugs/954661
Signed-off-by: Kamal Mostafa 
---
 drivers/gpu/drm/i915/i915_drv.c|6 ++
 drivers/gpu/drm/i915/i915_drv.h|1 +
 drivers/gpu/drm/i915/intel_panel.c |   12 
 3 files changed, 19 insertions(+), 0 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index ae8a64f..ddb947b 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -112,6 +112,12 @@ module_param_named(i915_enable_ppgtt, i915_enable_ppgtt, 
int, 0600);
 MODULE_PARM_DESC(i915_enable_ppgtt,
"Enable PPGTT (default: true)");
 
+int i915_enable_backlight __read_mostly = -1;
+module_param_named(enable_backlight, i915_enable_backlight, int, 0644);
+MODULE_PARM_DESC(enable_backlight,
+   "Enable backlight control and the intel_backlight interface. "
+   "(default: -1 (auto))");
+
 static struct drm_driver driver;
 extern int intel_agp_enabled;
 
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 5fabc6c..6e52a42 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -1087,6 +1087,7 @@ extern int i915_enable_rc6 __read_mostly;
 extern int i915_enable_fbc __read_mostly;
 extern bool i915_enable_hangcheck __read_mostly;
 extern int i915_enable_ppgtt __read_mostly;
+extern int i915_enable_backlight __read_mostly;
 
 extern int i915_suspend(struct drm_device *dev, pm_message_t state);
 extern int i915_resume(struct drm_device *dev);
diff --git a/drivers/gpu/drm/i915/intel_panel.c 
b/drivers/gpu/drm/i915/intel_panel.c
index 48177ec..fcecbd2 100644
--- a/drivers/gpu/drm/i915/intel_panel.c
+++ b/drivers/gpu/drm/i915/intel_panel.c
@@ -259,6 +259,9 @@ void intel_panel_disable_backlight(struct drm_device *dev)
 {
struct drm_i915_private *dev_priv = dev->dev_private;
 
+   if (!i915_enable_backlight)
+   return;
+
dev_priv->backlight_enabled = false;
intel_panel_actually_set_backlight(dev, 0);
 }
@@ -267,6 +270,9 @@ void intel_panel_enable_backlight(struct drm_device *dev)
 {
struct drm_i915_private *dev_priv = dev->dev_private;
 
+   if (!i915_enable_backlight)
+   return;
+
if (dev_priv->backlight_level == 0)
dev_priv->backlight_level = intel_panel_get_max_backlight(dev);
 
@@ -333,6 +339,9 @@ int intel_panel_setup_backlight(struct drm_device *dev)
struct backlight_properties props;
struct drm_connector *connector;
 
+   if (!i915_enable_backlight)
+   return 0;
+
intel_panel_init_backlight(dev);
 
if (dev_priv->int_lvds_connector)
@@ -368,6 +377,9 @@ void intel_panel_destroy_backlight(struct drm_device *dev)
 #else
 int intel_panel_setup_backlight(struct drm_device *dev)
 {
+   if (!i915_enable_backlight)
+   return;
+
intel_panel_init_backlight(dev);
return 0;
 }
-- 
1.7.5.4

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] i915: Fix bug where screen brightness is not restored

2011-11-15 Thread Kamal Mostafa
On Tue, 2011-11-15 at 21:28 +0100, Takashi Iwai wrote:
> My rough guess is the inconsistency of property taken during the
> backlight disabled.  How about the patch below (untested!) in addition
> to the fix in 3.2?
> 
> 
> Takashi

Yes Takashi, your patch below (plus the already committed fix[0]) does
indeed fix the problem[1] for me.  Thanks!

Tested-by: Kamal Mostafa 

 -Kamal

[0] f52c619a590fa75276c07dfcaf380dee53e4ea4c
drm/i915/panel: Always record the backlight level again (but cleverly)

[1] https://bugs.launchpad.net/ubuntu/+source/linux/+bug/872652



> ---
> diff --git a/drivers/gpu/drm/i915/intel_panel.c 
> b/drivers/gpu/drm/i915/intel_panel.c
> index 499d4c0..21f60b7 100644
> --- a/drivers/gpu/drm/i915/intel_panel.c
> +++ b/drivers/gpu/drm/i915/intel_panel.c
> @@ -326,7 +326,8 @@ static int intel_panel_update_status(struct 
> backlight_device *bd)
>  static int intel_panel_get_brightness(struct backlight_device *bd)
>  {
>   struct drm_device *dev = bl_get_data(bd);
> - return intel_panel_get_backlight(dev);
> + struct drm_i915_private *dev_priv = dev->dev_private;
> + return dev_priv->backlight_level;
>  }
>  
>  static const struct backlight_ops intel_panel_bl_ops = {
> 



signature.asc
Description: This is a digitally signed message part
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] i915: Fix bug where screen brightness is not restored

2011-11-15 Thread Kamal Mostafa
On Mon, 2011-11-14 at 18:42 -0800, Alex Davis wrote:
> From: Alex Davis
> 
> This patch fixes an issue where the screen would remain dark when
> 
> a key was pressed when the laptop lid was reopened or after the
> laptop had gone into power-save mode.

[cross-posting to intel-gfx]

Keith, also note that Alex and I did respond to your request to test the
already committed patch "drm/i915/panel: Always record the backlight
level again (but cleverly)".  We both determined that patch does *not*
fix the problem.  Alex's patch below does fix it.

Matthew, any comment on the question that I fielded?:

>> Why does intel_panel_disable_backlight even want to set the
>> brightness to 0 anyway?...  Its only caller is just about to turn
>> off power to the panel.  Is that call to
>> intel_panel_{,actually_}set_backlight(dev, 0) really necessary
>> or useful on *any* systems?

 -Kamal


> It seems that there are a number of people with different machines
> that have this problem:
> 
> https://bugs.launchpad.net/ubuntu/+source/linux/+bug/872652
> https://launchpad.net/~kamalmostafa/+archive/stuck-backlight
> and https://bugs.freedesktop.org/show_bug.cgi?id=41926
> 
> This patch is against Linux 3.1
> 
> Putting printk's in ./drivers/gpu/drm/i915/intel_panel.c showed that 
> intel_get_brightness was being called after the panel was disabled,
> which caused a 0 to be saved as the value to restore the brightness. 
> intel_panel_disable_backlight merely sets the brightness to 0. Commenting
> out this call allows the correct brightness value to be saved.
> 
> Signed-off-by: Alex Davis 
> Tested-by: Kamal Mostafa 
> -
> diff --git a/drivers/gpu/drm/i915/intel_panel.c 
> b/drivers/gpu/drm/i915/intel_panel.c
> index a9e0c7b..6f56676 100644
> --- a/drivers/gpu/drm/i915/intel_panel.c
> +++ b/drivers/gpu/drm/i915/intel_panel.c
> @@ -262,8 +262,6 @@ void intel_panel_disable_backlight(struct drm_device *dev)
> dev_priv->backlight_level = intel_panel_get_backlight(dev);
> dev_priv->backlight_enabled = false;
> }
> -
> -   intel_panel_set_backlight(dev, 0);
>  }
> 
>  void intel_panel_enable_backlight(struct drm_device *dev)
> 
>  
> 
> I code, therefore I am
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majord...@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
> 



signature.asc
Description: This is a digitally signed message part
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH] i915: do not setup intel_backlight twice

2011-08-22 Thread Kamal Mostafa
The commit "Not all systems expose a firmware or platform mechanism for
changing the backlight intensity on i915, so add native driver support"
adds calls to  intel_panel_setup_backlight() from intel_{lvds,dp}_init
so do not call it again from intel_setup_outputs().

BugLink: http://bugs.launchpad.net/bugs/831542

Signed-off-by: Kamal Mostafa 
---
 drivers/gpu/drm/i915/intel_display.c |2 --
 1 files changed, 0 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_display.c 
b/drivers/gpu/drm/i915/intel_display.c
index ee1d701..5a1ae9f 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -7238,8 +7238,6 @@ static void intel_setup_outputs(struct drm_device *dev)
intel_encoder_clones(dev, encoder->clone_mask);
}
 
-   intel_panel_setup_backlight(dev);
-
/* disable all the possible outputs/crtcs before entering KMS mode */
drm_helper_disable_unused_functions(dev);
 }
-- 
1.7.4.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] i915 native backlight never got merged

2011-08-12 Thread Kamal Mostafa
On Fri, 2011-08-12 at 06:52 -0700, Keith Packard wrote:
> On Fri, 12 Aug 2011 12:11:33 +0200, Michel Alexandre Salim 
>  wrote:
> 
> > Matthew's last patch from July 16th applies without modification on top
> > of Linux 3.0 and 3.1-rc1 [...]
>> From fa7419eee713b989e2c268c7b06ec9a544a2b647 Mon Sep 17 00:00:00 2001
> 
> I'll merge this version, with the change to make
> intel_panel_init_backlight static (it's not declared in a header, and
> isn't used outside of intel_panel.c).

That version works also works fine for me.

Tested-by: Kamal Mostafa 

 -Kamal



signature.asc
Description: This is a digitally signed message part
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] i915 native backlight never got merged

2011-08-11 Thread Kamal Mostafa
On Thu, 2011-08-11 at 15:28 -0700, Keith Packard wrote:
> I've had to amend the patch a bit to get it to apply on top of
> drm-intel-fixes; anyone care to take a look and see if it still looks
> reasonable (and/or actually works?)

Hi Keith-

I confirm that this does indeed work (Dell Studio 1558).  My thanks to
you and Matthew!

Tested-by: Kamal Mostafa 

 -Kamal

> From 2c17b1ae587289501029daa5c0692818b88d21a6 Mon Sep 17 00:00:00 2001
> From: Matthew Garrett 
> Date: Fri, 14 Jan 2011 14:24:22 -0500
> Subject: [PATCH] i915: Add native backlight control
> 
> Not all systems expose a firmware or platform mechanism for changing the
> backlight intensity on i915, so add native driver support.
> 
> Signed-off-by: Matthew Garrett 
> Cc: intel-gfx 
> Tested-by: Michel Alexandre Salim 
> Signed-off-by: Keith Packard 






signature.asc
Description: This is a digitally signed message part
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] i915 native backlight never got merged

2011-08-08 Thread Kamal Mostafa
Several months ago, Matthew Garrett submitted a set of backlight
patches[1], all but one of which landed in 2.6.39-rc1.  The one that
never did get merged is the bit that exposes the "intel_backlight"
interface:

[PATCH 2/5] i915: Add native backlight control
http://lists.freedesktop.org/archives/intel-gfx/2011-January/009207.html

So what happened to that patch?  Did it get lost or is it stuck
somewhere?  I humbly ask that it be re-reviewed and pushed upstream.

 -Kamal

[1] 
[PATCH 1/5] Backlight: Add backlight type
http://lists.freedesktop.org/archives/intel-gfx/2011-January/009208.html
commit ef22f6a70c9186c8e25f757b0e8f7374b37f69bf




signature.asc
Description: This is a digitally signed message part
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [RFC PATCH 0/2] i915 brightness control

2010-09-24 Thread Kamal Mostafa
On Mon, 2010-09-13 at 18:48 +0100, Matthew Garrett wrote:
> I've looked into this issue more closely and think I've worked out the 
> underlying problem. The system in question appears to have two GPUs and 
> exposes two ACPI backlight devices. Both of these are associated with 
> existing PCI devices, so we don't ignore either of them because of that. 
> Further, one of them (the AMD one) implements the spec properly and 
> should work. We don't seem to perform a more fine-grained check to 
> identify whether every ACPI backlight has all the required methods, and 
> so as a result we provide both the working one and the non-working one.
> 
> Having thought about this some more, I don't think this is the right 
> approach. We should be ensuring that every backlight ahs all the 
> required methods and then dropping the one that doesn't. This should be 
> replaced with a native i915 backlight, and I sent patches to do that 
> last week.


I agree.  Your proposed design is good, and I have successfully tested
your proposed patches[1] (after minor porting changes to Ubuntu
Maverick's 2.6.35).  Thanks very much Matthew!

FYI, I have published an experimental Ubuntu Maverick PPA kernel[2]
which includes your patches, plus my dell_laptop tweaks to inhibit the
broken dell_backlight by a module param or dmi blacklist table (in lieu
of a yet to be implemented more fine-grained check).

 -Kamal Mostafa 


[1] 2010-09-08 [Intel-gfx] [PATCH] i915: Add native backlight control
2010-09-08 [Intel-gfx] [PATCH] Backlight: Add backlight type

[2] https://launchpad.net/~kamalmostafa/+archive/linux-kamal-mjgbacklight



signature.asc
Description: This is a digitally signed message part
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [RFC PATCH 2/2] drm/i915: override acpi brightness control

2010-06-02 Thread Kamal Mostafa
BugLink: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/568611

Override acpi brightness control with i915-opregion method.

Signed-off-by: Kamal Mostafa 
---
 drivers/gpu/drm/i915/i915_opregion.c |   19 +++
 1 files changed, 19 insertions(+), 0 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_opregion.c 
b/drivers/gpu/drm/i915/i915_opregion.c
index 7cc8410..a69033e 100644
--- a/drivers/gpu/drm/i915/i915_opregion.c
+++ b/drivers/gpu/drm/i915/i915_opregion.c
@@ -32,6 +32,9 @@
 #include "i915_drm.h"
 #include "i915_drv.h"
 
+unsigned int i915_brightness = 1;
+module_param_named(brightness, i915_brightness, int, 0400);
+
 #define PCI_ASLE 0xe4
 #define PCI_LBPC 0xf4
 #define PCI_ASLS 0xfc
@@ -422,6 +425,18 @@ static void intel_didl_outputs(struct drm_device *dev)
opregion->acpi->didl[i] = 0;
 }
 
+static unsigned int i915_set_brightness(void *dev, unsigned int brightness)
+{
+/* Nb. brightness value range is 0 to 255. */
+   u32 bclp = ASLE_BCLP_VALID | brightness;
+   struct drm_device *drmdev = dev;
+
+   if (IS_IRONLAKE(drmdev))
+   return asle_set_backlight_ironlake(drmdev, bclp);
+   else
+   return asle_set_backlight(drmdev, bclp);
+}
+
 int intel_opregion_init(struct drm_device *dev, int resume)
 {
struct drm_i915_private *dev_priv = dev->dev_private;
@@ -469,6 +484,10 @@ int intel_opregion_init(struct drm_device *dev, int resume)
DRM_DEBUG_DRIVER("ASLE supported\n");
opregion->asle = base + OPREGION_ASLE_OFFSET;
opregion_enable_asle(dev);
+   /* Register the i915-based brightness control with ACPI */
+   if (!resume && i915_brightness)
+   acpi_brightness_hook_register("i915",
+   i915_set_brightness, dev, 255);
}
 
if (!resume)
-- 
1.7.0.4

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [RFC PATCH 1/2] acpi/video: acpi_brightness_hook API

2010-06-02 Thread Kamal Mostafa
BugLink: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/568611

New acpi_brightness_hook_register lets another driver (e.g. i915) override
the often-dysfunctional native acpi brightness control methods.

Signed-off-by: Kamal Mostafa 
---
 drivers/acpi/video.c |  149 ++
 include/acpi/video.h |   10 +++
 2 files changed, 147 insertions(+), 12 deletions(-)

diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c
index bd9843a..331fdcc 100644
--- a/drivers/acpi/video.c
+++ b/drivers/acpi/video.c
@@ -481,6 +481,12 @@ acpi_video_device_set_state(struct acpi_video_device 
*device, int state)
return status;
 }
 
+static unsigned int (*acpi_brightness_hook_routine)
+   (void *dev, unsigned int brightness) = NULL;
+static char *acpi_brightness_hook_driver;
+static void *acpi_brightness_hook_dev;
+static unsigned int acpi_brightness_hook_max;
+
 static int
 acpi_video_device_lcd_query_levels(struct acpi_video_device *device,
   union acpi_object **levels)
@@ -520,13 +526,25 @@ acpi_video_device_lcd_set_level(struct acpi_video_device 
*device, int level)
struct acpi_object_list args = { 1, &arg0 };
int state;
 
-   arg0.integer.value = level;
+   /* If another driver has registered a brightness hook override,
+* set the brightness using that method, otherwise set the brightness
+* using the acpi _BCM method. */
+   if ( acpi_brightness_hook_routine ) {
+   status = acpi_brightness_hook_routine(acpi_brightness_hook_dev,
+   level * acpi_brightness_hook_max / 100);
+   if ( status != 0 ) {
+   ACPI_ERROR((AE_INFO, "brightness hook failed"));
+   return -EIO;
+   }
+   } else {
+   arg0.integer.value = level;
 
-   status = acpi_evaluate_object(device->dev->handle, "_BCM",
- &args, NULL);
-   if (ACPI_FAILURE(status)) {
-   ACPI_ERROR((AE_INFO, "Evaluating _BCM failed"));
-   return -EIO;
+   status = acpi_evaluate_object(device->dev->handle, "_BCM",
+ &args, NULL);
+   if (ACPI_FAILURE(status)) {
+   ACPI_ERROR((AE_INFO, "Evaluating _BCM failed"));
+   return -EIO;
+   }
}
 
device->brightness->curr = level;
@@ -607,7 +625,10 @@ acpi_video_device_lcd_get_level_current(struct 
acpi_video_device *device,
acpi_status status = AE_OK;
int i;
 
-   if (device->cap._BQC || device->cap._BCQ) {
+   /* Try to get the current brightness using the _BQC/_BCQ method, only
+* if another driver has not registered a brightness hook override. */
+   if (!acpi_brightness_hook_routine
+   && (device->cap._BQC || device->cap._BCQ)) {
char *buf = device->cap._BQC ? "_BQC" : "_BCQ";
 
status = acpi_evaluate_integer(device->dev->handle, buf,
@@ -784,7 +805,7 @@ acpi_video_cmp_level(const void *a, const void *b)
  * device  : video output device (LCD, CRT, ..)
  *
  *  Return Value:
- * Maximum brightness level
+ * 0 on success, error code on failure.
  *
  *  Allocate and initialize device->brightness.
  */
@@ -944,6 +965,99 @@ out:
  * device  : video output device (LCD, CRT, ..)
  *
  *  Return Value:
+ * 0 on success, error code on failure.
+ *
+ *  Allocate and initialize device->brightness. when a driver has registered
+ *  a brightness hook override via acpi_brightness_hook_register.
+ *
+ *  Cobbles up a fake brightness 'levels' array (emulating a _BCL list) and
+ *  sets max brightness -- effectively what acpi_video_init_brightness does
+ *  for the native acpi brightness methods
+ */
+static int
+acpi_brightness_hook_init(struct acpi_video_device *device)
+{
+   struct acpi_video_device_brightness *br = NULL;
+   int result = -EINVAL;
+   int nsteps = 10;
+   int count, i;
+   static int initialized = 0;
+
+   if ( initialized )
+   return 1;
+   initialized = 1;
+
+   device->brightness = NULL;
+
+   br = kzalloc(sizeof(*br), GFP_KERNEL);
+   if (!br) {
+   printk(KERN_ERR "can't allocate memory\n");
+   result = -ENOMEM;
+   return result;
+   }
+   br->levels = kmalloc((nsteps + 2) * sizeof *(br->levels),
+   GFP_KERNEL);
+   if (!br->levels) {
+   result = -ENOMEM;
+   kfree(br);
+   return result;
+   }
+
+   for (count=2, i = 1; i <= nsteps; i++)
+   br->levels[count++] = (

[Intel-gfx] [RFC PATCH 0/2] i915 brightness control

2010-06-02 Thread Kamal Mostafa
Requesting comments on this idea (proposed by Matthew Garrett) and my
implementation.  Note especially the KNOWN PROBLEM with a "GM45" GPU.

 -Kamal

...

BugLink: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/568611

In order to avoid the often-dysfunctional native acpi brightness control
methods, a new acpi_brightness_hook interface is made available.

The i915 driver uses the new hook to take over brightness control.
Boot with i915.brightness=0 to disable.

KNOWN PROBLEM:
  - i915 opregion brightness control silently fails on GM45 (pci-id 0x2a42)

[RFC PATCH 1/2] acpi/video: acpi_brightness_hook API
[RFC PATCH 2/2] drm/i915: override acpi brightness control

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx