Message ID | 1400640904-16847-5-git-send-email-airlied@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
> Dave Airlie <mailto:airlied@gmail.com> > Tuesday, May 20, 2014 7:54 PM > From: Dave Airlie <airlied@redhat.com> > > This can be called to update things after dynamic connectors/encoders > are created/deleted. > > Signed-off-by: Dave Airlie <airlied@redhat.com> > --- > drivers/gpu/drm/drm_crtc.c | 9 +++++++++ > include/drm/drm_crtc.h | 1 + > 2 files changed, 10 insertions(+) > > diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c > index f1753e6..8bf87a6 100644 > --- a/drivers/gpu/drm/drm_crtc.c > +++ b/drivers/gpu/drm/drm_crtc.c > @@ -1421,6 +1421,15 @@ int drm_mode_group_init_legacy_group(struct > drm_device *dev, > } > EXPORT_SYMBOL(drm_mode_group_init_legacy_group); > > +void drm_reinit_primary_mode_group(struct drm_device *dev) > +{ > + drm_modeset_lock_all(dev); > + drm_mode_group_destroy(&dev->primary->mode_group); > + drm_mode_group_init_legacy_group(dev, &dev->primary->mode_group); > + drm_modeset_unlock_all(dev); > +} > +EXPORT_SYMBOL(drm_reinit_primary_mode_group); > + > /** > * drm_crtc_convert_to_umode - convert a drm_display_mode into a modeinfo > * @out: drm_mode_modeinfo struct to return to the user > diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h > index c6b9e8a..55bc523 100644 > --- a/include/drm/drm_crtc.h > +++ b/include/drm/drm_crtc.h > @@ -916,6 +916,7 @@ extern const char *drm_get_tv_select_name(int val); > extern void drm_fb_release(struct drm_file *file_priv); > extern int drm_mode_group_init_legacy_group(struct drm_device *dev, > struct drm_mode_group *group); > extern void drm_mode_group_destroy(struct drm_mode_group *group); > +extern void drm_reinit_primary_mode_group(struct drm_device *dev); > extern bool drm_probe_ddc(struct i2c_adapter *adapter); > extern struct edid *drm_get_edid(struct drm_connector *connector, > struct i2c_adapter *adapter); Reviewed-by: Todd Previte <tprevite@gmail.com> > Dave Airlie <mailto:airlied@gmail.com> > Tuesday, May 20, 2014 7:54 PM > Hey, > > So this set is pretty close to what I think we should be merging > initially, > > Since the last set, it makes fbcon and suspend/resume work a lot better, > > I've also fixed a couple of bugs in -intel that make things work a lot > better. > > I've bashed on this a bit using kms-flip from intel-gpu-tools, hacked > to add 3 monitor support. > > It still generates a fair few i915 state checker backtraces, and some > of them are fairly hard to work out, it might be we should just tone > down the state checker for encoders/connectors with no actual hw backing > them. > > Dave. > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index f1753e6..8bf87a6 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c @@ -1421,6 +1421,15 @@ int drm_mode_group_init_legacy_group(struct drm_device *dev, } EXPORT_SYMBOL(drm_mode_group_init_legacy_group); +void drm_reinit_primary_mode_group(struct drm_device *dev) +{ + drm_modeset_lock_all(dev); + drm_mode_group_destroy(&dev->primary->mode_group); + drm_mode_group_init_legacy_group(dev, &dev->primary->mode_group); + drm_modeset_unlock_all(dev); +} +EXPORT_SYMBOL(drm_reinit_primary_mode_group); + /** * drm_crtc_convert_to_umode - convert a drm_display_mode into a modeinfo * @out: drm_mode_modeinfo struct to return to the user diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h index c6b9e8a..55bc523 100644 --- a/include/drm/drm_crtc.h +++ b/include/drm/drm_crtc.h @@ -916,6 +916,7 @@ extern const char *drm_get_tv_select_name(int val); extern void drm_fb_release(struct drm_file *file_priv); extern int drm_mode_group_init_legacy_group(struct drm_device *dev, struct drm_mode_group *group); extern void drm_mode_group_destroy(struct drm_mode_group *group); +extern void drm_reinit_primary_mode_group(struct drm_device *dev); extern bool drm_probe_ddc(struct i2c_adapter *adapter); extern struct edid *drm_get_edid(struct drm_connector *connector, struct i2c_adapter *adapter);