[Intel-gfx] [PATCH 31/43] drm/i915: use fb helper probe when building BIOS config
Chris Wilson
chris at chris-wilson.co.uk
Fri May 25 14:33:10 CEST 2012
From: Jesse Barnes <jbarnes at virtuousgeek.org>
And make sure we register the BIOS config framebuffer if needed.
---
drivers/gpu/drm/i915/intel_drv.h | 2 ++
drivers/gpu/drm/i915/intel_fb.c | 12 +++++++++++-
2 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index 762d580..612ff1b 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -146,6 +146,8 @@ struct intel_fbdev {
struct intel_framebuffer ifb;
struct list_head fbdev_list;
struct drm_display_mode *our_mode;
+ bool bios_fb;
+ bool bios_fb_registered;
};
struct intel_encoder {
diff --git a/drivers/gpu/drm/i915/intel_fb.c b/drivers/gpu/drm/i915/intel_fb.c
index 83d3f7b..12a0c14 100644
--- a/drivers/gpu/drm/i915/intel_fb.c
+++ b/drivers/gpu/drm/i915/intel_fb.c
@@ -194,6 +194,12 @@ static int intel_fb_find_or_create_single(struct drm_fb_helper *helper,
int new_fb = 0;
int ret;
+ /* A stolen BIOS fb may be new to the core */
+ if (ifbdev->bios_fb && !ifbdev->bios_fb_registered) {
+ ifbdev->bios_fb_registered = true;
+ return 1;
+ }
+
if (!helper->fb) {
ret = intelfb_create(ifbdev, sizes);
if (ret)
@@ -375,12 +381,16 @@ void intel_fbdev_init_bios(struct drm_device *dev)
crtc->base.fb = &ifbdev->ifb.base;
obj->pin_count++;
+ ifbdev->bios_fb = true;
drm_fb_helper_single_add_all_connectors(&ifbdev->helper);
- drm_fb_helper_hotplug_event(&ifbdev->helper);
+ drm_fb_helper_initial_config(&ifbdev->helper, bpp);
vga_switcheroo_client_fb_set(dev->pdev, info);
dev_priv->fbdev = ifbdev;
+
+ DRM_DEBUG_KMS("using BIOS config for initial console\n");
+
return;
}
--
1.7.10
More information about the Intel-gfx
mailing list