From: "Antonino A. Daplas" <adaplas@gmail.com>
To: Lucas Correia Villa Real <lucasvr@gobolinux.org>
Cc: linux-fbdev-devel@lists.sourceforge.net
Subject: Re: Re: i810fb_blank
Date: Fri, 16 Dec 2005 14:00:00 +0800 [thread overview]
Message-ID: <43A257E0.9030204@gmail.com> (raw)
In-Reply-To: <200512160155.17019.lucasvr@gobolinux.org>
Lucas Correia Villa Real wrote:
> On Thursday 15 December 2005 21:15, Antonino A. Daplas wrote:
>> Lucas Correia Villa Real wrote:
>>> Hi!
>>>
>>> While looking at i810fb_blank() on 2.4 and 2.6, I've seen that
>>> there's a difference on how pwr mask is handled: 2.4 unsets
>>> the pwr bit on FB_BLANK_VSYNC_SUSPEND and
>>> FB_BLANK_HSYNC_SUSPEND commands, while 2.6 turns that bit on.
>>> Was that modification expected, or was it a typo? The attached
>>> patch shows the code in question.
>> That's the expected change. We only want to completely power
>> down the adapter on the deepest powersaving mode.
>>
>> Are you experiencing any problems with the new/old code?
>
> A fellow worker has been working with software suspend 2 on a set
> top box which has an i810 card. The suspend command was not making
> the card to power off, so I looked at the code to give him a help,
> when I saw that different behaviour from 2.4 (2.4 hasn't been
> tested there, though).
>
> I haven't seen this guy since then, so I don't know if that change
> did the trick for him. I'll let you know as soon as possible.
I have neglected the suspend and resume hooks of i810fb so it's not
updated with the current code. I don't have the hardware so I cannot
test. Can you tell your friend to also try this patch if he cannot
solve the problem?
Tony
diff --git a/drivers/video/i810/i810_main.c b/drivers/video/i810/i810_main.c
index 4954a8e..563abc9 100644
--- a/drivers/video/i810/i810_main.c
+++ b/drivers/video/i810/i810_main.c
@@ -1558,35 +1558,28 @@ static int i810fb_suspend(struct pci_dev
{
struct fb_info *info = pci_get_drvdata(dev);
struct i810fb_par *par = info->par;
- int blank = 0, prev_state = par->cur_state;
-
- if (state.event == prev_state)
- return 0;
par->cur_state = state.event;
- switch (state.event) {
- case 1:
- blank = VESA_VSYNC_SUSPEND;
- break;
- case 2:
- blank = VESA_HSYNC_SUSPEND;
- break;
- case 3:
- blank = VESA_POWERDOWN;
- break;
- default:
- return -EINVAL;
- }
- info->fbops->fb_blank(blank, info);
-
- if (!prev_state) {
- agp_unbind_memory(par->i810_gtt.i810_fb_memory);
- agp_unbind_memory(par->i810_gtt.i810_cursor_memory);
- pci_disable_device(dev);
+ if (state.event == PM_EVENT_FREEZE) {
+ dev->dev.power.power_state = state;
+ return 0;
}
+
+ acquire_console_sem();
+ fb_set_suspend(info, 1);
+
+ if (info->fbops->fb_sync)
+ info->fbops->fb_sync(info);
+
+ i810fb_blank(FB_BLANK_POWERDOWN, info);
+ agp_unbind_memory(par->i810_gtt.i810_fb_memory);
+ agp_unbind_memory(par->i810_gtt.i810_cursor_memory);
+
pci_save_state(dev);
+ pci_disable_device(dev);
pci_set_power_state(dev, pci_choose_state(dev, state));
+ release_console_sem();
return 0;
}
@@ -1595,22 +1588,28 @@ static int i810fb_resume(struct pci_dev
{
struct fb_info *info = pci_get_drvdata(dev);
struct i810fb_par *par = info->par;
+ int cur_state = par->cur_state;
- if (par->cur_state == 0)
+ par->cur_state = PM_EVENT_ON;
+
+ if (cur_state == PM_EVENT_FREEZE) {
+ pci_set_power_state(dev, PCI_D0);
return 0;
+ }
- pci_restore_state(dev);
+ acquire_console_sem();
pci_set_power_state(dev, PCI_D0);
+ pci_restore_state(dev);
pci_enable_device(dev);
+ pci_set_master(dev);
agp_bind_memory(par->i810_gtt.i810_fb_memory,
par->fb.offset);
agp_bind_memory(par->i810_gtt.i810_cursor_memory,
par->cursor_heap.offset);
-
+ i810fb_set_par(info);
+ fb_set_suspend (info, 0);
info->fbops->fb_blank(VESA_NO_BLANKING, info);
-
- par->cur_state = 0;
-
+ release_console_sem();
return 0;
}
/***********************************************************************
-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems? Stop! Download the new AJAX search engine that makes
searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
next prev parent reply other threads:[~2005-12-16 6:00 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-12-15 18:14 i810fb_blank Lucas Correia Villa Real
2005-12-15 23:15 ` i810fb_blank Antonino A. Daplas
2005-12-16 3:55 ` i810fb_blank Lucas Correia Villa Real
2005-12-16 6:00 ` Antonino A. Daplas [this message]
2005-12-16 18:10 ` Lucas Correia Villa Real
2005-12-16 19:10 ` Antonino A. Daplas
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=43A257E0.9030204@gmail.com \
--to=adaplas@gmail.com \
--cc=linux-fbdev-devel@lists.sourceforge.net \
--cc=lucasvr@gobolinux.org \
/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.