On Tue, Feb 19, 2013 at 01:31:39PM -0800, Jesse Barnes wrote: > Rather than building a config which may or may not work, let the driver > build an initial fb config. This allows the driver to use the BIOS boot > configuration for example, displaying kernel messages and the initial fb > console on the same outputs the BIOS lit up at boot time. If that > fails, the driver can still fall back the same way as the core. > > Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org> > Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk> > Cc: dri-devel at lists.freedesktop.org Queued for -next with Dave's irc ack, thanks for the patch. Note that you've frobbed the authorship stuff a bit, probably through an amend, without adding a patch reflog. Tsk ;-) -Daniel > --- > drivers/gpu/drm/drm_fb_helper.c | 23 +++++++++++++++-------- > include/drm/drm_fb_helper.h | 4 ++++ > 2 files changed, 19 insertions(+), 8 deletions(-) > > diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c > index 0c6e25e..0d96471 100644 > --- a/drivers/gpu/drm/drm_fb_helper.c > +++ b/drivers/gpu/drm/drm_fb_helper.c > @@ -1275,7 +1275,7 @@ static void drm_setup_crtcs(struct drm_fb_helper *fb_helper) > struct drm_mode_set *modeset; > bool *enabled; > int width, height; > - int i, ret; > + int i; > > DRM_DEBUG_KMS("\n"); > > @@ -1296,16 +1296,23 @@ static void drm_setup_crtcs(struct drm_fb_helper *fb_helper) > > drm_enable_connectors(fb_helper, enabled); > > - ret = drm_target_cloned(fb_helper, modes, enabled, width, height); > - if (!ret) { > - ret = drm_target_preferred(fb_helper, modes, enabled, width, height); > - if (!ret) > + if (!(fb_helper->funcs->initial_config && > + fb_helper->funcs->initial_config(fb_helper, crtcs, modes, > + enabled, width, height))) { > + memset(modes, 0, dev->mode_config.num_connector*sizeof(modes[0])); > + memset(crtcs, 0, dev->mode_config.num_connector*sizeof(crtcs[0])); > + > + if (!drm_target_cloned(fb_helper, > + modes, enabled, width, height) && > + !drm_target_preferred(fb_helper, > + modes, enabled, width, height)) > DRM_ERROR("Unable to find initial modes\n"); > - } > > - DRM_DEBUG_KMS("picking CRTCs for %dx%d config\n", width, height); > + DRM_DEBUG_KMS("picking CRTCs for %dx%d config\n", > + width, height); > > - drm_pick_crtcs(fb_helper, crtcs, modes, 0, width, height); > + drm_pick_crtcs(fb_helper, crtcs, modes, 0, width, height); > + } > > /* need to set the modesets up here for use later */ > /* fill out the connector<->crtc mappings into the modesets */ > diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h > index 5120b01..40b0c5c 100644 > --- a/include/drm/drm_fb_helper.h > +++ b/include/drm/drm_fb_helper.h > @@ -56,6 +56,10 @@ struct drm_fb_helper_funcs { > > int (*fb_probe)(struct drm_fb_helper *helper, > struct drm_fb_helper_surface_size *sizes); > + bool (*initial_config)(struct drm_fb_helper *fb_helper, > + struct drm_fb_helper_crtc **crtcs, > + struct drm_display_mode **modes, > + bool *enabled, int width, int height); > }; > > struct drm_fb_helper_connector { > -- > 1.7.9.5 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx at lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch