[PATCH] drm/radeon: add new AMD ACPI header and update relevant code

joeyli jlee at suse.com
Sat Jul 28 20:51:48 PDT 2012


Hi Luca, 

於 六,2012-07-28 於 16:56 +0200,Luca Tettamanti 提到:
> On Thu, Jul 26, 2012 at 03:42:26PM -0400, Alex Deucher wrote:
> > On Thu, Jul 26, 2012 at 3:33 PM, Luca Tettamanti <kronos.it at gmail.com> wrote:
> > > On Thu, Jul 26, 2012 at 11:35:25AM -0400, Alex Deucher wrote:
> > >> On Thu, Jul 26, 2012 at 8:58 AM, Luca Tettamanti <kronos.it at gmail.com> wrote:
> > >> > The other missing bit is how to actually change the brightness... Alex,
> > >> > do you know what registers to poke?
> > >>
> > >> You need to check if the GPU controls the backlight or the system
> > >> does.  I think the attached patches should point you in the right
> > >> direction.
> > >
> > > Yep :)
> > >
> > > 0050:  ATOM_FIRMWARE_CAPABILITY_ACCESS usFirmwareCapability :
> > >   0050:  (union) ATOM_FIRMWARE_CAPABILITY sbfAccess          :
> > >     USHORT GPUControlsBL:1                              = 0x0001     (1)
> > >
> > > The panel is using the INTERNAL_UNIPHY encoder, and I see the
> > > UNIPHYTransmitterControl command table.
> > >
> > > Interaction with video.ko is still a bit messy...
> > >
> > > Do you already have code for handling the notifications? I'll work on it
> > > in the weekend otherwise ;)
> > 
> > I don't have patches for that.  Please feel free to work on it :)
> 
> I just found the first problem (probably a BIOS bug):
> ATIF_FUNCTION_GET_SYSTEM_PARAMETERS is implemented in the DSDT, but the
> corresponding bit ATIF_GET_SYSTEM_PARAMETERS_SUPPORTED is not set :(
> I intended to use the method to set up the notification handler but now
> my BIOS says that it's not there even if it is...
> Can I assume some default values (e.g. notifications are enabled and will
> use 0x81 unless ATIF_FUNCTION_GET_SYSTEM_PARAMETERS says something
> different)?
> 
> thanks,
> Luca
> 

Did you check your DSDT for there have some "Notify (VGA, 0x81)"
statement in AFN0..AFN15?
If YES, I think that means your machine in case the 0x81 is for ATI used
by default.

On the other hand, 
I am also trying to write patch for avoid my AC-power problem. Like your
idea, I think just add radeon-acpi to acpi notifier chain then
acpi/video feed event to chain before issue KEY code like Matthew's code
for ACPI_VIDEO_NOTIFY_SWITCH with intel_opregion on 0x80.
The following code for reference:


diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c
index 1e0a9e1..fc138fd 100644
--- a/drivers/acpi/video.c
+++ b/drivers/acpi/video.c
@@ -91,6 +91,8 @@ static int acpi_video_bus_add(struct acpi_device *device);
 static int acpi_video_bus_remove(struct acpi_device *device, int type);
 static void acpi_video_bus_notify(struct acpi_device *device, u32 event);
 
+static u16 video_notify_block_map;
+
 static const struct acpi_device_id video_device_ids[] = {
        {ACPI_VIDEO_HID, 0},
        {"", 0},
@@ -1457,7 +1459,8 @@ static void acpi_video_bus_notify(struct acpi_device *device, u32 event)
                acpi_video_device_enumerate(video);
                acpi_video_device_rebind(video);
                acpi_bus_generate_proc_event(device, event, 0);
-               keycode = KEY_SWITCHVIDEOMODE;
+               if (!acpi_notifier_call_chain(device, event, 0))
+                       keycode = KEY_SWITCHVIDEOMODE;
                break;
 
        case ACPI_VIDEO_NOTIFY_CYCLE:   /* Cycle Display output hotkey pressed. */
@@ -1479,7 +1482,8 @@ static void acpi_video_bus_notify(struct acpi_device *device, u32 event)
                break;
        }
 
-       if (event != ACPI_VIDEO_NOTIFY_SWITCH)
+       if (event != ACPI_VIDEO_NOTIFY_SWITCH ||
+           event != ACPI_VIDEO_NOTIFY_PROBE)
                acpi_notifier_call_chain(device, event, 0);
 
        if (keycode) {


Thanks a lot!
Joey Lee



More information about the dri-devel mailing list