1. 27 Nov, 2016 12 commits
    • Rob Clark's avatar
      drm/msm/mdp5: handle SMP block allocations "atomically" · 49ec5b2e
      Rob Clark authored
      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: default avatarRob Clark <robdclark@gmail.com>
      49ec5b2e
    • Rob Clark's avatar
      drm/msm/mdp5: dynamically assign hw pipes to planes · 4a0f012d
      Rob Clark authored
      (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: default avatarRob Clark <robdclark@gmail.com>
      4a0f012d
    • Rob Clark's avatar
      drm/msm/mdp5: add skeletal mdp5_state · ac2a3fd3
      Rob Clark authored
      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: default avatarRob Clark <robdclark@gmail.com>
      Reviewed-by: default avatarArchit Taneja <architt@codeaurora.org>
      ac2a3fd3
    • Rob Clark's avatar
      drm/msm: subclass drm_atomic_state · 870d738a
      Rob Clark authored
      This will give the kms backends a slot to stash their own hw specific
      global state.
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      870d738a
    • Rob Clark's avatar
      drm/msm/mdp5: introduce mdp5_hw_pipe · c056b55d
      Rob Clark authored
      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: default avatarRob Clark <robdclark@gmail.com>
      Reviewed-by: default avatarArchit Taneja <architt@codeaurora.org>
      c056b55d
    • Rob Clark's avatar
      drm/msm/mdp5: rip out mode_changed · f5903bad
      Rob Clark authored
      It wasn't really doing the right thing if, for example, position or
      height changed.
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      f5903bad
    • Rob Clark's avatar
      drm/msm/mdp5: don't be so casty · 6ff3ddca
      Rob Clark authored
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      6ff3ddca
    • Rob Clark's avatar
      drm/msm/mdp5: drop mdp5_plane::name · 0002d30f
      Rob Clark authored
      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: default avatarRob Clark <robdclark@gmail.com>
      0002d30f
    • Rob Clark's avatar
      drm/msm/mdp5: nuke mdp5_plane_complete_flip() · a2100695
      Rob Clark authored
      We can do this all from mdp5_plane_complete_commit(), so simplify things
      a bit and drop mdp5_plane_complete_flip().
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      a2100695
    • Rob Clark's avatar
      drm/msm/mdp5: drop mdp5_crtc::name · cee26588
      Rob Clark authored
      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: default avatarRob Clark <robdclark@gmail.com>
      cee26588
    • Rob Clark's avatar
      drm/msm/mdp5: small rename · d3937111
      Rob Clark authored
      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: default avatarRob Clark <robdclark@gmail.com>
      d3937111
    • Rob Clark's avatar
      drm/msm: support multiple address spaces · 667ce33e
      Rob Clark authored
      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: default avatarRob Clark <robdclark@gmail.com>
      667ce33e
  2. 26 Nov, 2016 6 commits
  3. 24 Nov, 2016 2 commits
    • Dave Airlie's avatar
      Merge branch 'drm-tda998x-devel' of git://git.armlinux.org.uk/~rmk/linux-arm into drm-next · 7625e052
      Dave Airlie authored
      These updates:
      * improve the robustness of the driver wrt races
      * improve the compliance for sending infoframes and audio
      * re-organise the function order in the driver to group like functions
        together.  (This unfortunately causes a conflict with the change in
        drm-misc, but it should be trivial to solve, although it looks more
        scarey than it really is - sfr has already sent two reports about
        this, one earlier today.)
      * simplify tda998x_audio_get_eld and DPMS handling
      * power down sections of the chip that we never use
      * add some initial preparation for supporting the CEC driver
      
      * 'drm-tda998x-devel' of git://git.armlinux.org.uk/~rmk/linux-arm:
        drm/i2c: tda998x: fix spelling mistake
        drm/i2c: tda998x: allow sharing of the CEC device accesses
        drm/i2c: tda998x: allow interrupt to be shared
        drm/i2c: tda998x: power down pre-filter and color conversion
        drm/i2c: tda998x: switch to boolean is_on
        drm/i2c: tda998x: remove complexity from tda998x_audio_get_eld()
        drm/i2c: tda998x: group audio functions together
        drm/i2c: tda998x: separate connector initialisation
        drm/i2c: tda998x: group connector functions and funcs together
        drm/i2c: tda998x: move and rename tda998x_encoder_set_config()
        drm/i2c: tda998x: correct function name in comments
        drm/i2c: tda998x: only enable audio if supported by sink
        drm/i2c: tda998x: only configure infoframes and audio if supported
        drm/i2c: tda998x: avoid race when programming audio
        drm/i2c: tda998x: avoid racy access to mode clock
        drm/i2c: tda998x: avoid race in tda998x_encoder_mode_set()
        drm/i2c: tda998x: move audio mutex initialisation
      7625e052
    • Dave Airlie's avatar
      Merge branch 'drm-armada-devel' of git://git.armlinux.org.uk/~rmk/linux-arm into drm-next · 4d5304d8
      Dave Airlie authored
      Building on top of the MALI change previously merged, these changes:
      * add tracing support for overlay updates
      * refactor some of the plane support code
      * de-midlayer the driver
      * cleanups from other folk reviewing the code
      
      * 'drm-armada-devel' of git://git.armlinux.org.uk/~rmk/linux-arm:
        drm/armada: fix NULL pointer comparison warning
        drm/armada: use DRM_FB_HELPER_DEFAULT_OPS for fb_ops
        drm/armada: remove some dead code
        drm/armada: mark symbols static where possible
        drm/armada: de-midlayer armada
        drm/armada: use common helper for plane base address
        drm/armada: move setting primary plane position to armada_drm_primary_set()
        drm/armada: split out primary plane update
        drm/armada: move plane state to struct armada_plane
        drm/armada: clean up armada_drm_plane_work_run()
        drm/armada: add tracing support
      4d5304d8
  4. 21 Nov, 2016 1 commit
  5. 18 Nov, 2016 16 commits
  6. 17 Nov, 2016 3 commits