ACPI/i915: Cannot configure display brightness on Dell Latitude E6440

2014-09-26 Thread Aaron Lu
On 09/26/2014 03:58 AM, Rafael J. Wysocki wrote:
> On Thursday, September 25, 2014 11:15:35 AM Aaron Lu wrote:
>> Hi Hans,
>>
>> Thanks for following up and explaining the situation to Pali.
>>
>> On 09/25/2014 02:21 AM, Pali Roh?r wrote:
>>> On Wednesday 24 September 2014 16:34:21 Hans de Goede wrote:
 Ok, so the dell-laptop interface is just an obsolete wrapper
 around the i915 opregion code, which shows that the right
 interface to use is the i915 one, which we do if you don't
 specify any kernel commandline parameters, case closed.

 Regards,

 Hans
>>>
>>> Nope, its not closed.
>>>
>>> Still i915 interface has problem with setting backlight. It 
>>> exports lot of levels which turning display off. Which breaking 
>>> exiting applications for configuring display brightness. This is 
>>> still big regression as black screen is not want people want to 
>>> see.
>>>
>>> Driver dell-laptop has exported only few - not thousands level 
>>> (which is insane) and only usefull levels (not lot of levels 
>>> which turn display off).
>>>
>>> So for this reason using i915 backlight interface is not possible 
>>> and also Dell (for E6440) set kernel param acpi_backlight=vendor 
>>> to use dell_laptop module for controlling brightness.
>>>
>>> On my laptop E6440 is better for using dell-laptop and not acpi 
>>> or i915.
>>
>> Hi Pali,
>>
>> Please test this patch:
>>
>> diff --git a/drivers/gpu/drm/i915/intel_opregion.c 
>> b/drivers/gpu/drm/i915/intel_opregion.c
>> index ca52ad2ae7d1..15534345bd57 100644
>> --- a/drivers/gpu/drm/i915/intel_opregion.c
>> +++ b/drivers/gpu/drm/i915/intel_opregion.c
>> @@ -396,6 +396,24 @@ int intel_opregion_notify_adapter(struct drm_device 
>> *dev, pci_power_t state)
>>  return -EINVAL;
>>  }
>>  
>> +/*
>> + * Some of the Thinkpads' firmware will issue a backlight change operation
>> + * region request unconditionally on AC plug/unplug, this is undesirable and
>> + * should be ignored. Then there is a Dell laptop whose vendor backlight
>> + * interface also makes use of operation region request to change backlight
>> + * level and we have to keep it work. The rule used here is: if the vendor
>> + * backlight interface is not in use and the ACPI backlight interface is
>> + * broken, we ignore the requests; oterwise, we keep processing them.
>> + */
>> +static bool should_ignore_backlight_request(void)
>> +{
>> +if (acpi_video_backlight_support() &&
>> +!acpi_video_verify_backlight_support())
>> +return true;
>> +
>> +return false;
>> +}
> 
> Well, what about
> 
>   return acpi_video_backlight_support() && 
> !acpi_video_verify_backlight_support();
> 
> ?

Yes that's better.
Will send out a patch with this change, thanks for the suggestion.

-Aaron

> 
>> +
>>  static u32 asle_set_backlight(struct drm_device *dev, u32 bclp)
>>  {
>>  struct drm_i915_private *dev_priv = dev->dev_private;
>> @@ -404,11 +422,7 @@ static u32 asle_set_backlight(struct drm_device *dev, 
>> u32 bclp)
>>  
>>  DRM_DEBUG_DRIVER("bclp = 0x%08x\n", bclp);
>>  
>> -/*
>> - * If the acpi_video interface is not supposed to be used, don't
>> - * bother processing backlight level change requests from firmware.
>> - */
>> -if (!acpi_video_verify_backlight_support()) {
>> +if (should_ignore_backlight_request()) {
>>  DRM_DEBUG_KMS("opregion backlight request ignored\n");
>>  return 0;
>>  }
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
>> the body of a message to majordomo at vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>> Please read the FAQ at  http://www.tux.org/lkml/
> 



ACPI/i915: Cannot configure display brightness on Dell Latitude E6440

2014-09-25 Thread Rafael J. Wysocki
On Thursday, September 25, 2014 11:15:35 AM Aaron Lu wrote:
> Hi Hans,
> 
> Thanks for following up and explaining the situation to Pali.
> 
> On 09/25/2014 02:21 AM, Pali Roh?r wrote:
> > On Wednesday 24 September 2014 16:34:21 Hans de Goede wrote:
> >> Ok, so the dell-laptop interface is just an obsolete wrapper
> >> around the i915 opregion code, which shows that the right
> >> interface to use is the i915 one, which we do if you don't
> >> specify any kernel commandline parameters, case closed.
> >>
> >> Regards,
> >>
> >> Hans
> > 
> > Nope, its not closed.
> > 
> > Still i915 interface has problem with setting backlight. It 
> > exports lot of levels which turning display off. Which breaking 
> > exiting applications for configuring display brightness. This is 
> > still big regression as black screen is not want people want to 
> > see.
> > 
> > Driver dell-laptop has exported only few - not thousands level 
> > (which is insane) and only usefull levels (not lot of levels 
> > which turn display off).
> > 
> > So for this reason using i915 backlight interface is not possible 
> > and also Dell (for E6440) set kernel param acpi_backlight=vendor 
> > to use dell_laptop module for controlling brightness.
> > 
> > On my laptop E6440 is better for using dell-laptop and not acpi 
> > or i915.
> 
> Hi Pali,
> 
> Please test this patch:
> 
> diff --git a/drivers/gpu/drm/i915/intel_opregion.c 
> b/drivers/gpu/drm/i915/intel_opregion.c
> index ca52ad2ae7d1..15534345bd57 100644
> --- a/drivers/gpu/drm/i915/intel_opregion.c
> +++ b/drivers/gpu/drm/i915/intel_opregion.c
> @@ -396,6 +396,24 @@ int intel_opregion_notify_adapter(struct drm_device 
> *dev, pci_power_t state)
>   return -EINVAL;
>  }
>  
> +/*
> + * Some of the Thinkpads' firmware will issue a backlight change operation
> + * region request unconditionally on AC plug/unplug, this is undesirable and
> + * should be ignored. Then there is a Dell laptop whose vendor backlight
> + * interface also makes use of operation region request to change backlight
> + * level and we have to keep it work. The rule used here is: if the vendor
> + * backlight interface is not in use and the ACPI backlight interface is
> + * broken, we ignore the requests; oterwise, we keep processing them.
> + */
> +static bool should_ignore_backlight_request(void)
> +{
> + if (acpi_video_backlight_support() &&
> + !acpi_video_verify_backlight_support())
> + return true;
> +
> + return false;
> +}

Well, what about

return acpi_video_backlight_support() && 
!acpi_video_verify_backlight_support();

?

> +
>  static u32 asle_set_backlight(struct drm_device *dev, u32 bclp)
>  {
>   struct drm_i915_private *dev_priv = dev->dev_private;
> @@ -404,11 +422,7 @@ static u32 asle_set_backlight(struct drm_device *dev, 
> u32 bclp)
>  
>   DRM_DEBUG_DRIVER("bclp = 0x%08x\n", bclp);
>  
> - /*
> -  * If the acpi_video interface is not supposed to be used, don't
> -  * bother processing backlight level change requests from firmware.
> -  */
> - if (!acpi_video_verify_backlight_support()) {
> + if (should_ignore_backlight_request()) {
>   DRM_DEBUG_KMS("opregion backlight request ignored\n");
>   return 0;
>   }
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.


ACPI/i915: Cannot configure display brightness on Dell Latitude E6440

2014-09-25 Thread Pali Rohár
On Thursday 25 September 2014 05:15:35 Aaron Lu wrote:
> Hi Hans,
> 
> Thanks for following up and explaining the situation to Pali.
> 
> On 09/25/2014 02:21 AM, Pali Roh?r wrote:
> > On Wednesday 24 September 2014 16:34:21 Hans de Goede wrote:
> >> Ok, so the dell-laptop interface is just an obsolete
> >> wrapper around the i915 opregion code, which shows that
> >> the right interface to use is the i915 one, which we do if
> >> you don't specify any kernel commandline parameters, case
> >> closed.
> >> 
> >> Regards,
> >> 
> >> Hans
> > 
> > Nope, its not closed.
> > 
> > Still i915 interface has problem with setting backlight. It
> > exports lot of levels which turning display off. Which
> > breaking exiting applications for configuring display
> > brightness. This is still big regression as black screen is
> > not want people want to see.
> > 
> > Driver dell-laptop has exported only few - not thousands
> > level (which is insane) and only usefull levels (not lot of
> > levels which turn display off).
> > 
> > So for this reason using i915 backlight interface is not
> > possible and also Dell (for E6440) set kernel param
> > acpi_backlight=vendor to use dell_laptop module for
> > controlling brightness.
> > 
> > On my laptop E6440 is better for using dell-laptop and not
> > acpi or i915.
> 
> Hi Pali,
> 
> Please test this patch:
> 

Hi! this patch fixing this problem. With acpi_backlight=vendor 
dell-laptop will register backlight interface which is working 
again. Also userspace application dellLcdBrightness is working 
now without problem.

Can you going to send this patch also to stable 3.16 branch? As 
it fixing commit 0b9f7d93ca6109048a4eb06332b666b6e29df4fe.

> diff --git a/drivers/gpu/drm/i915/intel_opregion.c
> b/drivers/gpu/drm/i915/intel_opregion.c index
> ca52ad2ae7d1..15534345bd57 100644
> --- a/drivers/gpu/drm/i915/intel_opregion.c
> +++ b/drivers/gpu/drm/i915/intel_opregion.c
> @@ -396,6 +396,24 @@ int intel_opregion_notify_adapter(struct
> drm_device *dev, pci_power_t state) return -EINVAL;
>  }
> 
> +/*
> + * Some of the Thinkpads' firmware will issue a backlight
> change operation + * region request unconditionally on AC
> plug/unplug, this is undesirable and + * should be ignored.
> Then there is a Dell laptop whose vendor backlight + *
> interface also makes use of operation region request to
> change backlight + * level and we have to keep it work. The
> rule used here is: if the vendor + * backlight interface is
> not in use and the ACPI backlight interface is + * broken, we
> ignore the requests; oterwise, we keep processing them. + */
> +static bool should_ignore_backlight_request(void)
> +{
> + if (acpi_video_backlight_support() &&
> + !acpi_video_verify_backlight_support())
> + return true;
> +
> + return false;
> +}
> +
>  static u32 asle_set_backlight(struct drm_device *dev, u32
> bclp) {
>   struct drm_i915_private *dev_priv = dev->dev_private;
> @@ -404,11 +422,7 @@ static u32 asle_set_backlight(struct
> drm_device *dev, u32 bclp)
> 
>   DRM_DEBUG_DRIVER("bclp = 0x%08x\n", bclp);
> 
> - /*
> -  * If the acpi_video interface is not supposed to be used,
> don't -* bother processing backlight level change requests
> from firmware. -   */
> - if (!acpi_video_verify_backlight_support()) {
> + if (should_ignore_backlight_request()) {
>   DRM_DEBUG_KMS("opregion backlight request ignored\n");
>   return 0;
>   }

-- 
Pali Roh?r
pali.rohar at gmail.com
-- next part --
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: 



ACPI/i915: Cannot configure display brightness on Dell Latitude E6440

2014-09-25 Thread Aaron Lu
Hi Hans,

Thanks for following up and explaining the situation to Pali.

On 09/25/2014 02:21 AM, Pali Roh?r wrote:
> On Wednesday 24 September 2014 16:34:21 Hans de Goede wrote:
>> Ok, so the dell-laptop interface is just an obsolete wrapper
>> around the i915 opregion code, which shows that the right
>> interface to use is the i915 one, which we do if you don't
>> specify any kernel commandline parameters, case closed.
>>
>> Regards,
>>
>> Hans
> 
> Nope, its not closed.
> 
> Still i915 interface has problem with setting backlight. It 
> exports lot of levels which turning display off. Which breaking 
> exiting applications for configuring display brightness. This is 
> still big regression as black screen is not want people want to 
> see.
> 
> Driver dell-laptop has exported only few - not thousands level 
> (which is insane) and only usefull levels (not lot of levels 
> which turn display off).
> 
> So for this reason using i915 backlight interface is not possible 
> and also Dell (for E6440) set kernel param acpi_backlight=vendor 
> to use dell_laptop module for controlling brightness.
> 
> On my laptop E6440 is better for using dell-laptop and not acpi 
> or i915.

Hi Pali,

Please test this patch:

diff --git a/drivers/gpu/drm/i915/intel_opregion.c 
b/drivers/gpu/drm/i915/intel_opregion.c
index ca52ad2ae7d1..15534345bd57 100644
--- a/drivers/gpu/drm/i915/intel_opregion.c
+++ b/drivers/gpu/drm/i915/intel_opregion.c
@@ -396,6 +396,24 @@ int intel_opregion_notify_adapter(struct drm_device *dev, 
pci_power_t state)
return -EINVAL;
 }

+/*
+ * Some of the Thinkpads' firmware will issue a backlight change operation
+ * region request unconditionally on AC plug/unplug, this is undesirable and
+ * should be ignored. Then there is a Dell laptop whose vendor backlight
+ * interface also makes use of operation region request to change backlight
+ * level and we have to keep it work. The rule used here is: if the vendor
+ * backlight interface is not in use and the ACPI backlight interface is
+ * broken, we ignore the requests; oterwise, we keep processing them.
+ */
+static bool should_ignore_backlight_request(void)
+{
+   if (acpi_video_backlight_support() &&
+   !acpi_video_verify_backlight_support())
+   return true;
+
+   return false;
+}
+
 static u32 asle_set_backlight(struct drm_device *dev, u32 bclp)
 {
struct drm_i915_private *dev_priv = dev->dev_private;
@@ -404,11 +422,7 @@ static u32 asle_set_backlight(struct drm_device *dev, u32 
bclp)

DRM_DEBUG_DRIVER("bclp = 0x%08x\n", bclp);

-   /*
-* If the acpi_video interface is not supposed to be used, don't
-* bother processing backlight level change requests from firmware.
-*/
-   if (!acpi_video_verify_backlight_support()) {
+   if (should_ignore_backlight_request()) {
DRM_DEBUG_KMS("opregion backlight request ignored\n");
return 0;
}


ACPI/i915: Cannot configure display brightness on Dell Latitude E6440

2014-09-24 Thread Pali Rohár
On Wednesday 24 September 2014 16:34:21 Hans de Goede wrote:
> Hi,
> 
> On 09/24/2014 02:53 PM, Pali Roh?r wrote:
> > On Wednesday 24 September 2014 14:04:36 Hans de Goede wrote:
> >> Hi,
> >> 
> >> On 09/24/2014 11:14 AM, Pali Roh?r wrote:
> >>> On Wednesday 24 September 2014 10:59:41 Pali Roh?r wrote:
>  On Wednesday 24 September 2014 10:19:38 Hans de Goede 
wrote:
> > Hi,
> > 
> > On 09/23/2014 10:44 PM, Pali Roh?r wrote:
> >> On Tuesday 23 September 2014 22:31:31 you wrote:
> >>> Hi,
> >>> 
> >>> On 09/23/2014 10:06 PM, Pali Roh?r wrote:
>  Hello,
>  
>  after big changes in acpi video/i915 code I cannot
>  change display brightness on my Dell Latitude E6440
>  with kernel 3.17-rc6. With kernel 3.13 everything
>  worked fine.
>  
>  More information about this problem:
>  
>  For configuring brightness on Dell laptops there are
>  4 ways: 1) via acpi video driver
>  2) via dell-laptop driver
>  3) via i915 drm driver
>  4) from userspace with special dell SMI call
>  
>  (e.g with program dellLcdBrightness from
>  libsmbios package)
>  
>  Methods 2) and 4) are same, both making special SMI
>  call and Bios handing this request (just 2 is from
>  kernel and 4 from userspace)
>  
>  Method 1) via acpi video driver working, but is not
>  perfect. Driver can be used to change brightness (but
>  only some levels, probably this depends on acpi/DSDT
>  tables), but cannot be used to retrieve current
>  brightness (when BIOS/SMI change brightness acpi
>  driver report old incorrect value). So I prefer
>  dell-laptop driver instead acpi video.
>  
>  Method 3) working even with 3.17-rc6 kernel but
>  because that backlight device exported by i915 is
>  marked as raw, desktop programs prefer to use other
>  devices.
>  
>  Moreover it looks like that methods 1) 2) and 4) just
>  forward request to method 3). So in any cased
>  brightness is changed by i915 drm driver.
>  
>  I'm not sure (correct me if I'm wrong!) but I think
>  that intel i915 drm driver accept changes (file
>  intel_opregion.c) only if acpi function
>  acpi_video_verify_backlight_support() returns true.
>  
>  Function acpi_video_verify_backlight_support()
>  returns true iff: function
>  acpi_video_backlight_support() returns true AND at
>  least one of these functions returns false:
>  acpi_osi_is_win8()
>  acpi_video_use_native_backlight()
>  backlight_device_registered(BACKLIGHT_RAW)
>  
>  On my notebook acpi_osi_is_win8() returns true (as is
>  win8 compliant),
>  backlight_device_registered(BACKLIGHT_RAW) returns
>  true as I'm using intel i915 drm driver with raw
>  backlight device and
>  acpi_video_use_native_backlight() returns true/false
>  depending on
>  "video.use_native_backlight" kernel param. Default is
>  true.
>  
>  So if I want to have working acpi video driver with
>  display brightness support I need to boot kernel with
>  param: "video.use_native_backlight=0". I tested it
>  with kernel 3.17-rc6 and this param really enabled
>  display brightness support via acpi video driver --
>  which is good.
>  
>  Driver dell-laptop creating backligh device for
>  brightness control only if
>  acpi_video_backlight_support() returns false. There
>  is complicated condition for it and when kernel is
>  booted with "video.use_native_backlight=0" that
>  function returns true.
>  
>  So conclusion is: With current code in kernel
>  3.17-rc6 it is not possible to control brightness of
>  display with native driver dell-laptop on Dell
>  Latitude E6440 (and probably on others too)!!!
>  
>  And Because laptop is win8 compliant and you create
>  decision to use native driver (instead acpi one) it
>  is not possible to control display brightness
>  without tweeks in kernel cmdline.
>  
>  As I wrote I would rather to use native dell-laptop
>  driver for controlling brightness, but it is not
>  possible.
>  
>  So how to solve this problem?
>  
>  Quick solution would be to set use_native_backlight
>  false for some Dell laptops which means, that acpi
>  video will be used and in this case intel i915 driver
>  will *not* drop backlight change request.
>  
>  Another solution could be to disable check in
>  dell_laptop dri

ACPI/i915: Cannot configure display brightness on Dell Latitude E6440

2014-09-24 Thread Hans de Goede
Hi,

On 09/24/2014 02:53 PM, Pali Roh?r wrote:
> On Wednesday 24 September 2014 14:04:36 Hans de Goede wrote:
>> Hi,
>>
>> On 09/24/2014 11:14 AM, Pali Roh?r wrote:
>>> On Wednesday 24 September 2014 10:59:41 Pali Roh?r wrote:
 On Wednesday 24 September 2014 10:19:38 Hans de Goede wrote:
> Hi,
>
> On 09/23/2014 10:44 PM, Pali Roh?r wrote:
>> On Tuesday 23 September 2014 22:31:31 you wrote:
>>> Hi,
>>>
>>> On 09/23/2014 10:06 PM, Pali Roh?r wrote:
 Hello,

 after big changes in acpi video/i915 code I cannot
 change display brightness on my Dell Latitude E6440
 with kernel 3.17-rc6. With kernel 3.13 everything
 worked fine.

 More information about this problem:

 For configuring brightness on Dell laptops there are 4
 ways: 1) via acpi video driver
 2) via dell-laptop driver
 3) via i915 drm driver
 4) from userspace with special dell SMI call

 (e.g with program dellLcdBrightness from libsmbios
 package)

 Methods 2) and 4) are same, both making special SMI
 call and Bios handing this request (just 2 is from
 kernel and 4 from userspace)

 Method 1) via acpi video driver working, but is not
 perfect. Driver can be used to change brightness (but
 only some levels, probably this depends on acpi/DSDT
 tables), but cannot be used to retrieve current
 brightness (when BIOS/SMI change brightness acpi driver
 report old incorrect value). So I prefer dell-laptop
 driver instead acpi video.

 Method 3) working even with 3.17-rc6 kernel but because
 that backlight device exported by i915 is marked as
 raw, desktop programs prefer to use other devices.

 Moreover it looks like that methods 1) 2) and 4) just
 forward request to method 3). So in any cased
 brightness is changed by i915 drm driver.

 I'm not sure (correct me if I'm wrong!) but I think
 that intel i915 drm driver accept changes (file
 intel_opregion.c) only if acpi function
 acpi_video_verify_backlight_support() returns true.

 Function acpi_video_verify_backlight_support() returns
 true iff: function acpi_video_backlight_support()
 returns true AND at least one of these functions
 returns false: acpi_osi_is_win8()
 acpi_video_use_native_backlight()
 backlight_device_registered(BACKLIGHT_RAW)

 On my notebook acpi_osi_is_win8() returns true (as is
 win8 compliant),
 backlight_device_registered(BACKLIGHT_RAW) returns true
 as I'm using intel i915 drm driver with raw backlight
 device and acpi_video_use_native_backlight() returns
 true/false depending on
 "video.use_native_backlight" kernel param. Default is
 true.

 So if I want to have working acpi video driver with
 display brightness support I need to boot kernel with
 param: "video.use_native_backlight=0". I tested it with
 kernel 3.17-rc6 and this param really enabled display
 brightness support via acpi video driver -- which is
 good.

 Driver dell-laptop creating backligh device for
 brightness control only if
 acpi_video_backlight_support() returns false. There is
 complicated condition for it and when kernel is booted
 with "video.use_native_backlight=0" that function
 returns true.

 So conclusion is: With current code in kernel 3.17-rc6
 it is not possible to control brightness of display
 with native driver dell-laptop on Dell Latitude E6440
 (and probably on others too)!!!

 And Because laptop is win8 compliant and you create
 decision to use native driver (instead acpi one) it is
 not possible to control display brightness without
 tweeks in kernel cmdline.

 As I wrote I would rather to use native dell-laptop
 driver for controlling brightness, but it is not
 possible.

 So how to solve this problem?

 Quick solution would be to set use_native_backlight
 false for some Dell laptops which means, that acpi
 video will be used and in this case intel i915 driver
 will *not* drop backlight change request.

 Another solution could be to disable check in
 dell_laptop driver and add use_native_backlight=0 to
 hooks. But this create two backlight interfaces (which
 is not good), but only way (for now) how to make
 dell_laptop working again.

 Better and maybe only one proper solution would be to
 teach intel drm i915 driver to not drop backlight
 chang

ACPI/i915: Cannot configure display brightness on Dell Latitude E6440

2014-09-24 Thread Pali Rohár
On Wednesday 24 September 2014 14:04:36 Hans de Goede wrote:
> Hi,
> 
> On 09/24/2014 11:14 AM, Pali Roh?r wrote:
> > On Wednesday 24 September 2014 10:59:41 Pali Roh?r wrote:
> >> On Wednesday 24 September 2014 10:19:38 Hans de Goede wrote:
> >>> Hi,
> >>> 
> >>> On 09/23/2014 10:44 PM, Pali Roh?r wrote:
>  On Tuesday 23 September 2014 22:31:31 you wrote:
> > Hi,
> > 
> > On 09/23/2014 10:06 PM, Pali Roh?r wrote:
> >> Hello,
> >> 
> >> after big changes in acpi video/i915 code I cannot
> >> change display brightness on my Dell Latitude E6440
> >> with kernel 3.17-rc6. With kernel 3.13 everything
> >> worked fine.
> >> 
> >> More information about this problem:
> >> 
> >> For configuring brightness on Dell laptops there are 4
> >> ways: 1) via acpi video driver
> >> 2) via dell-laptop driver
> >> 3) via i915 drm driver
> >> 4) from userspace with special dell SMI call
> >> 
> >> (e.g with program dellLcdBrightness from libsmbios
> >> package)
> >> 
> >> Methods 2) and 4) are same, both making special SMI
> >> call and Bios handing this request (just 2 is from
> >> kernel and 4 from userspace)
> >> 
> >> Method 1) via acpi video driver working, but is not
> >> perfect. Driver can be used to change brightness (but
> >> only some levels, probably this depends on acpi/DSDT
> >> tables), but cannot be used to retrieve current
> >> brightness (when BIOS/SMI change brightness acpi driver
> >> report old incorrect value). So I prefer dell-laptop
> >> driver instead acpi video.
> >> 
> >> Method 3) working even with 3.17-rc6 kernel but because
> >> that backlight device exported by i915 is marked as
> >> raw, desktop programs prefer to use other devices.
> >> 
> >> Moreover it looks like that methods 1) 2) and 4) just
> >> forward request to method 3). So in any cased
> >> brightness is changed by i915 drm driver.
> >> 
> >> I'm not sure (correct me if I'm wrong!) but I think
> >> that intel i915 drm driver accept changes (file
> >> intel_opregion.c) only if acpi function
> >> acpi_video_verify_backlight_support() returns true.
> >> 
> >> Function acpi_video_verify_backlight_support() returns
> >> true iff: function acpi_video_backlight_support()
> >> returns true AND at least one of these functions
> >> returns false: acpi_osi_is_win8()
> >> acpi_video_use_native_backlight()
> >> backlight_device_registered(BACKLIGHT_RAW)
> >> 
> >> On my notebook acpi_osi_is_win8() returns true (as is
> >> win8 compliant),
> >> backlight_device_registered(BACKLIGHT_RAW) returns true
> >> as I'm using intel i915 drm driver with raw backlight
> >> device and acpi_video_use_native_backlight() returns
> >> true/false depending on
> >> "video.use_native_backlight" kernel param. Default is
> >> true.
> >> 
> >> So if I want to have working acpi video driver with
> >> display brightness support I need to boot kernel with
> >> param: "video.use_native_backlight=0". I tested it with
> >> kernel 3.17-rc6 and this param really enabled display
> >> brightness support via acpi video driver -- which is
> >> good.
> >> 
> >> Driver dell-laptop creating backligh device for
> >> brightness control only if
> >> acpi_video_backlight_support() returns false. There is
> >> complicated condition for it and when kernel is booted
> >> with "video.use_native_backlight=0" that function
> >> returns true.
> >> 
> >> So conclusion is: With current code in kernel 3.17-rc6
> >> it is not possible to control brightness of display
> >> with native driver dell-laptop on Dell Latitude E6440
> >> (and probably on others too)!!!
> >> 
> >> And Because laptop is win8 compliant and you create
> >> decision to use native driver (instead acpi one) it is
> >> not possible to control display brightness without
> >> tweeks in kernel cmdline.
> >> 
> >> As I wrote I would rather to use native dell-laptop
> >> driver for controlling brightness, but it is not
> >> possible.
> >> 
> >> So how to solve this problem?
> >> 
> >> Quick solution would be to set use_native_backlight
> >> false for some Dell laptops which means, that acpi
> >> video will be used and in this case intel i915 driver
> >> will *not* drop backlight change request.
> >> 
> >> Another solution could be to disable check in
> >> dell_laptop driver and add use_native_backlight=0 to
> >> hooks. But this create two backlight interfaces (which
> >> is not good), but only way (for now) how to make
> >> dell_laptop working again.
> >> 
> >> Better and maybe only one proper solution would be to
> >> teach intel drm i915 driver to not drop backlight
> >> change request for Dell laptops (o

ACPI/i915: Cannot configure display brightness on Dell Latitude E6440

2014-09-24 Thread Hans de Goede
Hi,

On 09/24/2014 11:14 AM, Pali Roh?r wrote:
> On Wednesday 24 September 2014 10:59:41 Pali Roh?r wrote:
>> On Wednesday 24 September 2014 10:19:38 Hans de Goede wrote:
>>> Hi,
>>>
>>> On 09/23/2014 10:44 PM, Pali Roh?r wrote:
 On Tuesday 23 September 2014 22:31:31 you wrote:
> Hi,
>
> On 09/23/2014 10:06 PM, Pali Roh?r wrote:
>> Hello,
>>
>> after big changes in acpi video/i915 code I cannot
>> change display brightness on my Dell Latitude E6440
>> with kernel 3.17-rc6. With kernel 3.13 everything
>> worked fine.
>>
>> More information about this problem:
>>
>> For configuring brightness on Dell laptops there are 4
>> ways: 1) via acpi video driver
>> 2) via dell-laptop driver
>> 3) via i915 drm driver
>> 4) from userspace with special dell SMI call
>>
>> (e.g with program dellLcdBrightness from libsmbios
>> package)
>>
>> Methods 2) and 4) are same, both making special SMI call
>> and Bios handing this request (just 2 is from kernel and
>> 4 from userspace)
>>
>> Method 1) via acpi video driver working, but is not
>> perfect. Driver can be used to change brightness (but
>> only some levels, probably this depends on acpi/DSDT
>> tables), but cannot be used to retrieve current
>> brightness (when BIOS/SMI change brightness acpi driver
>> report old incorrect value). So I prefer dell-laptop
>> driver instead acpi video.
>>
>> Method 3) working even with 3.17-rc6 kernel but because
>> that backlight device exported by i915 is marked as raw,
>> desktop programs prefer to use other devices.
>>
>> Moreover it looks like that methods 1) 2) and 4) just
>> forward request to method 3). So in any cased brightness
>> is changed by i915 drm driver.
>>
>> I'm not sure (correct me if I'm wrong!) but I think that
>> intel i915 drm driver accept changes (file
>> intel_opregion.c) only if acpi function
>> acpi_video_verify_backlight_support() returns true.
>>
>> Function acpi_video_verify_backlight_support() returns
>> true iff: function acpi_video_backlight_support()
>> returns true AND at least one of these functions
>> returns false: acpi_osi_is_win8()
>> acpi_video_use_native_backlight()
>> backlight_device_registered(BACKLIGHT_RAW)
>>
>> On my notebook acpi_osi_is_win8() returns true (as is
>> win8 compliant),
>> backlight_device_registered(BACKLIGHT_RAW) returns true
>> as I'm using intel i915 drm driver with raw backlight
>> device and acpi_video_use_native_backlight() returns
>> true/false depending on
>> "video.use_native_backlight" kernel param. Default is
>> true.
>>
>> So if I want to have working acpi video driver with
>> display brightness support I need to boot kernel with
>> param: "video.use_native_backlight=0". I tested it with
>> kernel 3.17-rc6 and this param really enabled display
>> brightness support via acpi video driver -- which is
>> good.
>>
>> Driver dell-laptop creating backligh device for
>> brightness control only if
>> acpi_video_backlight_support() returns false. There is
>> complicated condition for it and when kernel is booted
>> with "video.use_native_backlight=0" that function
>> returns true.
>>
>> So conclusion is: With current code in kernel 3.17-rc6
>> it is not possible to control brightness of display
>> with native driver dell-laptop on Dell Latitude E6440
>> (and probably on others too)!!!
>>
>> And Because laptop is win8 compliant and you create
>> decision to use native driver (instead acpi one) it is
>> not possible to control display brightness without
>> tweeks in kernel cmdline.
>>
>> As I wrote I would rather to use native dell-laptop
>> driver for controlling brightness, but it is not
>> possible.
>>
>> So how to solve this problem?
>>
>> Quick solution would be to set use_native_backlight
>> false for some Dell laptops which means, that acpi
>> video will be used and in this case intel i915 driver
>> will *not* drop backlight change request.
>>
>> Another solution could be to disable check in
>> dell_laptop driver and add use_native_backlight=0 to
>> hooks. But this create two backlight interfaces (which
>> is not good), but only way (for now) how to make
>> dell_laptop working again.
>>
>> Better and maybe only one proper solution would be to
>> teach intel drm i915 driver to not drop backlight change
>> request for Dell laptops (or all??). (This allows to
>> work both acpi video and dell_laptop drivers without
>> any change and with *any* value in param
>> use_native_backlight). I think that problematic code is
>> in function asle_set_backlight() in file
>> intel_opregion.c (but I'm not sure). My idea is that
>> "

ACPI/i915: Cannot configure display brightness on Dell Latitude E6440

2014-09-24 Thread Pali Rohár
On Wednesday 24 September 2014 10:59:41 Pali Roh?r wrote:
> On Wednesday 24 September 2014 10:19:38 Hans de Goede wrote:
> > Hi,
> > 
> > On 09/23/2014 10:44 PM, Pali Roh?r wrote:
> > > On Tuesday 23 September 2014 22:31:31 you wrote:
> > >> Hi,
> > >> 
> > >> On 09/23/2014 10:06 PM, Pali Roh?r wrote:
> > >>> Hello,
> > >>> 
> > >>> after big changes in acpi video/i915 code I cannot
> > >>> change display brightness on my Dell Latitude E6440
> > >>> with kernel 3.17-rc6. With kernel 3.13 everything
> > >>> worked fine.
> > >>> 
> > >>> More information about this problem:
> > >>> 
> > >>> For configuring brightness on Dell laptops there are 4
> > >>> ways: 1) via acpi video driver
> > >>> 2) via dell-laptop driver
> > >>> 3) via i915 drm driver
> > >>> 4) from userspace with special dell SMI call
> > >>> 
> > >>> (e.g with program dellLcdBrightness from libsmbios
> > >>> package)
> > >>> 
> > >>> Methods 2) and 4) are same, both making special SMI call
> > >>> and Bios handing this request (just 2 is from kernel and
> > >>> 4 from userspace)
> > >>> 
> > >>> Method 1) via acpi video driver working, but is not
> > >>> perfect. Driver can be used to change brightness (but
> > >>> only some levels, probably this depends on acpi/DSDT
> > >>> tables), but cannot be used to retrieve current
> > >>> brightness (when BIOS/SMI change brightness acpi driver
> > >>> report old incorrect value). So I prefer dell-laptop
> > >>> driver instead acpi video.
> > >>> 
> > >>> Method 3) working even with 3.17-rc6 kernel but because
> > >>> that backlight device exported by i915 is marked as raw,
> > >>> desktop programs prefer to use other devices.
> > >>> 
> > >>> Moreover it looks like that methods 1) 2) and 4) just
> > >>> forward request to method 3). So in any cased brightness
> > >>> is changed by i915 drm driver.
> > >>> 
> > >>> I'm not sure (correct me if I'm wrong!) but I think that
> > >>> intel i915 drm driver accept changes (file
> > >>> intel_opregion.c) only if acpi function
> > >>> acpi_video_verify_backlight_support() returns true.
> > >>> 
> > >>> Function acpi_video_verify_backlight_support() returns
> > >>> true iff: function acpi_video_backlight_support()
> > >>> returns true AND at least one of these functions
> > >>> returns false: acpi_osi_is_win8()
> > >>> acpi_video_use_native_backlight()
> > >>> backlight_device_registered(BACKLIGHT_RAW)
> > >>> 
> > >>> On my notebook acpi_osi_is_win8() returns true (as is
> > >>> win8 compliant),
> > >>> backlight_device_registered(BACKLIGHT_RAW) returns true
> > >>> as I'm using intel i915 drm driver with raw backlight
> > >>> device and acpi_video_use_native_backlight() returns
> > >>> true/false depending on
> > >>> "video.use_native_backlight" kernel param. Default is
> > >>> true.
> > >>> 
> > >>> So if I want to have working acpi video driver with
> > >>> display brightness support I need to boot kernel with
> > >>> param: "video.use_native_backlight=0". I tested it with
> > >>> kernel 3.17-rc6 and this param really enabled display
> > >>> brightness support via acpi video driver -- which is
> > >>> good.
> > >>> 
> > >>> Driver dell-laptop creating backligh device for
> > >>> brightness control only if
> > >>> acpi_video_backlight_support() returns false. There is
> > >>> complicated condition for it and when kernel is booted
> > >>> with "video.use_native_backlight=0" that function
> > >>> returns true.
> > >>> 
> > >>> So conclusion is: With current code in kernel 3.17-rc6
> > >>> it is not possible to control brightness of display
> > >>> with native driver dell-laptop on Dell Latitude E6440
> > >>> (and probably on others too)!!!
> > >>> 
> > >>> And Because laptop is win8 compliant and you create
> > >>> decision to use native driver (instead acpi one) it is
> > >>> not possible to control display brightness without
> > >>> tweeks in kernel cmdline.
> > >>> 
> > >>> As I wrote I would rather to use native dell-laptop
> > >>> driver for controlling brightness, but it is not
> > >>> possible.
> > >>> 
> > >>> So how to solve this problem?
> > >>> 
> > >>> Quick solution would be to set use_native_backlight
> > >>> false for some Dell laptops which means, that acpi
> > >>> video will be used and in this case intel i915 driver
> > >>> will *not* drop backlight change request.
> > >>> 
> > >>> Another solution could be to disable check in
> > >>> dell_laptop driver and add use_native_backlight=0 to
> > >>> hooks. But this create two backlight interfaces (which
> > >>> is not good), but only way (for now) how to make
> > >>> dell_laptop working again.
> > >>> 
> > >>> Better and maybe only one proper solution would be to
> > >>> teach intel drm i915 driver to not drop backlight change
> > >>> request for Dell laptops (or all??). (This allows to
> > >>> work both acpi video and dell_laptop drivers without
> > >>> any change and with *any* value in param
> > >>> use_native_backlight). I think that problematic code is
> > >>> in function asle_set_backl

ACPI/i915: Cannot configure display brightness on Dell Latitude E6440

2014-09-24 Thread Pali Rohár
On Wednesday 24 September 2014 10:19:38 Hans de Goede wrote:
> Hi,
> 
> On 09/23/2014 10:44 PM, Pali Roh?r wrote:
> > On Tuesday 23 September 2014 22:31:31 you wrote:
> >> Hi,
> >> 
> >> On 09/23/2014 10:06 PM, Pali Roh?r wrote:
> >>> Hello,
> >>> 
> >>> after big changes in acpi video/i915 code I cannot change
> >>> display brightness on my Dell Latitude E6440 with kernel
> >>> 3.17-rc6. With kernel 3.13 everything worked fine.
> >>> 
> >>> More information about this problem:
> >>> 
> >>> For configuring brightness on Dell laptops there are 4
> >>> ways: 1) via acpi video driver
> >>> 2) via dell-laptop driver
> >>> 3) via i915 drm driver
> >>> 4) from userspace with special dell SMI call
> >>> 
> >>> (e.g with program dellLcdBrightness from libsmbios
> >>> package)
> >>> 
> >>> Methods 2) and 4) are same, both making special SMI call
> >>> and Bios handing this request (just 2 is from kernel and
> >>> 4 from userspace)
> >>> 
> >>> Method 1) via acpi video driver working, but is not
> >>> perfect. Driver can be used to change brightness (but
> >>> only some levels, probably this depends on acpi/DSDT
> >>> tables), but cannot be used to retrieve current
> >>> brightness (when BIOS/SMI change brightness acpi driver
> >>> report old incorrect value). So I prefer dell-laptop
> >>> driver instead acpi video.
> >>> 
> >>> Method 3) working even with 3.17-rc6 kernel but because
> >>> that backlight device exported by i915 is marked as raw,
> >>> desktop programs prefer to use other devices.
> >>> 
> >>> Moreover it looks like that methods 1) 2) and 4) just
> >>> forward request to method 3). So in any cased brightness
> >>> is changed by i915 drm driver.
> >>> 
> >>> I'm not sure (correct me if I'm wrong!) but I think that
> >>> intel i915 drm driver accept changes (file
> >>> intel_opregion.c) only if acpi function
> >>> acpi_video_verify_backlight_support() returns true.
> >>> 
> >>> Function acpi_video_verify_backlight_support() returns
> >>> true iff: function acpi_video_backlight_support() returns
> >>> true AND at least one of these functions returns false:
> >>> acpi_osi_is_win8()
> >>> acpi_video_use_native_backlight()
> >>> backlight_device_registered(BACKLIGHT_RAW)
> >>> 
> >>> On my notebook acpi_osi_is_win8() returns true (as is win8
> >>> compliant), backlight_device_registered(BACKLIGHT_RAW)
> >>> returns true as I'm using intel i915 drm driver with raw
> >>> backlight device and acpi_video_use_native_backlight()
> >>> returns true/false depending on
> >>> "video.use_native_backlight" kernel param. Default is
> >>> true.
> >>> 
> >>> So if I want to have working acpi video driver with
> >>> display brightness support I need to boot kernel with
> >>> param: "video.use_native_backlight=0". I tested it with
> >>> kernel 3.17-rc6 and this param really enabled display
> >>> brightness support via acpi video driver -- which is
> >>> good.
> >>> 
> >>> Driver dell-laptop creating backligh device for brightness
> >>> control only if acpi_video_backlight_support() returns
> >>> false. There is complicated condition for it and when
> >>> kernel is booted with "video.use_native_backlight=0" that
> >>> function returns true.
> >>> 
> >>> So conclusion is: With current code in kernel 3.17-rc6 it
> >>> is not possible to control brightness of display with
> >>> native driver dell-laptop on Dell Latitude E6440 (and
> >>> probably on others too)!!!
> >>> 
> >>> And Because laptop is win8 compliant and you create
> >>> decision to use native driver (instead acpi one) it is
> >>> not possible to control display brightness without tweeks
> >>> in kernel cmdline.
> >>> 
> >>> As I wrote I would rather to use native dell-laptop driver
> >>> for controlling brightness, but it is not possible.
> >>> 
> >>> So how to solve this problem?
> >>> 
> >>> Quick solution would be to set use_native_backlight false
> >>> for some Dell laptops which means, that acpi video will be
> >>> used and in this case intel i915 driver will *not* drop
> >>> backlight change request.
> >>> 
> >>> Another solution could be to disable check in dell_laptop
> >>> driver and add use_native_backlight=0 to hooks. But this
> >>> create two backlight interfaces (which is not good), but
> >>> only way (for now) how to make dell_laptop working again.
> >>> 
> >>> Better and maybe only one proper solution would be to
> >>> teach intel drm i915 driver to not drop backlight change
> >>> request for Dell laptops (or all??). (This allows to work
> >>> both acpi video and dell_laptop drivers without any
> >>> change and with *any* value in param
> >>> use_native_backlight). I think that problematic code is
> >>> in function asle_set_backlight() in file intel_opregion.c
> >>> (but I'm not sure). My idea is that "drop" event function
> >>> it is caused by this commit
> >>> 0b9f7d93ca6109048a4eb06332b666b6e29df4fe (but I'm not
> >>> sure).
> >>> 
> >>> At least something must be done as I think that I'm not
> >>> only one who has Dell laptop and brightn

ACPI/i915: Cannot configure display brightness on Dell Latitude E6440

2014-09-24 Thread Hans de Goede
Hi,

On 09/23/2014 10:44 PM, Pali Roh?r wrote:
> On Tuesday 23 September 2014 22:31:31 you wrote:
>> Hi,
>>
>> On 09/23/2014 10:06 PM, Pali Roh?r wrote:
>>> Hello,
>>>
>>> after big changes in acpi video/i915 code I cannot change
>>> display brightness on my Dell Latitude E6440 with kernel
>>> 3.17-rc6. With kernel 3.13 everything worked fine.
>>>
>>> More information about this problem:
>>>
>>> For configuring brightness on Dell laptops there are 4 ways:
>>> 1) via acpi video driver
>>> 2) via dell-laptop driver
>>> 3) via i915 drm driver
>>> 4) from userspace with special dell SMI call
>>>
>>> (e.g with program dellLcdBrightness from libsmbios
>>> package)
>>>
>>> Methods 2) and 4) are same, both making special SMI call and
>>> Bios handing this request (just 2 is from kernel and 4 from
>>> userspace)
>>>
>>> Method 1) via acpi video driver working, but is not perfect.
>>> Driver can be used to change brightness (but only some
>>> levels, probably this depends on acpi/DSDT tables), but
>>> cannot be used to retrieve current brightness (when
>>> BIOS/SMI change brightness acpi driver report old incorrect
>>> value). So I prefer dell-laptop driver instead acpi video.
>>>
>>> Method 3) working even with 3.17-rc6 kernel but because that
>>> backlight device exported by i915 is marked as raw, desktop
>>> programs prefer to use other devices.
>>>
>>> Moreover it looks like that methods 1) 2) and 4) just
>>> forward request to method 3). So in any cased brightness is
>>> changed by i915 drm driver.
>>>
>>> I'm not sure (correct me if I'm wrong!) but I think that
>>> intel i915 drm driver accept changes (file
>>> intel_opregion.c) only if acpi function
>>> acpi_video_verify_backlight_support() returns true.
>>>
>>> Function acpi_video_verify_backlight_support() returns true
>>> iff: function acpi_video_backlight_support() returns true
>>> AND at least one of these functions returns false:
>>> acpi_osi_is_win8()
>>> acpi_video_use_native_backlight()
>>> backlight_device_registered(BACKLIGHT_RAW)
>>>
>>> On my notebook acpi_osi_is_win8() returns true (as is win8
>>> compliant), backlight_device_registered(BACKLIGHT_RAW)
>>> returns true as I'm using intel i915 drm driver with raw
>>> backlight device and acpi_video_use_native_backlight()
>>> returns true/false depending on
>>> "video.use_native_backlight" kernel param. Default is true.
>>>
>>> So if I want to have working acpi video driver with display
>>> brightness support I need to boot kernel with param:
>>> "video.use_native_backlight=0". I tested it with kernel
>>> 3.17-rc6 and this param really enabled display brightness
>>> support via acpi video driver -- which is good.
>>>
>>> Driver dell-laptop creating backligh device for brightness
>>> control only if acpi_video_backlight_support() returns
>>> false. There is complicated condition for it and when
>>> kernel is booted with "video.use_native_backlight=0" that
>>> function returns true.
>>>
>>> So conclusion is: With current code in kernel 3.17-rc6 it is
>>> not possible to control brightness of display with native
>>> driver dell-laptop on Dell Latitude E6440 (and probably on
>>> others too)!!!
>>>
>>> And Because laptop is win8 compliant and you create decision
>>> to use native driver (instead acpi one) it is not possible
>>> to control display brightness without tweeks in kernel
>>> cmdline.
>>>
>>> As I wrote I would rather to use native dell-laptop driver
>>> for controlling brightness, but it is not possible.
>>>
>>> So how to solve this problem?
>>>
>>> Quick solution would be to set use_native_backlight false
>>> for some Dell laptops which means, that acpi video will be
>>> used and in this case intel i915 driver will *not* drop
>>> backlight change request.
>>>
>>> Another solution could be to disable check in dell_laptop
>>> driver and add use_native_backlight=0 to hooks. But this
>>> create two backlight interfaces (which is not good), but
>>> only way (for now) how to make dell_laptop working again.
>>>
>>> Better and maybe only one proper solution would be to teach
>>> intel drm i915 driver to not drop backlight change request
>>> for Dell laptops (or all??). (This allows to work both acpi
>>> video and dell_laptop drivers without any change and with
>>> *any* value in param use_native_backlight). I think that
>>> problematic code is in function asle_set_backlight() in
>>> file intel_opregion.c (but I'm not sure). My idea is that
>>> "drop" event function it is caused by this commit
>>> 0b9f7d93ca6109048a4eb06332b666b6e29df4fe (but I'm not
>>> sure).
>>>
>>> At least something must be done as I think that I'm not only
>>> one who has Dell laptop and brightness configuration is
>>> really important...
>>
>> I don't understand your problem, the kernel is selecting the
>> i915 backlight driver, making that the only one available to
>> userspace, so the one problem you state with the i915 driver,
>> that it is "raw" is not an issue, as userspace will pick it
>> when it is the only one.

ACPI/i915: Cannot configure display brightness on Dell Latitude E6440

2014-09-23 Thread Pali Rohár
On Tuesday 23 September 2014 22:31:31 you wrote:
> Hi,
> 
> On 09/23/2014 10:06 PM, Pali Roh?r wrote:
> > Hello,
> > 
> > after big changes in acpi video/i915 code I cannot change
> > display brightness on my Dell Latitude E6440 with kernel
> > 3.17-rc6. With kernel 3.13 everything worked fine.
> > 
> > More information about this problem:
> > 
> > For configuring brightness on Dell laptops there are 4 ways:
> > 1) via acpi video driver
> > 2) via dell-laptop driver
> > 3) via i915 drm driver
> > 4) from userspace with special dell SMI call
> > 
> > (e.g with program dellLcdBrightness from libsmbios
> > package)
> > 
> > Methods 2) and 4) are same, both making special SMI call and
> > Bios handing this request (just 2 is from kernel and 4 from
> > userspace)
> > 
> > Method 1) via acpi video driver working, but is not perfect.
> > Driver can be used to change brightness (but only some
> > levels, probably this depends on acpi/DSDT tables), but
> > cannot be used to retrieve current brightness (when
> > BIOS/SMI change brightness acpi driver report old incorrect
> > value). So I prefer dell-laptop driver instead acpi video.
> > 
> > Method 3) working even with 3.17-rc6 kernel but because that
> > backlight device exported by i915 is marked as raw, desktop
> > programs prefer to use other devices.
> > 
> > Moreover it looks like that methods 1) 2) and 4) just
> > forward request to method 3). So in any cased brightness is
> > changed by i915 drm driver.
> > 
> > I'm not sure (correct me if I'm wrong!) but I think that
> > intel i915 drm driver accept changes (file
> > intel_opregion.c) only if acpi function
> > acpi_video_verify_backlight_support() returns true.
> > 
> > Function acpi_video_verify_backlight_support() returns true
> > iff: function acpi_video_backlight_support() returns true
> > AND at least one of these functions returns false:
> > acpi_osi_is_win8()
> > acpi_video_use_native_backlight()
> > backlight_device_registered(BACKLIGHT_RAW)
> > 
> > On my notebook acpi_osi_is_win8() returns true (as is win8
> > compliant), backlight_device_registered(BACKLIGHT_RAW)
> > returns true as I'm using intel i915 drm driver with raw
> > backlight device and acpi_video_use_native_backlight()
> > returns true/false depending on
> > "video.use_native_backlight" kernel param. Default is true.
> > 
> > So if I want to have working acpi video driver with display
> > brightness support I need to boot kernel with param:
> > "video.use_native_backlight=0". I tested it with kernel
> > 3.17-rc6 and this param really enabled display brightness
> > support via acpi video driver -- which is good.
> > 
> > Driver dell-laptop creating backligh device for brightness
> > control only if acpi_video_backlight_support() returns
> > false. There is complicated condition for it and when
> > kernel is booted with "video.use_native_backlight=0" that
> > function returns true.
> > 
> > So conclusion is: With current code in kernel 3.17-rc6 it is
> > not possible to control brightness of display with native
> > driver dell-laptop on Dell Latitude E6440 (and probably on
> > others too)!!!
> > 
> > And Because laptop is win8 compliant and you create decision
> > to use native driver (instead acpi one) it is not possible
> > to control display brightness without tweeks in kernel
> > cmdline.
> > 
> > As I wrote I would rather to use native dell-laptop driver
> > for controlling brightness, but it is not possible.
> > 
> > So how to solve this problem?
> > 
> > Quick solution would be to set use_native_backlight false
> > for some Dell laptops which means, that acpi video will be
> > used and in this case intel i915 driver will *not* drop
> > backlight change request.
> > 
> > Another solution could be to disable check in dell_laptop
> > driver and add use_native_backlight=0 to hooks. But this
> > create two backlight interfaces (which is not good), but
> > only way (for now) how to make dell_laptop working again.
> > 
> > Better and maybe only one proper solution would be to teach
> > intel drm i915 driver to not drop backlight change request
> > for Dell laptops (or all??). (This allows to work both acpi
> > video and dell_laptop drivers without any change and with
> > *any* value in param use_native_backlight). I think that
> > problematic code is in function asle_set_backlight() in
> > file intel_opregion.c (but I'm not sure). My idea is that
> > "drop" event function it is caused by this commit
> > 0b9f7d93ca6109048a4eb06332b666b6e29df4fe (but I'm not
> > sure).
> > 
> > At least something must be done as I think that I'm not only
> > one who has Dell laptop and brightness configuration is
> > really important...
> 
> I don't understand your problem, the kernel is selecting the
> i915 backlight driver, making that the only one available to
> userspace, so the one problem you state with the i915 driver,
> that it is "raw" is not an issue, as userspace will pick it
> when it is the only one.
> 

It is not only one. Also dell-

ACPI/i915: Cannot configure display brightness on Dell Latitude E6440

2014-09-23 Thread Hans de Goede
Hi,

On 09/23/2014 10:06 PM, Pali Roh?r wrote:
> Hello,
>
> after big changes in acpi video/i915 code I cannot change display
> brightness on my Dell Latitude E6440 with kernel 3.17-rc6. With
> kernel 3.13 everything worked fine.
>
> More information about this problem:
>
> For configuring brightness on Dell laptops there are 4 ways:
> 1) via acpi video driver
> 2) via dell-laptop driver
> 3) via i915 drm driver
> 4) from userspace with special dell SMI call
> (e.g with program dellLcdBrightness from libsmbios package)
>
> Methods 2) and 4) are same, both making special SMI call and Bios
> handing this request (just 2 is from kernel and 4 from userspace)
>
> Method 1) via acpi video driver working, but is not perfect.
> Driver can be used to change brightness (but only some levels,
> probably this depends on acpi/DSDT tables), but cannot be used to
> retrieve current brightness (when BIOS/SMI change brightness acpi
> driver report old incorrect value). So I prefer dell-laptop
> driver instead acpi video.
>
> Method 3) working even with 3.17-rc6 kernel but because that
> backlight device exported by i915 is marked as raw, desktop
> programs prefer to use other devices.
>
> Moreover it looks like that methods 1) 2) and 4) just forward
> request to method 3). So in any cased brightness is changed by
> i915 drm driver.
>
> I'm not sure (correct me if I'm wrong!) but I think that intel
> i915 drm driver accept changes (file intel_opregion.c) only if
> acpi function acpi_video_verify_backlight_support() returns true.
>
> Function acpi_video_verify_backlight_support() returns true iff:
> function acpi_video_backlight_support() returns true AND at least
> one of these functions returns false:
> acpi_osi_is_win8()
> acpi_video_use_native_backlight()
> backlight_device_registered(BACKLIGHT_RAW)
>
> On my notebook acpi_osi_is_win8() returns true (as is win8
> compliant), backlight_device_registered(BACKLIGHT_RAW) returns
> true as I'm using intel i915 drm driver with raw backlight device
> and acpi_video_use_native_backlight() returns true/false
> depending on "video.use_native_backlight" kernel param. Default
> is true.
>
> So if I want to have working acpi video driver with display
> brightness support I need to boot kernel with param:
> "video.use_native_backlight=0". I tested it with kernel 3.17-rc6
> and this param really enabled display brightness support via acpi
> video driver -- which is good.
>
> Driver dell-laptop creating backligh device for brightness
> control only if acpi_video_backlight_support() returns false.
> There is complicated condition for it and when kernel is booted
> with "video.use_native_backlight=0" that function returns true.
>
> So conclusion is: With current code in kernel 3.17-rc6 it is not
> possible to control brightness of display with native driver
> dell-laptop on Dell Latitude E6440 (and probably on others
> too)!!!
>
> And Because laptop is win8 compliant and you create decision to
> use native driver (instead acpi one) it is not possible to
> control display brightness without tweeks in kernel cmdline.
>
> As I wrote I would rather to use native dell-laptop driver for
> controlling brightness, but it is not possible.
>
> So how to solve this problem?
>
> Quick solution would be to set use_native_backlight false for
> some Dell laptops which means, that acpi video will be used and
> in this case intel i915 driver will *not* drop backlight change
> request.
>
> Another solution could be to disable check in dell_laptop driver
> and add use_native_backlight=0 to hooks. But this create two
> backlight interfaces (which is not good), but only way (for now)
> how to make dell_laptop working again.
>
> Better and maybe only one proper solution would be to teach intel
> drm i915 driver to not drop backlight change request for Dell
> laptops (or all??). (This allows to work both acpi video and
> dell_laptop drivers without any change and with *any* value in
> param use_native_backlight). I think that problematic code is in
> function asle_set_backlight() in file intel_opregion.c (but I'm
> not sure). My idea is that "drop" event function it is caused by
> this commit 0b9f7d93ca6109048a4eb06332b666b6e29df4fe (but I'm not
> sure).
>
> At least something must be done as I think that I'm not only one
> who has Dell laptop and brightness configuration is really
> important...

I don't understand your problem, the kernel is selecting the
i915 backlight driver, making that the only one available to
userspace, so the one problem you state with the i915 driver, that
it is "raw" is not an issue, as userspace will pick it when it is
the only one.

Why would you want to use dell-laptop despite the i915 driver
working fine ?

Regards,

Hans


ACPI/i915: Cannot configure display brightness on Dell Latitude E6440

2014-09-23 Thread Pali Rohár
Hello,

after big changes in acpi video/i915 code I cannot change display 
brightness on my Dell Latitude E6440 with kernel 3.17-rc6. With 
kernel 3.13 everything worked fine.

More information about this problem:

For configuring brightness on Dell laptops there are 4 ways:
1) via acpi video driver
2) via dell-laptop driver
3) via i915 drm driver
4) from userspace with special dell SMI call
   (e.g with program dellLcdBrightness from libsmbios package)

Methods 2) and 4) are same, both making special SMI call and Bios 
handing this request (just 2 is from kernel and 4 from userspace)

Method 1) via acpi video driver working, but is not perfect. 
Driver can be used to change brightness (but only some levels, 
probably this depends on acpi/DSDT tables), but cannot be used to 
retrieve current brightness (when BIOS/SMI change brightness acpi 
driver report old incorrect value). So I prefer dell-laptop 
driver instead acpi video.

Method 3) working even with 3.17-rc6 kernel but because that 
backlight device exported by i915 is marked as raw, desktop 
programs prefer to use other devices.

Moreover it looks like that methods 1) 2) and 4) just forward 
request to method 3). So in any cased brightness is changed by 
i915 drm driver.

I'm not sure (correct me if I'm wrong!) but I think that intel 
i915 drm driver accept changes (file intel_opregion.c) only if 
acpi function acpi_video_verify_backlight_support() returns true.

Function acpi_video_verify_backlight_support() returns true iff:
function acpi_video_backlight_support() returns true AND at least 
one of these functions returns false:
acpi_osi_is_win8()
acpi_video_use_native_backlight() 
backlight_device_registered(BACKLIGHT_RAW)

On my notebook acpi_osi_is_win8() returns true (as is win8 
compliant), backlight_device_registered(BACKLIGHT_RAW) returns 
true as I'm using intel i915 drm driver with raw backlight device 
and acpi_video_use_native_backlight() returns true/false 
depending on "video.use_native_backlight" kernel param. Default 
is true.

So if I want to have working acpi video driver with display 
brightness support I need to boot kernel with param: 
"video.use_native_backlight=0". I tested it with kernel 3.17-rc6 
and this param really enabled display brightness support via acpi 
video driver -- which is good.

Driver dell-laptop creating backligh device for brightness 
control only if acpi_video_backlight_support() returns false. 
There is complicated condition for it and when kernel is booted 
with "video.use_native_backlight=0" that function returns true.

So conclusion is: With current code in kernel 3.17-rc6 it is not 
possible to control brightness of display with native driver 
dell-laptop on Dell Latitude E6440 (and probably on others 
too)!!!

And Because laptop is win8 compliant and you create decision to 
use native driver (instead acpi one) it is not possible to 
control display brightness without tweeks in kernel cmdline.

As I wrote I would rather to use native dell-laptop driver for 
controlling brightness, but it is not possible.

So how to solve this problem?

Quick solution would be to set use_native_backlight false for 
some Dell laptops which means, that acpi video will be used and 
in this case intel i915 driver will *not* drop backlight change 
request.

Another solution could be to disable check in dell_laptop driver 
and add use_native_backlight=0 to hooks. But this create two 
backlight interfaces (which is not good), but only way (for now) 
how to make dell_laptop working again.

Better and maybe only one proper solution would be to teach intel 
drm i915 driver to not drop backlight change request for Dell 
laptops (or all??). (This allows to work both acpi video and 
dell_laptop drivers without any change and with *any* value in 
param use_native_backlight). I think that problematic code is in 
function asle_set_backlight() in file intel_opregion.c (but I'm 
not sure). My idea is that "drop" event function it is caused by 
this commit 0b9f7d93ca6109048a4eb06332b666b6e29df4fe (but I'm not 
sure).

At least something must be done as I think that I'm not only one 
who has Dell laptop and brightness configuration is really 
important...

Thanks.

-- 
Pali Roh?r
pali.rohar at gmail.com
-- next part --
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: