diff mbox

drm/gma500: fix backlight hotkeys behaviour on cedarview netbooks

Message ID 1366817761-17964-1-git-send-email-anisse@astier.eu (mailing list archive)
State New, archived
Headers show

Commit Message

Anisse Astier April 24, 2013, 3:36 p.m. UTC
Backlight hotkeys weren't working before on certain cedartrail laptops.

The source of this problem is that the hotkeys' ASLE opregion interrupts
were simply ignored. Driver seemed to expect the interrupt to be
associated with a pipe, but it wasn't.

Accepting the ASLE interrupt without an associated pipe event flag fixes
the issue, the backlight code is called when needed, making the
brightness keys work properly.

Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=833597
Reference: http://lists.freedesktop.org/archives/dri-devel/2012-July/025279.html
Cc: stable@kernel.org
Signed-off-by: Anisse Astier <anisse@astier.eu>
---
 drivers/gpu/drm/gma500/psb_irq.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Patrik Jakobsson April 24, 2013, 9:39 p.m. UTC | #1
On Wed, Apr 24, 2013 at 5:36 PM, Anisse Astier <anisse@astier.eu> wrote:
> Backlight hotkeys weren't working before on certain cedartrail laptops.
>
> The source of this problem is that the hotkeys' ASLE opregion interrupts
> were simply ignored. Driver seemed to expect the interrupt to be
> associated with a pipe, but it wasn't.
>
> Accepting the ASLE interrupt without an associated pipe event flag fixes
> the issue, the backlight code is called when needed, making the
> brightness keys work properly.
>
> Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=833597
> Reference: http://lists.freedesktop.org/archives/dri-devel/2012-July/025279.html
> Cc: stable@kernel.org
> Signed-off-by: Anisse Astier <anisse@astier.eu>
> ---
>  drivers/gpu/drm/gma500/psb_irq.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/gma500/psb_irq.c b/drivers/gpu/drm/gma500/psb_irq.c
> index 8652cdf..029eccf 100644
> --- a/drivers/gpu/drm/gma500/psb_irq.c
> +++ b/drivers/gpu/drm/gma500/psb_irq.c
> @@ -211,7 +211,7 @@ irqreturn_t psb_irq_handler(DRM_IRQ_ARGS)
>
>         vdc_stat = PSB_RVDC32(PSB_INT_IDENTITY_R);
>
> -       if (vdc_stat & _PSB_PIPE_EVENT_FLAG)
> +       if (vdc_stat & (_PSB_PIPE_EVENT_FLAG|_PSB_IRQ_ASLE))
>                 dsp_int = 1;
>
>         /* FIXME: Handle Medfield
> --
> 1.8.1.4
>

Hi Anisse

This also fixes backlight keys on my Asus poulsbo laptop.

An ASLE IRQ is triggered by the BIOS when writing to a PCI config register. Some
BIOSes might trigger a pipe event at the same time but they obviously don't have
to (and I don't think they should). I'm not sure it needs to be in
psb_vdc_interrupt() but we might as well leave it there for now.

I'll apply this to git://github.com/patjak/drm-gma500 gma500-fixes

Thanks
Patrik
Anisse Astier May 2, 2013, 12:39 p.m. UTC | #2
On Wed, 24 Apr 2013 23:39:58 +0200, Patrik Jakobsson <patrik.r.jakobsson@gmail.com> wrote :

> On Wed, Apr 24, 2013 at 5:36 PM, Anisse Astier <anisse@astier.eu> wrote:
> > Backlight hotkeys weren't working before on certain cedartrail laptops.
> >
> > The source of this problem is that the hotkeys' ASLE opregion interrupts
> > were simply ignored. Driver seemed to expect the interrupt to be
> > associated with a pipe, but it wasn't.
> >
> > Accepting the ASLE interrupt without an associated pipe event flag fixes
> > the issue, the backlight code is called when needed, making the
> > brightness keys work properly.
> >
[...]
> 
> This also fixes backlight keys on my Asus poulsbo laptop.
> 
> An ASLE IRQ is triggered by the BIOS when writing to a PCI config register. Some
> BIOSes might trigger a pipe event at the same time but they obviously don't have
> to (and I don't think they should). I'm not sure it needs to be in
> psb_vdc_interrupt() but we might as well leave it there for now.
> 
> I'll apply this to git://github.com/patjak/drm-gma500 gma500-fixes
> 
> Thanks
> Patrik

Hi Patrik,

When do you think you'll apply it to your repo ?

Dave, do you think this could go in 3.10 ?


Regards,

Anisse
Patrik Jakobsson May 2, 2013, 12:50 p.m. UTC | #3
On Thu, May 2, 2013 at 2:39 PM, Anisse Astier <anisse@astier.eu> wrote:
> On Wed, 24 Apr 2013 23:39:58 +0200, Patrik Jakobsson <patrik.r.jakobsson@gmail.com> wrote :
>
>> On Wed, Apr 24, 2013 at 5:36 PM, Anisse Astier <anisse@astier.eu> wrote:
>> > Backlight hotkeys weren't working before on certain cedartrail laptops.
>> >
>> > The source of this problem is that the hotkeys' ASLE opregion interrupts
>> > were simply ignored. Driver seemed to expect the interrupt to be
>> > associated with a pipe, but it wasn't.
>> >
>> > Accepting the ASLE interrupt without an associated pipe event flag fixes
>> > the issue, the backlight code is called when needed, making the
>> > brightness keys work properly.
>> >
> [...]
>>
>> This also fixes backlight keys on my Asus poulsbo laptop.
>>
>> An ASLE IRQ is triggered by the BIOS when writing to a PCI config register. Some
>> BIOSes might trigger a pipe event at the same time but they obviously don't have
>> to (and I don't think they should). I'm not sure it needs to be in
>> psb_vdc_interrupt() but we might as well leave it there for now.
>>
>> I'll apply this to git://github.com/patjak/drm-gma500 gma500-fixes
>>
>> Thanks
>> Patrik
>
> Hi Patrik,
>
> When do you think you'll apply it to your repo ?
>
> Dave, do you think this could go in 3.10 ?

Hi, this is already in my gma500-fixes branch and also in Dave's drm-next for
inclusion in 3.10.

Thanks
Patrik
Anisse Astier May 2, 2013, 12:54 p.m. UTC | #4
On Thu, 2 May 2013 14:50:05 +0200, Patrik Jakobsson <patrik.r.jakobsson@gmail.com> wrote :
> 
> Hi, this is already in my gma500-fixes branch and also in Dave's drm-next for
> inclusion in 3.10.
> 
> Thanks
> Patrik

Thanks, sorry I missed it.

Anisse
diff mbox

Patch

diff --git a/drivers/gpu/drm/gma500/psb_irq.c b/drivers/gpu/drm/gma500/psb_irq.c
index 8652cdf..029eccf 100644
--- a/drivers/gpu/drm/gma500/psb_irq.c
+++ b/drivers/gpu/drm/gma500/psb_irq.c
@@ -211,7 +211,7 @@  irqreturn_t psb_irq_handler(DRM_IRQ_ARGS)
 
 	vdc_stat = PSB_RVDC32(PSB_INT_IDENTITY_R);
 
-	if (vdc_stat & _PSB_PIPE_EVENT_FLAG)
+	if (vdc_stat & (_PSB_PIPE_EVENT_FLAG|_PSB_IRQ_ASLE))
 		dsp_int = 1;
 
 	/* FIXME: Handle Medfield