If a driver is failing to resume a device properly, then I believe the only solution you will find will be in debugging and identifying where the problem is so you can decide what to do from there. For example, I don't see how you can refresh if the video card is not reinitialized.
ACPI handles suspend/resume and display. For example, the following ACPI issue that occurs on some ThinkPads may address the symptoms your are describing:
When resuming from suspend-to-ram the text console displays may show
garbage instead of actual text. The machine is otherwise still
responsive and X displays fine. If all of this is true, then adding
the kernel option acpi_sleep=s3_bios,s3_mode in your menu.lst or
lilo.conf may solve the problem.
Problems with ACPI suspend-to-ram - ThinkWiki
If you're using the thinkpad_acpi
module that the above quote is addressing, that might be all you need. For more info on this solution, see Suspend2Ram - Powersave Documentation
First, there are several kernel parameters, that can be tried out.
Just add them to your "kernel"-line in /boot/grub/menu.lst. More
information about those can be found in
/usr/src/linux/Documentation/power/video.txt.
From video.txt:
During S3 resume, hardware needs to be reinitialized. For most
devices, this is easy, and kernel driver knows how to do it.
Unfortunately there's one exception: video card. Those are usually
initialized by BIOS, and kernel does not have enough information to
boot video card. (Kernel usually does not even contain video card
driver -- vesafb and vgacon are widely used).
More at video.txt Refer to the table here to see if a known acpi_sleep=<hack>
is listed for your video card model.
Debian Suspend and KMS
The Debian wiki suggests disabling KMS for a "corrupted video on resume" issue.1
A very common issue found after the computer resumes is corrupted
video (or black screen, or no LCD backlight). The first step is to
check whether the system is still running, which can be simply done by
pressing the Capslock button and check whether the Capslock LED is
changing accordingly. If the system is still running, in most cases we
need to add a video quirk for your video card.
Debian now has kernel mode setting (KMS) enabled by default for most
Intel, nVidia and ATI video cards. But pm-utils' video quirk does [not]
support KMS yet. So in most cases you should try disabling KMS first.
The detail steps for your specific video card can be found on the
KernelModesetting page.
After disabled KMS, if the video after resume still corrupts, you can
try to suspend the system by using some video quirks. Read the manpage
of the pm-suspend program for a very detail explanation of all the
quirks available, and try the combinations of them from commandline.
If you successfully find one combination of quirks that works for your
system, you can add them into /usr/lib/pm-utils/video-quirks to make
them permanent. At the same time, please help to file a bug against
the pm-utils package with a patch about your changes so it can benefit
the mass.
A common issue found on systems upgrading from old versions of Debian
is the enabling of quirk-s3-bios freezes the system during suspend. If
your system freezes during suspend, check the pm-suspend.log carefully
after enabled debugging and make sure quirk-s3-bios is not used.
If you think this is related to your issue, you can try disabling KMS as suggested. For insructions for your card see KernelModesetting - Debian Wiki
Debugging Suspend
The log of suspend and resume processes are in file
/var/log/pm-suspend.log. It contains moderately verbose information by
default. More information can be enabled for debugging by inserting
line export PM_DEBUG=true into the beginning of file
/usr/lib/pm-utils/pm-functions.
For more, check out the info on Kernel testing facility mentioned at Suspend - Debian Wiki as well. This can help you debug and isolate the problem.
Some examples and more in-depth debugging info that may help you "drivers that fail to suspend or resume their devices" is available at https://www.kernel.org/doc/Documentation/power/basic-pm-debugging.txt
Some more debugging ideas for pm-utils
at pm-utils - ArchWiki and https://unix.stackexchange.com/a/29090/87728
Here's a full list of Kernel Parameters many being relevant to acpi and suspend.
Good luck.