All of lore.kernel.org
 help / color / mirror / Atom feed
From: Aaron Lu <aaron.lu@intel.com>
To: Artem Savkov <artem.savkov@gmail.com>
Cc: Danny Baumann <dannybaumann@web.de>,
	"Rafael J. Wysocki" <rjw@sisk.pl>,
	linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] acpi/video: lcd_get_level_current doen't return current level
Date: Sun, 31 Mar 2013 18:07:57 +0800	[thread overview]
Message-ID: <51580AFD.4000809@intel.com> (raw)
In-Reply-To: <20130331081600.GA4549@thinkpad.lan>

On 03/31/2013 04:16 PM, Artem Savkov wrote:
> On Sun, Mar 31, 2013 at 09:04:21AM +0200, Danny Baumann wrote:
>> Hi,
>>
>> Artem Savkov <artem.savkov@gmail.com> schrieb:
>>
>>> On Sun, Mar 31, 2013 at 08:15:14AM +0200, Danny Baumann wrote:
>>>> Artem Savkov <artem.savkov@gmail.com> schrieb:
>>>>> acpi_video_device_lcd_get_level_current() called
>>>>> acpi_video_bqc_value_to_level()
>>>>> with "*level" as a second argument, resulting in level being
>>> returned
>>>>> based on
>>>>> initial input, not current brightness, breaking backlight controls.
>>>> I don't think this change is correct. As level was passed as
>>> parameter into the evaluation of _BQC, *level contains the AML returned
>>> brightness level afterwards, so it's correct to use it as an input to
>>> acpi_video_bqc_value_to_level(). Actually, the whole point of
>>> acpi_video_device_lcd_get_level_current() is to update
>>> device->brightness->curr, so it doesn't make sense to me to use it in
>>> that function.
>>>>
>>>> What's the exact problem this patch tries to solve?
>>>
>>> I'm running a -next kernel on my laptop and couple of days ago keyboard
>>> backlight controls stopped working: only 2 lower brightness levels.
>>> I've
>>> debugged it a bit and found out that acpi_video_switch_brightness()
>>> calls
>>> acpi_video_device_lcd_get_level_current() with level uninitialized and
>>> always gets lowest posible value.
>>
>> The point is: after the acpi_evaluate_object call, *level must contain the current brightness level, otherwise your BIOS is broken (this happens: e.g. my laptop always returns 100 from _BQC in Windows 8 mode). You can verify this easily by initializing level_current to some invalid value and checking it again after the call to _get_level_current. I'd be pretty surprised if the value didn't change. Also, if you look at [1], you'll see that the code operated on *level before as well.
>> This problem may have been obscured by the fact that the brightness device wasn't initialized properly before my patches went in. Does acpi_video_switch_brightness actually do anything for you when reverting the 3 newest commits of video.c?
>
> Yes, you are right. Both my patch and the version before your patches
> result in initial acpi_video_device_lcd_get_level_current call ending
> with invalid level being returned and bqc disabled, so they both just
> use *level = brightness->curr after that.
>

OK, this suggests the _BQC control method of your system is broken.
Please kindly file a bug in bugzilla.kernel.org, against
ACPI/Power-Video and attach the output of acpidump and dmidecode there,
I want to take a look, thanks.

-Aaron

  reply	other threads:[~2013-03-31 10:08 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-30 13:01 [PATCH] acpi/video: lcd_get_level_current doen't return current level Artem Savkov
2013-03-31  1:56 ` Rafael J. Wysocki
2013-03-31  6:15 ` Danny Baumann
2013-03-31  6:46   ` Artem Savkov
2013-03-31  7:04     ` Danny Baumann
2013-03-31  8:16       ` Artem Savkov
2013-03-31 10:07         ` Aaron Lu [this message]
2013-03-31 10:37           ` Artem Savkov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=51580AFD.4000809@intel.com \
    --to=aaron.lu@intel.com \
    --cc=artem.savkov@gmail.com \
    --cc=dannybaumann@web.de \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rjw@sisk.pl \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.