fb: add support for drivers not needing VT switch at suspend/resume time
Use the new PM routines to indicate whether we need to VT switch at suspend and resume time. When a new driver is bound, set its flag accordingly, and when unbound, remove it from the PM's console tracking list. Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org> Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
Родитель
f43f627d2f
Коммит
3cf2667b9f
|
@ -1645,6 +1645,11 @@ static int do_register_framebuffer(struct fb_info *fb_info)
|
||||||
if (!fb_info->modelist.prev || !fb_info->modelist.next)
|
if (!fb_info->modelist.prev || !fb_info->modelist.next)
|
||||||
INIT_LIST_HEAD(&fb_info->modelist);
|
INIT_LIST_HEAD(&fb_info->modelist);
|
||||||
|
|
||||||
|
if (fb_info->skip_vt_switch)
|
||||||
|
pm_vt_switch_required(fb_info->dev, false);
|
||||||
|
else
|
||||||
|
pm_vt_switch_required(fb_info->dev, true);
|
||||||
|
|
||||||
fb_var_to_videomode(&mode, &fb_info->var);
|
fb_var_to_videomode(&mode, &fb_info->var);
|
||||||
fb_add_videomode(&mode, &fb_info->modelist);
|
fb_add_videomode(&mode, &fb_info->modelist);
|
||||||
registered_fb[i] = fb_info;
|
registered_fb[i] = fb_info;
|
||||||
|
@ -1679,6 +1684,8 @@ static int do_unregister_framebuffer(struct fb_info *fb_info)
|
||||||
if (ret)
|
if (ret)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
|
pm_vt_switch_unregister(fb_info->dev);
|
||||||
|
|
||||||
unlink_framebuffer(fb_info);
|
unlink_framebuffer(fb_info);
|
||||||
if (fb_info->pixmap.addr &&
|
if (fb_info->pixmap.addr &&
|
||||||
(fb_info->pixmap.flags & FB_PIXMAP_DEFAULT))
|
(fb_info->pixmap.flags & FB_PIXMAP_DEFAULT))
|
||||||
|
|
|
@ -501,6 +501,8 @@ struct fb_info {
|
||||||
resource_size_t size;
|
resource_size_t size;
|
||||||
} ranges[0];
|
} ranges[0];
|
||||||
} *apertures;
|
} *apertures;
|
||||||
|
|
||||||
|
bool skip_vt_switch; /* no VT switch on suspend/resume required */
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline struct apertures_struct *alloc_apertures(unsigned int max_num) {
|
static inline struct apertures_struct *alloc_apertures(unsigned int max_num) {
|
||||||
|
|
Загрузка…
Ссылка в новой задаче