1. 30 6月, 2017 1 次提交
  2. 31 5月, 2017 1 次提交
  3. 26 5月, 2017 1 次提交
  4. 27 4月, 2017 1 次提交
  5. 08 4月, 2017 2 次提交
  6. 07 3月, 2017 2 次提交
  7. 02 3月, 2017 1 次提交
  8. 09 2月, 2017 1 次提交
  9. 05 2月, 2017 2 次提交
    • C
      drm/rockchip: cdn-dp: add cdn DP support for rk3399 · 1a0f7ed3
      Chris Zhong 提交于
      Add support for cdn DP controller which is embedded in the rk3399
      SoCs. The DP is compliant with DisplayPort Specification,
      Version 1.3, This IP is compatible with the rockchip type-c PHY IP.
      There is a uCPU in DP controller, it need a firmware to work,
      please put the firmware file to /lib/firmware/rockchip/dptx.bin. The
      uCPU in charge of aux communication and link training, the host use
      mailbox to communicate with the ucpu.
      The dclk pin_pol of vop must not be invert for DP.
      Signed-off-by: NChris Zhong <zyw@rock-chips.com>
      [seanpaul fixed up some races between the worker and modeset]
      [seanpaul squashed ~15 commits from chromium.org gerrit]
      Signed-off-by: NSean Paul <seanpaul@chromium.org>
      [groeck fixed compilation errors when building as module]
      Signed-off-by: NGuenter Roeck <groeck@chromium.org>
      1a0f7ed3
    • C
      drm/rockchip: vop: make vop register setting take effect · 17a794d7
      Chris Zhong 提交于
      The setting of vop registers need a reg_done writing to take effect.
      In vop_enable the vop return to work by by restoring registers, but the
      registers do not take effect immediately, it should a vop_cfg_done
      after it. The same thing is needed by windows_disabled in
      vop_crtc_disable.
      Signed-off-by: NChris Zhong <zyw@rock-chips.com>
      17a794d7
  10. 15 12月, 2016 2 次提交
    • 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
  11. 21 9月, 2016 10 次提交
    • S
      drm/rockchip: Balance irq refcount on failure · 8c763c9b
      Sean Paul 提交于
      If create_crtc fails in vop bind, ensure the irq refcount is zeroed
      back out before exiting.
      Reviewed-by: NDaniel Kurtz <djkurtz@chromium.org>
      Signed-off-by: NSean Paul <seanpaul@chromium.org>
      8c763c9b
    • T
      drm/rockchip: Kill vop_plane_state · d47a7246
      Tomasz Figa 提交于
      After changes introduced by last patches, there is no useful data stored
      in vop_plane_state struct.  Let's remove it and make the driver use
      generic plane state alone.
      Signed-off-by: NTomasz Figa <tfiga@chromium.org>
      d47a7246
    • T
      drm/rockchip: Always signal event in next vblank after cfg_done · 41ee4367
      Tomasz Figa 提交于
      This patch makes the driver send the pending vblank event in next vblank
      following the commit, relying on vblank signalling improvements done in
      previous patches. This gives us vblank events that always represent the
      real moment of changes hitting on the screen (which was the case only
      for complete FB changes before) and lets us remove the manual window
      update check.
      Signed-off-by: NTomasz Figa <tfiga@chromium.org>
      41ee4367
    • T
      drm/rockchip: Do not enable vblank without event · 646ec687
      Tomasz Figa 提交于
      Originally we needed to enable vblank for any atomic commit to kick the
      PSR machine, but that was changed and we no longer need to do so from
      a vblank interrupt. Let's return to original behavior of enabling
      vblank only if it is really necessary.
      
      This essentially reverts commit 5b680403 ("drm/rockchip: Enable
      vblank without event").
      Signed-off-by: NTomasz Figa <tfiga@chromium.org>
      646ec687
    • T
      drm/rockchip: Replace custom wait_for_vblanks with helper · 81c248f7
      Tomasz Figa 提交于
      Currently the driver uses a custom function to wait for flip to complete
      after an atomic commit. It was needed before because of two problems:
       - there is no hardware vblank counter, so the original helper would
         have a race condition with the vblank interrupt,
       - the driver didn't support unreferencing cursor framebuffers
         asynchronously to the commit, which was what the helper expected.
      Since both problems have been solved by previous patches, we can now
      make the driver use the generic helper and remove custom waiting code.
      Signed-off-by: NTomasz Figa <tfiga@chromium.org>
      81c248f7
    • T
      drm/rockchip: Unreference framebuffers from flip work · 47a7eb45
      Tomasz Figa 提交于
      Currently the driver waits for vblank and then unreferences old
      framebuffers from atomic commit code path. This is however breaking the
      legacy cursor API, which requires the updates to be fully asynchronous.
      Instead of just adding a special case for cursor, we can have actually
      smaller amount of code to unreference any changed framebuffer from a
      flip work.
      Signed-off-by: NTomasz Figa <tfiga@chromium.org>
      47a7eb45
    • T
      drm/rockchip: Avoid race with vblank count increment · 7caecdbe
      Tomasz Figa 提交于
      Since VOP does not have a hardware vblank count register, the ongoing
      commit might be racing with a requested vblank interrupt, which would
      increment the software vblank counter before the changes being committed
      actually happen.
      
      To avoid this, we can extend .atomic_flush(), so after it sets cfg_done
      bit, it polls the vblank interrupt bit until it's inactive to make sure
      that any old vblank interrupt gets to the handler and then uses
      synchronize_irq(vop->irq) to make sure the handler finishes running.
      
      The polling case should happen very rarely, but even if, the total wait
      time should be relatively low and in practice almost equal to the vop
      hardirq handler running time.
      Signed-off-by: NTomasz Figa <tfiga@chromium.org>
      7caecdbe
    • T
      drm/rockchip: Get rid of some unnecessary code · 65bcb6bc
      Tomasz Figa 提交于
      Current code implements prepare_fb and cleanup_fb callbacks only to
      grab/release fb references, which is already done by atomic framework
      when creating/destryoing plane state. Let's remove these
      unused bits.
      Signed-off-by: NTomasz Figa <tfiga@chromium.org>
      65bcb6bc
    • T
      drm/rockchip: Clear interrupt status bits before enabling · fa374107
      Tomasz Figa 提交于
      The enable register only masks the raw status bits to signal CPU
      interrupt only for enabled interrupts. The status bits are activated
      regardless of the enable register. This means that we might have an old
      interrupt event queued, which we are not interested in. To avoid getting
      a spurious interrupt signalled, we have to clear the old bit before we
      update the enable register.
      Signed-off-by: NTomasz Figa <tfiga@chromium.org>
      fa374107
    • S
      drm/rockchip: Don't key off vblank for psr · b883c9ba
      Sean Paul 提交于
      Instead of keying off vblank for psr, just flush every time
      we get an atomic update. This ensures that cursor updates
      will properly disable psr (without turning vblank on/off),
      and unifies the paths between fb_dirty and atomic psr
      enable/disable.
      Reviewed-by: NYakir Yang <ykk@rock-chips.com>
      Signed-off-by: NSean Paul <seanpaul@chromium.org>
      b883c9ba
  12. 23 8月, 2016 6 次提交
  13. 19 8月, 2016 2 次提交
  14. 09 8月, 2016 2 次提交
  15. 19 7月, 2016 3 次提交
  16. 17 6月, 2016 1 次提交
  17. 10 6月, 2016 2 次提交