1. 28 11月, 2016 12 次提交
    • R
      drm/msm/mdp5: handle SMP block allocations "atomically" · 49ec5b2e
      Rob Clark 提交于
      Previously, SMP block allocation was not checked in the plane's
      atomic_check() fxn, so we could fail allocation SMP block allocation at
      atomic_update() time.  Re-work the block allocation to request blocks
      during atomic_check(), but not update the hw until committing the atomic
      update.
      
      Since SMP blocks allocated at atomic_check() time, we need to manage the
      SMP state as part of mdp5_state (global atomic state).  This actually
      ends up significantly simplifying the SMP management, as the SMP module
      does not need to manage the intermediate state between assigning new
      blocks before setting flush bits and releasing old blocks after vblank.
      (The SMP registers and SMP allocation is not double-buffered, so newly
      allocated blocks need to be updated in kms->prepare_commit() released
      blocks in kms->complete_commit().)
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      49ec5b2e
    • R
      drm/msm/mdp5: dynamically assign hw pipes to planes · 4a0f012d
      Rob Clark 提交于
      (re)assign the hw pipes to planes based on required caps, and to handle
      situations where we could not modify an in-use plane (ie. SMP block
      reallocation).
      
      This means all planes advertise the superset of formats and properties.
      Userspace must (as always) use atomic TEST_ONLY step for atomic updates,
      as not all planes may be available for use on every frame.
      
      The mapping of hwpipe to plane is stored in mdp5_state, so that state
      updates are atomically committed in the same way that plane/etc state
      updates are managed.  This is needed because the mdp5_plane_state keeps
      a pointer to the hwpipe, and we don't want global state to become out
      of sync with the plane state if an atomic update fails, we hit deadlock/
      backoff scenario, etc.  The use of state_lock keeps multiple parallel
      updates which both re-assign hwpipes properly serialized.
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      4a0f012d
    • R
      drm/msm/mdp5: add skeletal mdp5_state · ac2a3fd3
      Rob Clark 提交于
      Add basic state duplication/apply mechanism.  Following commits will
      move actual global hw state into this.
      
      The state_lock allows multiple concurrent updates to proceed as long as
      they don't both try to alter global state.  The ww_mutex mechanism will
      trigger backoff in case of deadlock between multiple threads trying to
      update state.
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      Reviewed-by: NArchit Taneja <architt@codeaurora.org>
      ac2a3fd3
    • R
      drm/msm: subclass drm_atomic_state · 870d738a
      Rob Clark 提交于
      This will give the kms backends a slot to stash their own hw specific
      global state.
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      870d738a
    • R
      drm/msm/mdp5: introduce mdp5_hw_pipe · c056b55d
      Rob Clark 提交于
      Split out the hardware pipe specifics from mdp5_plane.  To start, the hw
      pipes are statically assigned to planes, but next step is to assign the
      hw pipes during plane->atomic_check() based on requested caps (scaling,
      YUV, etc).  And then hw pipe re-assignment if required if required SMP
      blocks changes.
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      Reviewed-by: NArchit Taneja <architt@codeaurora.org>
      c056b55d
    • R
      drm/msm/mdp5: rip out mode_changed · f5903bad
      Rob Clark 提交于
      It wasn't really doing the right thing if, for example, position or
      height changed.
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      f5903bad
    • R
      drm/msm/mdp5: don't be so casty · 6ff3ddca
      Rob Clark 提交于
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      6ff3ddca
    • R
      drm/msm/mdp5: drop mdp5_plane::name · 0002d30f
      Rob Clark 提交于
      Just use plane->name now that it is a thing.  In a following patch, once
      we dynamically assign hw pipes to planes, it won't make sense to name
      planes the way we do, so this also partly reduces churn in following
      patch.
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      0002d30f
    • R
      drm/msm/mdp5: nuke mdp5_plane_complete_flip() · a2100695
      Rob Clark 提交于
      We can do this all from mdp5_plane_complete_commit(), so simplify things
      a bit and drop mdp5_plane_complete_flip().
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      a2100695
    • R
      drm/msm/mdp5: drop mdp5_crtc::name · cee26588
      Rob Clark 提交于
      Plane's (pipes) can be assigned dynamically with atomic, so it doesn't
      make much sense to name the pipe after it's primary plane.
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      cee26588
    • R
      drm/msm/mdp5: small rename · d3937111
      Rob Clark 提交于
      These are really plane-id's, not crtc-id's.  Only connection to CRTCs is
      that they are used as primary-planes.
      
      Current name is just legacy from when we only supported RGB/primary
      planes.  Lets pick a better name now.
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      d3937111
    • R
      drm/msm: support multiple address spaces · 667ce33e
      Rob Clark 提交于
      We can have various combinations of 64b and 32b address space, ie. 64b
      CPU but 32b display and gpu, or 64b CPU and GPU but 32b display.  So
      best to decouple the device iova's from mmap offset.
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      667ce33e
  2. 27 11月, 2016 5 次提交
  3. 14 11月, 2016 1 次提交
  4. 09 11月, 2016 2 次提交
  5. 08 11月, 2016 1 次提交
  6. 02 11月, 2016 1 次提交
  7. 25 10月, 2016 2 次提交
  8. 24 10月, 2016 2 次提交
  9. 22 10月, 2016 2 次提交
  10. 17 10月, 2016 1 次提交
  11. 22 9月, 2016 1 次提交
  12. 21 9月, 2016 1 次提交
  13. 16 9月, 2016 9 次提交