Message ID | 1416276639-30297-3-git-send-email-matthew.d.roper@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Mon, Nov 17, 2014 at 06:10:36PM -0800, Matt Roper wrote: > From: Gustavo Padovan <gustavo.padovan@collabora.co.uk> > > We need to get hdisplay and vdisplay in a few places so create a > helper to make our job easier. > > v2 (by Matt): Use new stereo doubling function (suggested by Ville) > > Cc: dri-devel@lists.freedesktop.org > Suggested-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk> > Signed-off-by: Matt Roper <matthew.d.roper@intel.com> > --- > drivers/gpu/drm/drm_crtc.c | 22 ++++++++++++---------- > drivers/gpu/drm/i915/intel_display.c | 6 +++--- > include/drm/drm_crtc.h | 2 ++ > 3 files changed, 17 insertions(+), 13 deletions(-) > > diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c > index 56737e7..64ec23b 100644 > --- a/drivers/gpu/drm/drm_crtc.c > +++ b/drivers/gpu/drm/drm_crtc.c > @@ -2493,6 +2493,17 @@ int drm_mode_set_config_internal(struct drm_mode_set *set) > } > EXPORT_SYMBOL(drm_mode_set_config_internal); > Kerneldoc missing. -Daniel > +void drm_crtc_get_hv_timing(const struct drm_display_mode *mode, > + int *hdisplay, int *vdisplay) > +{ > + struct drm_display_mode adjusted = *mode; > + > + drm_mode_stereo_double(&adjusted); > + *hdisplay = adjusted.crtc_hdisplay; > + *vdisplay = adjusted.crtc_vdisplay; > +} > +EXPORT_SYMBOL(drm_crtc_get_hv_timing); > + > /** > * drm_crtc_check_viewport - Checks that a framebuffer is big enough for the > * CRTC viewport > @@ -2510,16 +2521,7 @@ int drm_crtc_check_viewport(const struct drm_crtc *crtc, > { > int hdisplay, vdisplay; > > - hdisplay = mode->hdisplay; > - vdisplay = mode->vdisplay; > - > - if (drm_mode_is_stereo(mode)) { > - struct drm_display_mode adjusted = *mode; > - > - drm_mode_set_crtcinfo(&adjusted, CRTC_STEREO_DOUBLE); > - hdisplay = adjusted.crtc_hdisplay; > - vdisplay = adjusted.crtc_vdisplay; > - } > + drm_crtc_get_hv_timing(mode, &hdisplay, &vdisplay); > > if (crtc->invert_dimensions) > swap(hdisplay, vdisplay); > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c > index 320bf4c..a967623 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -10158,9 +10158,9 @@ intel_modeset_pipe_config(struct drm_crtc *crtc, > * computation to clearly distinguish it from the adjusted mode, which > * can be changed by the connectors in the below retry loop. > */ > - drm_mode_set_crtcinfo(&pipe_config->requested_mode, CRTC_STEREO_DOUBLE); > - pipe_config->pipe_src_w = pipe_config->requested_mode.crtc_hdisplay; > - pipe_config->pipe_src_h = pipe_config->requested_mode.crtc_vdisplay; > + drm_crtc_get_hv_timing(&pipe_config->requested_mode, > + &pipe_config->pipe_src_w, > + &pipe_config->pipe_src_h); > > encoder_retry: > /* Ensure the port clock defaults are reset when retrying. */ > diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h > index 7b28ab0..23236f6 100644 > --- a/include/drm/drm_crtc.h > +++ b/include/drm/drm_crtc.h > @@ -1138,6 +1138,8 @@ extern int drm_plane_init(struct drm_device *dev, > extern void drm_plane_cleanup(struct drm_plane *plane); > extern unsigned int drm_plane_index(struct drm_plane *plane); > extern void drm_plane_force_disable(struct drm_plane *plane); > +extern void drm_crtc_get_hv_timing(const struct drm_display_mode *mode, > + int *hdisplay, int *vdisplay); > extern int drm_crtc_check_viewport(const struct drm_crtc *crtc, > int x, int y, > const struct drm_display_mode *mode, > -- > 1.8.5.1 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx
On Tue, 18 Nov 2014, Matt Roper <matthew.d.roper@intel.com> wrote: > From: Gustavo Padovan <gustavo.padovan@collabora.co.uk> > > We need to get hdisplay and vdisplay in a few places so create a > helper to make our job easier. > > v2 (by Matt): Use new stereo doubling function (suggested by Ville) > > Cc: dri-devel@lists.freedesktop.org > Suggested-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk> > Signed-off-by: Matt Roper <matthew.d.roper@intel.com> > --- > drivers/gpu/drm/drm_crtc.c | 22 ++++++++++++---------- > drivers/gpu/drm/i915/intel_display.c | 6 +++--- > include/drm/drm_crtc.h | 2 ++ > 3 files changed, 17 insertions(+), 13 deletions(-) > > diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c > index 56737e7..64ec23b 100644 > --- a/drivers/gpu/drm/drm_crtc.c > +++ b/drivers/gpu/drm/drm_crtc.c > @@ -2493,6 +2493,17 @@ int drm_mode_set_config_internal(struct drm_mode_set *set) > } > EXPORT_SYMBOL(drm_mode_set_config_internal); > > +void drm_crtc_get_hv_timing(const struct drm_display_mode *mode, > + int *hdisplay, int *vdisplay) > +{ > + struct drm_display_mode adjusted = *mode; I'd prefer using drm_mode_copy(). It doesn't matter here and now, but if it starts to matter in the future the problems will be hard to track. BR, Jani. > + > + drm_mode_stereo_double(&adjusted); > + *hdisplay = adjusted.crtc_hdisplay; > + *vdisplay = adjusted.crtc_vdisplay; > +} > +EXPORT_SYMBOL(drm_crtc_get_hv_timing); > + > /** > * drm_crtc_check_viewport - Checks that a framebuffer is big enough for the > * CRTC viewport > @@ -2510,16 +2521,7 @@ int drm_crtc_check_viewport(const struct drm_crtc *crtc, > { > int hdisplay, vdisplay; > > - hdisplay = mode->hdisplay; > - vdisplay = mode->vdisplay; > - > - if (drm_mode_is_stereo(mode)) { > - struct drm_display_mode adjusted = *mode; > - > - drm_mode_set_crtcinfo(&adjusted, CRTC_STEREO_DOUBLE); > - hdisplay = adjusted.crtc_hdisplay; > - vdisplay = adjusted.crtc_vdisplay; > - } > + drm_crtc_get_hv_timing(mode, &hdisplay, &vdisplay); > > if (crtc->invert_dimensions) > swap(hdisplay, vdisplay); > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c > index 320bf4c..a967623 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -10158,9 +10158,9 @@ intel_modeset_pipe_config(struct drm_crtc *crtc, > * computation to clearly distinguish it from the adjusted mode, which > * can be changed by the connectors in the below retry loop. > */ > - drm_mode_set_crtcinfo(&pipe_config->requested_mode, CRTC_STEREO_DOUBLE); > - pipe_config->pipe_src_w = pipe_config->requested_mode.crtc_hdisplay; > - pipe_config->pipe_src_h = pipe_config->requested_mode.crtc_vdisplay; > + drm_crtc_get_hv_timing(&pipe_config->requested_mode, > + &pipe_config->pipe_src_w, > + &pipe_config->pipe_src_h); > > encoder_retry: > /* Ensure the port clock defaults are reset when retrying. */ > diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h > index 7b28ab0..23236f6 100644 > --- a/include/drm/drm_crtc.h > +++ b/include/drm/drm_crtc.h > @@ -1138,6 +1138,8 @@ extern int drm_plane_init(struct drm_device *dev, > extern void drm_plane_cleanup(struct drm_plane *plane); > extern unsigned int drm_plane_index(struct drm_plane *plane); > extern void drm_plane_force_disable(struct drm_plane *plane); > +extern void drm_crtc_get_hv_timing(const struct drm_display_mode *mode, > + int *hdisplay, int *vdisplay); > extern int drm_crtc_check_viewport(const struct drm_crtc *crtc, > int x, int y, > const struct drm_display_mode *mode, > -- > 1.8.5.1 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/dri-devel
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index 56737e7..64ec23b 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c @@ -2493,6 +2493,17 @@ int drm_mode_set_config_internal(struct drm_mode_set *set) } EXPORT_SYMBOL(drm_mode_set_config_internal); +void drm_crtc_get_hv_timing(const struct drm_display_mode *mode, + int *hdisplay, int *vdisplay) +{ + struct drm_display_mode adjusted = *mode; + + drm_mode_stereo_double(&adjusted); + *hdisplay = adjusted.crtc_hdisplay; + *vdisplay = adjusted.crtc_vdisplay; +} +EXPORT_SYMBOL(drm_crtc_get_hv_timing); + /** * drm_crtc_check_viewport - Checks that a framebuffer is big enough for the * CRTC viewport @@ -2510,16 +2521,7 @@ int drm_crtc_check_viewport(const struct drm_crtc *crtc, { int hdisplay, vdisplay; - hdisplay = mode->hdisplay; - vdisplay = mode->vdisplay; - - if (drm_mode_is_stereo(mode)) { - struct drm_display_mode adjusted = *mode; - - drm_mode_set_crtcinfo(&adjusted, CRTC_STEREO_DOUBLE); - hdisplay = adjusted.crtc_hdisplay; - vdisplay = adjusted.crtc_vdisplay; - } + drm_crtc_get_hv_timing(mode, &hdisplay, &vdisplay); if (crtc->invert_dimensions) swap(hdisplay, vdisplay); diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 320bf4c..a967623 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -10158,9 +10158,9 @@ intel_modeset_pipe_config(struct drm_crtc *crtc, * computation to clearly distinguish it from the adjusted mode, which * can be changed by the connectors in the below retry loop. */ - drm_mode_set_crtcinfo(&pipe_config->requested_mode, CRTC_STEREO_DOUBLE); - pipe_config->pipe_src_w = pipe_config->requested_mode.crtc_hdisplay; - pipe_config->pipe_src_h = pipe_config->requested_mode.crtc_vdisplay; + drm_crtc_get_hv_timing(&pipe_config->requested_mode, + &pipe_config->pipe_src_w, + &pipe_config->pipe_src_h); encoder_retry: /* Ensure the port clock defaults are reset when retrying. */ diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h index 7b28ab0..23236f6 100644 --- a/include/drm/drm_crtc.h +++ b/include/drm/drm_crtc.h @@ -1138,6 +1138,8 @@ extern int drm_plane_init(struct drm_device *dev, extern void drm_plane_cleanup(struct drm_plane *plane); extern unsigned int drm_plane_index(struct drm_plane *plane); extern void drm_plane_force_disable(struct drm_plane *plane); +extern void drm_crtc_get_hv_timing(const struct drm_display_mode *mode, + int *hdisplay, int *vdisplay); extern int drm_crtc_check_viewport(const struct drm_crtc *crtc, int x, int y, const struct drm_display_mode *mode,