lkml.org 
[lkml]   [2005]   [Aug]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH] Radeonfb acpi vgapost
Micheal Marineau napsal(a):

>Here is a cleaned up version of the patch to repost radeon cards when
>resuming from acpi s3 suspend. I've been sitting on it for a while
>hoping that I might be able to gain some insight in how to use the d2
>state instead of this repost as ppc does. On my x86 laptop with a
>radeon 9000 resuming from d2 does manage to turn on the card/display,
>but it becomes horridly scrambled. But right now I don't have the time
>or the skill to actually get any futher than that.
>
>And btw, posting the card still causes the system to wait for a key
>press. I don't know if that is solvable with the current post method.
>Getting the existing d2 suspend/resume stuff to work might be the only
>way to clear that up.
>
>
>------------------------------------------------------------------------
>
>Index: linux-2.6.13-rc3/arch/i386/kernel/acpi/sleep.c
>===================================================================
>--- linux-2.6.13-rc3.orig/arch/i386/kernel/acpi/sleep.c 2005-07-12 21:46:46.000000000 -0700
>+++ linux-2.6.13-rc3/arch/i386/kernel/acpi/sleep.c 2005-07-29 19:03:56.000000000 -0700
>@@ -5,6 +5,7 @@
> * Copyright (C) 2001-2003 Pavel Machek <pavel@suse.cz>
> */
>
>+#include <linux/module.h>
> #include <linux/acpi.h>
> #include <linux/bootmem.h>
> #include <linux/dmi.h>
>@@ -56,6 +57,34 @@
> zap_low_mappings();
> }
>
>+/*
>+ * acpi_vgapost
>+ */
>+
>+extern void do_vgapost_lowlevel (unsigned long);
>
>
the comment is for acpi_vgapost, not for some extern somewhat, maybe...

>+
>+void acpi_vgapost (unsigned long slot)
>+{
>+ unsigned long flags, saved_video_flags = acpi_video_flags;
>+
>+ acpi_video_flags = (slot & 0xffff) << 16 | 1;
>+
>+ /* Map low memory and copy information */
>+ init_low_mapping(swapper_pg_dir, USER_PTRS_PER_PGD);
>+ memcpy((void *) acpi_wakeup_address, &wakeup_start, &wakeup_end - &wakeup_start);
>
>
80 chars on line max, please.

>+ acpi_copy_wakeup_routine(acpi_wakeup_address);
>+
>+ /* Tunnel thru real mode */
>+ local_irq_save(flags);
>+ do_vgapost_lowlevel(acpi_wakeup_address);
>+ local_irq_restore(flags);
>+
>
>
[snip]

>
> static void radeon_set_suspend(struct radeonfb_info *rinfo, int suspend)
> {
> u16 pwr_cmd;
>@@ -2657,6 +2666,8 @@
> */
> else if (rinfo->pm_mode & radeon_pm_d2)
> radeon_set_suspend(rinfo, 0);
>+ if (rinfo->pm_mode & radeon_pm_post && rinfo->reinit_func != NULL)
>
>
80 too

>+ rinfo->reinit_func(rinfo);
>
> rinfo->asleep = 0;
> } else
>@@ -2777,6 +2788,13 @@
> #endif
> }
> #endif /* defined(CONFIG_PM) && defined(CONFIG_PPC_OF) */
>
>
[snip]

It looks good, otherwise.

--
Jiri Slaby www.fi.muni.cz/~xslaby
~\-/~ jirislaby@gmail.com ~\-/~
241B347EC88228DE51EE A49C4A73A25004CB2A10

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-08-28 22:54    [W:1.848 / U:0.020 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site