On ke, 2016-07-20 at 16:18 +0300, ville.syrjala at linux.intel.com wrote: > From: Ville Syrjälä <ville.syrjala at linux.intel.com> > > We have intel_rotation_90_or_270() in i915 to check if the rotation is > 90 or 270 degrees. Similar checks are elsewhere in drm, so let's move > the helper into a central place and use it everwhere. > > Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen at linux.intel.com> > --- >  drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c |  4 ++-- >  drivers/gpu/drm/drm_atomic_helper.c             |  2 +- >  drivers/gpu/drm/drm_crtc.c                      |  > 3 +-- >  drivers/gpu/drm/i915/intel_atomic_plane.c       |  2 +- >  drivers/gpu/drm/i915/intel_display.c            | 10 +++++----- >  drivers/gpu/drm/i915/intel_drv.h                |  6 > ------ >  drivers/gpu/drm/i915/intel_fbc.c                |  2 +- >  drivers/gpu/drm/i915/intel_pm.c                 | 12 > ++++++------ >  drivers/gpu/drm/i915/intel_sprite.c             |  2 +- >  drivers/gpu/drm/omapdrm/omap_plane.c            |  8 ++------ >  include/drm/drm_crtc.h                          > |  5 +++++ >  11 files changed, 25 insertions(+), 31 deletions(-) > > diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c > b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c > index 016c191221f3..f3350c80704d 100644 > --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c > +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c > @@ -393,7 +393,7 @@ static void atmel_hlcdc_plane_update_format(struct > atmel_hlcdc_plane *plane, >  >  if ((state->base.fb->pixel_format == DRM_FORMAT_YUV422 || >       state->base.fb->pixel_format == DRM_FORMAT_NV61) && > -     (state->base.rotation & (BIT(DRM_ROTATE_90) | > BIT(DRM_ROTATE_270)))) > +     drm_rotation_90_or_270(state->base.rotation)) >  cfg |= ATMEL_HLCDC_YUV422ROT; >  >  atmel_hlcdc_layer_update_cfg(&plane->layer, > @@ -628,7 +628,7 @@ static int atmel_hlcdc_plane_atomic_check(struct > drm_plane *p, >  /* >   * Swap width and size in case of 90 or 270 degrees rotation >   */ > - if (state->base.rotation & (BIT(DRM_ROTATE_90) | BIT(DRM_ROTATE_270))) { > + if (drm_rotation_90_or_270(state->base.rotation)) { >  tmp = state->crtc_w; >  state->crtc_w = state->crtc_h; >  state->crtc_h = tmp; > diff --git a/drivers/gpu/drm/drm_atomic_helper.c > b/drivers/gpu/drm/drm_atomic_helper.c > index de7fddce3cef..3e12e6e646ad 100644 > --- a/drivers/gpu/drm/drm_atomic_helper.c > +++ b/drivers/gpu/drm/drm_atomic_helper.c > @@ -2348,7 +2348,7 @@ int __drm_atomic_helper_set_config(struct drm_mode_set > *set, >  primary_state->crtc_h = vdisplay; >  primary_state->src_x = set->x << 16; >  primary_state->src_y = set->y << 16; > - if (primary_state->rotation & (BIT(DRM_ROTATE_90) | > BIT(DRM_ROTATE_270))) { > + if (drm_rotation_90_or_270(primary_state->rotation)) { >  primary_state->src_w = vdisplay << 16; >  primary_state->src_h = hdisplay << 16; >  } else { > diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c > index f1d9f0569d7f..986de180e6c2 100644 > --- a/drivers/gpu/drm/drm_crtc.c > +++ b/drivers/gpu/drm/drm_crtc.c > @@ -2804,8 +2804,7 @@ int drm_crtc_check_viewport(const struct drm_crtc *crtc, >  drm_crtc_get_hv_timing(mode, &hdisplay, &vdisplay); >  >  if (crtc->state && > -     crtc->primary->state->rotation & (BIT(DRM_ROTATE_90) | > -       BIT(DRM_ROTATE_270))) > +     drm_rotation_90_or_270(crtc->primary->state->rotation)) >  swap(hdisplay, vdisplay); >  >  return check_src_coords(x << 16, y << 16, > diff --git a/drivers/gpu/drm/i915/intel_atomic_plane.c > b/drivers/gpu/drm/i915/intel_atomic_plane.c > index 7de7721f65bc..c19eb9a0cd4a 100644 > --- a/drivers/gpu/drm/i915/intel_atomic_plane.c > +++ b/drivers/gpu/drm/i915/intel_atomic_plane.c > @@ -156,7 +156,7 @@ static int intel_plane_atomic_check(struct drm_plane > *plane, >  intel_state->clip.y2 = >  crtc_state->base.enable ? crtc_state->pipe_src_h : 0; >  > - if (state->fb && intel_rotation_90_or_270(state->rotation)) { > + if (state->fb && drm_rotation_90_or_270(state->rotation)) { >  if (!(state->fb->modifier[0] == I915_FORMAT_MOD_Y_TILED || >  state->fb->modifier[0] == I915_FORMAT_MOD_Yf_TILED)) { >  DRM_DEBUG_KMS("Y/Yf tiling required for 90/270!\n"); > diff --git a/drivers/gpu/drm/i915/intel_display.c > b/drivers/gpu/drm/i915/intel_display.c > index 51fbca756cdb..08b9f9a19df0 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -2138,7 +2138,7 @@ intel_fill_fb_ggtt_view(struct i915_ggtt_view *view, >  const struct drm_framebuffer *fb, >  unsigned int rotation) >  { > - if (intel_rotation_90_or_270(rotation)) { > + if (drm_rotation_90_or_270(rotation)) { >  *view = i915_ggtt_view_rotated; >  view->params.rotated = to_intel_framebuffer(fb)->rot_info; >  } else { > @@ -2352,7 +2352,7 @@ u32 intel_compute_tile_offset(int *x, int *y, >  intel_tile_dims(dev_priv, &tile_width, &tile_height, >  fb_modifier, cpp); >  > - if (intel_rotation_90_or_270(rotation)) { > + if (drm_rotation_90_or_270(rotation)) { >  pitch_tiles = pitch / tile_height; >  swap(tile_width, tile_height); >  } else { > @@ -3011,7 +3011,7 @@ static void skylake_update_primary_plane(struct > drm_plane *plane, >  >  WARN_ON(drm_rect_width(&plane_state->src) == 0); >  > - if (intel_rotation_90_or_270(rotation)) { > + if (drm_rotation_90_or_270(rotation)) { >  int cpp = drm_format_plane_cpp(fb->pixel_format, 0); >  >  /* stride = Surface height in tiles */ > @@ -4179,7 +4179,7 @@ skl_update_scaler(struct intel_crtc_state *crtc_state, > bool force_detach, >  to_intel_crtc(crtc_state->base.crtc); >  int need_scaling; >  > - need_scaling = intel_rotation_90_or_270(rotation) ? > + need_scaling = drm_rotation_90_or_270(rotation) ? >  (src_h != dst_w || src_w != dst_h): >  (src_w != dst_w || src_h != dst_h); >  > @@ -11414,7 +11414,7 @@ static void skl_do_mmio_flip(struct intel_crtc > *intel_crtc, >   * The stride is either expressed as a multiple of 64 bytes chunks for >   * linear buffers or in number of tiles for tiled buffers. >   */ > - if (intel_rotation_90_or_270(rotation)) { > + if (drm_rotation_90_or_270(rotation)) { >  /* stride = Surface height in tiles */ >  tile_height = intel_tile_height(dev_priv, fb->modifier[0], 0); >  stride = DIV_ROUND_UP(fb->height, tile_height); > diff --git a/drivers/gpu/drm/i915/intel_drv.h > b/drivers/gpu/drm/i915/intel_drv.h > index e74d851868c5..907a72cfdad3 100644 > --- a/drivers/gpu/drm/i915/intel_drv.h > +++ b/drivers/gpu/drm/i915/intel_drv.h > @@ -1255,12 +1255,6 @@ int intel_plane_atomic_calc_changes(struct > drm_crtc_state *crtc_state, >  unsigned int intel_tile_height(const struct drm_i915_private *dev_priv, >         uint64_t fb_modifier, unsigned int cpp); >  > -static inline bool > -intel_rotation_90_or_270(unsigned int rotation) > -{ > - return rotation & (BIT(DRM_ROTATE_90) | BIT(DRM_ROTATE_270)); > -} > - >  void intel_create_rotation_property(struct drm_device *dev, >  struct intel_plane *plane); >  > diff --git a/drivers/gpu/drm/i915/intel_fbc.c > b/drivers/gpu/drm/i915/intel_fbc.c > index 781e2f5f7cd8..f3f3322139e0 100644 > --- a/drivers/gpu/drm/i915/intel_fbc.c > +++ b/drivers/gpu/drm/i915/intel_fbc.c > @@ -84,7 +84,7 @@ static void intel_fbc_get_plane_source_size(struct > intel_fbc_state_cache *cache, >  { >  int w, h; >  > - if (intel_rotation_90_or_270(cache->plane.rotation)) { > + if (drm_rotation_90_or_270(cache->plane.rotation)) { >  w = cache->plane.src_h; >  h = cache->plane.src_w; >  } else { > diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c > index a1bf5f8fbb1c..53116cdc43a6 100644 > --- a/drivers/gpu/drm/i915/intel_pm.c > +++ b/drivers/gpu/drm/i915/intel_pm.c > @@ -3004,7 +3004,7 @@ skl_plane_downscale_amount(const struct > intel_plane_state *pstate) >  src_h = drm_rect_height(&pstate->src); >  dst_w = drm_rect_width(&pstate->dst); >  dst_h = drm_rect_height(&pstate->dst); > - if (intel_rotation_90_or_270(pstate->base.rotation)) > + if (drm_rotation_90_or_270(pstate->base.rotation)) >  swap(dst_w, dst_h); >  >  downscale_h = max(src_h / dst_h, (uint32_t)DRM_PLANE_HELPER_NO_SCALING); > @@ -3035,7 +3035,7 @@ skl_plane_relative_data_rate(const struct > intel_crtc_state *cstate, >  width = drm_rect_width(&intel_pstate->src) >> 16; >  height = drm_rect_height(&intel_pstate->src) >> 16; >  > - if (intel_rotation_90_or_270(pstate->rotation)) > + if (drm_rotation_90_or_270(pstate->rotation)) >  swap(width, height); >  >  /* for planar format */ > @@ -3137,7 +3137,7 @@ skl_ddb_min_alloc(const struct drm_plane_state *pstate, >  src_w = drm_rect_width(&intel_pstate->src) >> 16; >  src_h = drm_rect_height(&intel_pstate->src) >> 16; >  > - if (intel_rotation_90_or_270(pstate->rotation)) > + if (drm_rotation_90_or_270(pstate->rotation)) >  swap(src_w, src_h); >  >  /* Halve UV plane width and height for NV12 */ > @@ -3151,7 +3151,7 @@ skl_ddb_min_alloc(const struct drm_plane_state *pstate, >  else >  plane_bpp = drm_format_plane_cpp(fb->pixel_format, 0); >  > - if (intel_rotation_90_or_270(pstate->rotation)) { > + if (drm_rotation_90_or_270(pstate->rotation)) { >  switch (plane_bpp) { >  case 1: >  min_scanlines = 32; > @@ -3407,7 +3407,7 @@ static int skl_compute_plane_wm(const struct > drm_i915_private *dev_priv, >  width = drm_rect_width(&intel_pstate->src) >> 16; >  height = drm_rect_height(&intel_pstate->src) >> 16; >  > - if (intel_rotation_90_or_270(pstate->rotation)) > + if (drm_rotation_90_or_270(pstate->rotation)) >  swap(width, height); >  >  cpp = drm_format_plane_cpp(fb->pixel_format, 0); > @@ -3428,7 +3428,7 @@ static int skl_compute_plane_wm(const struct > drm_i915_private *dev_priv, >      fb->modifier[0] == I915_FORMAT_MOD_Yf_TILED) { >  uint32_t min_scanlines = 4; >  uint32_t y_tile_minimum; > - if (intel_rotation_90_or_270(pstate->rotation)) { > + if (drm_rotation_90_or_270(pstate->rotation)) { >  int cpp = (fb->pixel_format == DRM_FORMAT_NV12) ? >  drm_format_plane_cpp(fb->pixel_format, 1) : >  drm_format_plane_cpp(fb->pixel_format, 0); > diff --git a/drivers/gpu/drm/i915/intel_sprite.c > b/drivers/gpu/drm/i915/intel_sprite.c > index 0de935ad01c2..cc6af1410d67 100644 > --- a/drivers/gpu/drm/i915/intel_sprite.c > +++ b/drivers/gpu/drm/i915/intel_sprite.c > @@ -251,7 +251,7 @@ skl_update_plane(struct drm_plane *drm_plane, >  >  surf_addr = intel_plane_obj_offset(intel_plane, obj, 0); >  > - if (intel_rotation_90_or_270(rotation)) { > + if (drm_rotation_90_or_270(rotation)) { >  int cpp = drm_format_plane_cpp(fb->pixel_format, 0); >  >  /* stride: Surface height in tiles */ > diff --git a/drivers/gpu/drm/omapdrm/omap_plane.c > b/drivers/gpu/drm/omapdrm/omap_plane.c > index 5252ab720e70..7f0d567b8d67 100644 > --- a/drivers/gpu/drm/omapdrm/omap_plane.c > +++ b/drivers/gpu/drm/omapdrm/omap_plane.c > @@ -108,16 +108,12 @@ static void omap_plane_atomic_update(struct drm_plane > *plane, >  win.src_x = state->src_x >> 16; >  win.src_y = state->src_y >> 16; >  > - switch (state->rotation & DRM_ROTATE_MASK) { > - case BIT(DRM_ROTATE_90): > - case BIT(DRM_ROTATE_270): > + if (drm_rotation_90_or_270(state->rotation)) { >  win.src_w = state->src_h >> 16; >  win.src_h = state->src_w >> 16; > - break; > - default: > + } else { >  win.src_w = state->src_w >> 16; >  win.src_h = state->src_h >> 16; > - break; >  } >  >  /* update scanout: */ > diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h > index 3edeaf88ebc0..b7ac7dcf52db 100644 > --- a/include/drm/drm_crtc.h > +++ b/include/drm/drm_crtc.h > @@ -92,6 +92,11 @@ static inline uint64_t I642U64(int64_t val) >  #define DRM_REFLECT_X 4 >  #define DRM_REFLECT_Y 5 >  > +static inline bool drm_rotation_90_or_270(unsigned int rotation) > +{ > + return rotation & (BIT(DRM_ROTATE_90) | BIT(DRM_ROTATE_270)); > +} > + >  enum drm_connector_force { >  DRM_FORCE_UNSPECIFIED, >  DRM_FORCE_OFF, -- Joonas Lahtinen Open Source Technology Center Intel Corporation