aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/fb/vesa.c
diff options
context:
space:
mode:
authorJung-uk Kim <jkim@FreeBSD.org>2012-02-23 20:54:22 +0000
committerJung-uk Kim <jkim@FreeBSD.org>2012-02-23 20:54:22 +0000
commit7e330e8220f770b3e0e24905899e4e824e9db98a (patch)
tree88f517c78befb8340e80cd5909d198e39f428746 /sys/dev/fb/vesa.c
parente7d5cd47c5d72a7a17846df9702db12f3600560a (diff)
Notes
Diffstat (limited to 'sys/dev/fb/vesa.c')
-rw-r--r--sys/dev/fb/vesa.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/sys/dev/fb/vesa.c b/sys/dev/fb/vesa.c
index 731ddd0c53b5..ffa2d1ddbf60 100644
--- a/sys/dev/fb/vesa.c
+++ b/sys/dev/fb/vesa.c
@@ -1451,15 +1451,13 @@ static int
vesa_save_state(video_adapter_t *adp, void *p, size_t size)
{
- if (adp != vesa_adp)
+ if (adp != vesa_adp || vesa_state_buf_size == 0)
return ((*prevvidsw->save_state)(adp, p, size));
- if (vesa_state_buf_size == 0)
- return (1);
if (size == 0)
return (offsetof(adp_state_t, regs) + vesa_state_buf_size);
if (size < (offsetof(adp_state_t, regs) + vesa_state_buf_size))
- return (1);
+ return (EINVAL);
((adp_state_t *)p)->sig = V_STATE_SIG;
bzero(((adp_state_t *)p)->regs, vesa_state_buf_size);
@@ -1471,12 +1469,9 @@ vesa_load_state(video_adapter_t *adp, void *p)
{
int mode;
- if ((adp != vesa_adp) || (((adp_state_t *)p)->sig != V_STATE_SIG))
+ if (adp != vesa_adp)
return ((*prevvidsw->load_state)(adp, p));
- if (vesa_state_buf_size == 0)
- return (1);
-
/* Try BIOS POST to restore a sane state. */
(void)vesa_bios_post();
mode = adp->va_mode;
@@ -1484,6 +1479,8 @@ vesa_load_state(video_adapter_t *adp, void *p)
if (mode != adp->va_initial_mode)
(void)vesa_set_mode(adp, mode);
+ if (((adp_state_t *)p)->sig != V_STATE_SIG)
+ return ((*prevvidsw->load_state)(adp, p));
return (vesa_bios_save_restore(STATE_LOAD, ((adp_state_t *)p)->regs));
}