1. 14 3月, 2017 2 次提交
    • J
      drm/tilcdc: Set framebuffer DMA address to HW only if CRTC is enabled · 11abbc9f
      Jyri Sarha 提交于
      Touching HW while clocks are off is a serious error and for instance
      breaks suspend functionality. After this patch tilcdc_crtc_update_fb()
      always updates the primary plane's framebuffer pointer, increases fb's
      reference count and stores vblank event. tilcdc_crtc_update_fb() only
      writes the fb's DMA address to HW if the crtc is enabled, as
      tilcdc_crtc_enable() takes care of writing the address on enable.
      
      This patch also refactors the tilcdc_crtc_update_fb() a bit. Number of
      subsequent small changes had made it almost unreadable. There should
      be no other functional changes but checking the CRTC's enable
      state. However, the locking goes a bit differently and some of the
      redundant checks have been removed in this new version.
      
      The enable_lock should be enough to protect the access to
      tilcdc_crtc->enabled. The irq_lock protects the access to last_vblank
      and next_fb. The check for vrefresh and last_vblank being valid is
      redundant, as the vrefresh should be always valid if the CRTC is
      enabled and now last_vblank should be too, because it is initialized
      to current time when CRTC raster is enabled. If for some reason the
      values are not correctly initialized the division by zero warning is
      quite appropriate.
      Signed-off-by: NJyri Sarha <jsarha@ti.com>
      Reviewed-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      11abbc9f
    • J
      drm/tilcdc: Fix hardcoded fail-return value in tilcdc_crtc_create() · abf8315f
      Jyri Sarha 提交于
      Fix badly hardcoded return return value under fail-label. All goto
      branches to the label set the "ret"-variable accordingly.
      Signed-off-by: NJyri Sarha <jsarha@ti.com>
      Reviewed-by: NGabriel Krisman Bertazi <krisman@collabora.co.uk>
      abf8315f
  2. 03 2月, 2017 1 次提交
    • G
      drm: Rely on mode_config data for fb_helper initialization · e4563f6b
      Gabriel Krisman Bertazi 提交于
      Instead of receiving the num_crts as a parameter, we can read it
      directly from the mode_config structure.  I audited the drivers that
      invoke this helper and I believe all of them initialize the mode_config
      struct accordingly, prior to calling the fb_helper.
      
      I used the following coccinelle hack to make this transformation, except
      for the function headers and comment updates.  The first and second
      rules are split because I couldn't find a way to remove the unused
      temporary variables at the same time I removed the parameter.
      
      // <smpl>
      @r@
      expression A,B,D,E;
      identifier C;
      @@
      (
      - drm_fb_helper_init(A,B,C,D)
      + drm_fb_helper_init(A,B,D)
      |
      - drm_fbdev_cma_init_with_funcs(A,B,C,D,E)
      + drm_fbdev_cma_init_with_funcs(A,B,D,E)
      |
      - drm_fbdev_cma_init(A,B,C,D)
      + drm_fbdev_cma_init(A,B,D)
      )
      
      @@
      expression A,B,C,D,E;
      @@
      (
      - drm_fb_helper_init(A,B,C,D)
      + drm_fb_helper_init(A,B,D)
      |
      - drm_fbdev_cma_init_with_funcs(A,B,C,D,E)
      + drm_fbdev_cma_init_with_funcs(A,B,D,E)
      |
      - drm_fbdev_cma_init(A,B,C,D)
      + drm_fbdev_cma_init(A,B,D)
      )
      
      @@
      identifier r.C;
      type T;
      expression V;
      @@
      - T C;
      <...
      when != C
      - C = V;
      ...>
      // </smpl>
      
      Changes since v1:
       - Rebased on top of the tip of drm-misc-next.
       - Remove mention to sti since a proper fix got merged.
      Suggested-by: NDaniel Vetter <daniel.vetter@intel.com>
      Signed-off-by: NGabriel Krisman Bertazi <krisman@collabora.co.uk>
      Reviewed-by: NEric Anholt <eric@anholt.net>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Link: http://patchwork.freedesktop.org/patch/msgid/20170202162640.27261-1-krisman@collabora.co.uk
      e4563f6b
  3. 27 1月, 2017 1 次提交
  4. 04 1月, 2017 1 次提交
  5. 30 12月, 2016 1 次提交
  6. 26 12月, 2016 1 次提交
    • T
      ktime: Cleanup ktime_set() usage · 8b0e1953
      Thomas Gleixner 提交于
      ktime_set(S,N) was required for the timespec storage type and is still
      useful for situations where a Seconds and Nanoseconds part of a time value
      needs to be converted. For anything where the Seconds argument is 0, this
      is pointless and can be replaced with a simple assignment.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Cc: Peter Zijlstra <peterz@infradead.org>
      8b0e1953
  7. 18 12月, 2016 1 次提交
  8. 15 12月, 2016 3 次提交
    • V
      drm: Replace 'format->format' comparisons to just 'format' comparisons · dbd4d576
      Ville Syrjälä 提交于
      Rather than compare the format u32s of two format infos, we can direclty
      compare the format info pointers themselves. Noramlly all the ->format
      pointers all point to somwehere in the big array, so this is a valid
      way to test for equality.
      
      Also drivers may want to point ->format at a private format info struct
      instead (eg. for special compressed formats with extra planes), so
      just comparing the pixel format values wouldn't necessaritly even work.
      But comparing the pointers will also take care of that case.
      
      @@
      struct drm_framebuffer *a;
      struct drm_framebuffer *b;
      @@
      (
      - a->format->format != b->format->format
      + a->format != b->format
      |
      - a->format->format == b->format->format
      + a->format == b->format
      )
      
      @@
      struct drm_plane_state *a;
      struct drm_plane_state *b;
      @@
      (
      - a->fb->format->format != b->fb->format->format
      + a->fb->format != b->fb->format
      |
      - a->fb->format->format == b->fb->format->format
      + a->fb->format == b->fb->format
      )
      
      @@
      struct drm_crtc *crtc;
      struct drm_framebuffer *x;
      @@
      (
      - crtc->primary->fb->format->format != x->format->format
      + crtc->primary->fb->format != x->format
      |
      - x->format->format != crtc->primary->fb->format->format
      + x->format != crtc->primary->fb->format
      )
      
      @@
      struct drm_mode_set *set;
      @@
      - set->fb->format->format != set->crtc->primary->fb->format->format
      + set->fb->format != set->crtc->primary->fb->format
      
      Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
      Suggested-by: NLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/1479498793-31021-35-git-send-email-ville.syrjala@linux.intel.comReviewed-by: NLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      dbd4d576
    • V
      drm: Nuke fb->pixel_format · 438b74a5
      Ville Syrjälä 提交于
      Replace uses of fb->pixel_format with fb->format->format.
      Less duplicated information is a good thing.
      
      Note that coccinelle failed to eliminate the
      "/* fourcc format */" comment from drm_framebuffer.h, so I had
      to do that part manually.
      
      @@
      struct drm_framebuffer *FB;
      expression E;
      @@
       drm_helper_mode_fill_fb_struct(...) {
      	...
      -	FB->pixel_format = E;
      	...
       }
      
      @@
      struct drm_framebuffer *FB;
      expression E;
      @@
       i9xx_get_initial_plane_config(...) {
      	...
      -	FB->pixel_format = E;
      	...
       }
      
      @@
      struct drm_framebuffer *FB;
      expression E;
      @@
       ironlake_get_initial_plane_config(...) {
      	...
      -	FB->pixel_format = E;
      	...
       }
      
      @@
      struct drm_framebuffer *FB;
      expression E;
      @@
       skylake_get_initial_plane_config(...) {
      	...
      -	FB->pixel_format = E;
      	...
       }
      
      @@
      struct drm_framebuffer *a;
      struct drm_framebuffer b;
      @@
      (
      - a->pixel_format
      + a->format->format
      |
      - b.pixel_format
      + b.format->format
      )
      
      @@
      struct drm_plane_state *a;
      struct drm_plane_state b;
      @@
      (
      - a->fb->pixel_format
      + a->fb->format->format
      |
      - b.fb->pixel_format
      + b.fb->format->format
      )
      
      @@
      struct drm_crtc *CRTC;
      @@
      (
      - CRTC->primary->fb->pixel_format
      + CRTC->primary->fb->format->format
      |
      - CRTC->primary->state->fb->pixel_format
      + CRTC->primary->state->fb->format->format
      )
      
      @@
      struct drm_mode_set *set;
      @@
      (
      - set->fb->pixel_format
      + set->fb->format->format
      |
      - set->crtc->primary->fb->pixel_format
      + set->crtc->primary->fb->format->format
      )
      
      @@
      @@
       struct drm_framebuffer {
      	 ...
      -	 uint32_t pixel_format;
      	 ...
       };
      
      v2: Fix commit message (Laurent)
          Rebase due to earlier removal of many fb->pixel_format uses,
          including the 'fb->format = drm_format_info(fb->format->format);'
          snafu
      v3: Adjusted the semantic patch a bit and regenerated due to code
          changes
      
      Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: Alex Deucher <alexander.deucher@amd.com> (v1)
      Reviewed-by: NLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/1481751175-18463-1-git-send-email-ville.syrjala@linux.intel.com
      438b74a5
    • V
      drm: Replace drm_format_plane_cpp() with fb->format->cpp[] · 353c8598
      Ville Syrjälä 提交于
      Replace drm_format_plane_cpp(fb->pixel_format) with just
      fb->format->cpp[]. Avoids the expensive format info lookup.
      
      @@
      struct drm_framebuffer *a;
      struct drm_framebuffer b;
      expression E;
      @@
      (
      - drm_format_plane_cpp(a->pixel_format, E)
      + a->format->cpp[E]
      |
      - drm_format_plane_cpp(b.pixel_format, E)
      + b.format->cpp[E]
      )
      
      @@
      struct drm_plane_state *a;
      struct drm_plane_state b;
      expression E;
      @@
      (
      - drm_format_plane_cpp(a->fb->pixel_format, E)
      + a->fb->format->cpp[E]
      |
      - drm_format_plane_cpp(b.fb->pixel_format, E)
      + b.fb->format->cpp[E]
      )
      
      @@
      struct drm_framebuffer *a;
      identifier T;
      expression E;
      @@
        T = a->pixel_format
      <+...
      - drm_format_plane_cpp(T, E)
      + a->format->cpp[E]
      ...+>
      
      @@
      struct drm_framebuffer b;
      identifier T;
      expression E;
      @@
        T = b.pixel_format
      <+...
      - drm_format_plane_cpp(T, E)
      + b.format->cpp[E]
      ...+>
      
      v2: Rerun spatch due to code changes
      
      Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
      Suggested-by: NLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: NLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/1481751057-18123-1-git-send-email-ville.syrjala@linux.intel.com
      353c8598
  9. 01 12月, 2016 1 次提交
  10. 30 11月, 2016 21 次提交
  11. 02 11月, 2016 1 次提交
  12. 25 10月, 2016 1 次提交
  13. 18 10月, 2016 1 次提交
  14. 17 10月, 2016 1 次提交
  15. 23 9月, 2016 3 次提交