1. 19 12月, 2014 4 次提交
  2. 18 12月, 2014 2 次提交
    • D
      drm/atomic: Introduce state->obj backpointers · 07cc0ef6
      Daniel Vetter 提交于
      Useful since this way we can pass around just the state objects and
      will get ther real object, too.
      
      Specifically this allows us to again simplify the parameters for
      set_crtc_for_plane.
      
      v2: msm already has it's own specific plane_reset hook, don't forget
      that one!
      
      v3: Fixup kerneldoc, reported by 0-day builder.
      
      Cc: Rob Clark <robdclark@gmail.com>
      Reviewed-by: Rob Clark <robdclark@gmail.com> (v2)
      Tested-by: Rob Clark <robdclark@gmail.com> (v2)
      Signed-off-by: NDaniel Vetter <daniel.vetter@intel.com>
      07cc0ef6
    • D
      drm/atomic-helper: Again check modeset *before* plane states · b4274fbe
      Daniel Vetter 提交于
      This essentially reverts
      
      commit 934ce1c2
      Author: Rob Clark <robdclark@gmail.com>
      Date:   Wed Nov 19 16:41:33 2014 -0500
      
          drm/atomic: check mode_changed *after* atomic_check
      
      Depending upon the driver both orders (or maybe even interleaving) is
      required:
      - If ->atomic_check updates ->mode_changed then helper_check_modeset
        must be run afters.
      - If ->atomic_check depends upon accurate adjusted dotclock values for
        e.g. watermarks, then helper_check_modeset must be run first.
      
      The failure mode in the first case is usually a totally angry hw
      because the pixel format switching doesn't happen. The failure mode in
      the later case is usually nothing, since in most cases the old
      adjusted mode from the previous modeset wont be too far off to be a
      problem. So just underruns and perhaps even just suboptimal (from a
      power consumption) watermarks.
      
      Furthermore in the transitional helpers we only call ->atomic_check
      after the new modeset state has been fully set up (and hence
      computed).
      
      Given that asymmetry in expected failure modes I think it's safer to
      go back to the older order. So do that and give msm a special check
      function to compensate.
      
      Also update kerneldoc to explain this a bit.
      
      v2: Actually add the missing hunk Rob spotted.
      
      v3: Move msm_atomic_check into msm_atomic.c, requested by Rob.
      
      Cc: Rob Clark <robdclark@gmail.com>
      Reviewed-by: NRob Clark <robdclark@gmail.com>
      Tested-by: NRob Clark <robdclark@gmail.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@intel.com>
      b4274fbe
  3. 17 12月, 2014 2 次提交
  4. 10 12月, 2014 1 次提交
  5. 27 11月, 2014 1 次提交
  6. 25 11月, 2014 1 次提交
  7. 22 11月, 2014 1 次提交
  8. 21 11月, 2014 12 次提交
    • R
      drm/msm/mdp5: dpms(OFF) cleanups · d6ac4a84
      Rob Clark 提交于
      When disabling the interface (INTF), the change doesn't latch until next
      vblank, so we need to wait for vblank.
      
      Also, to be pedantic, in the crtc, set all the mixer stages to unused.
      It shouldn't really matter, since at this point we have already disabled
      the INTF and waited for necessary vblank.
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      d6ac4a84
    • R
      drm/msm/mdp5: atomic · ed851963
      Rob Clark 提交于
      Convert mdp5 over to atomic helpers.  Extend/wrap drm_plane_state to
      track plane zpos and to keep track of the needed when applying the
      atomic update.  In mdp5's plane->atomic_check() we also need to check
      for updates which require SMP reallocation, in order to trigger full
      modeset.
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      ed851963
    • R
      drm/msm: atomic fixes · 3e2f29e4
      Rob Clark 提交于
      Fixes for a couple little issues found in testing.
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      3e2f29e4
    • R
      drm/msm/mdp5: remove global mdp5_ctl_mgr · 32c0e3e2
      Rob Clark 提交于
      A bit cleaner.. and won't resulting in an attempt to kfree() a static
      global in unload path.
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      32c0e3e2
    • R
      drm/msm/mdp5: don't use void * for opaque types · 42238da8
      Rob Clark 提交于
      For example, use 'struct mdp5_smp *' everywhere instead of 'void *', but
      only declare it as 'struct mdp5_smp;' in common headers, so the struct
      body is still private.  The accomplishes the desired modularity while
      still letting the compiler provide some type checking for us.
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      42238da8
    • S
      drm/msm: add multiple CRTC and overlay support · 0deed25b
      Stephane Viau 提交于
      MDP5 currently support one single CRTC with its private pipe.
      This change allows the configuration of multiple CRTCs with
      the possibility to attach several public planes to these CRTCs.
      Signed-off-by: NStephane Viau <sviau@codeaurora.org>
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      0deed25b
    • R
      drm/msm/mdp5: set rate before enabling clk · ac7a5704
      Rob Clark 提交于
      Set a "safe" rate at first, in order to read out the hw revision.  And
      then after set the optimal value.
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      ac7a5704
    • S
      drm/msm/mdp5: introduce mdp5_cfg module · 2e362e17
      Stephane Viau 提交于
      The hardware configuration modification from a version to another
      is quite consequent. Introducing a configuration module
      (mdp5_cfg) may make things more clear and easier to access when a
      new hardware version comes up.
      Signed-off-by: NStephane Viau <sviau@codeaurora.org>
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      2e362e17
    • S
      drm/msm/mdp5: make SMP module dynamically configurable · bfcdfb0e
      Stephane Viau 提交于
      The Shared Memory Pool (SMP) has its own limitation, features and
      state. Some examples are:
       - the number of Memory Macro Block (MMB) and their size
       - the number of lines that can be fetched
       - the state of MMB currently allocated
       - the computation of number of blocks required per plane
       - client IDs ...
      
      In order to avoid private data to be overwritten by other modules,
      let's make these private to the SMP module.
      
      Some of these depend on the hardware configuration, let's add them
      to the mdp5_config struct.
      
      In some hw configurations, some MMBs are statically tied to RGB
      pipes and cannot be re-allocated dynamically. This change
      introduces the concept of MMB static usage and makes sure that
      dynamic MMB requests are dimensioned accordingly.
      
      A note on passing a pipe pointer, instead of client IDs:
      Client IDs are SMP-related information. Passing PIPE information
      to SMP lets SMP module to find out which SMP client(s) are used.
      This allows the SMP module to access the PIPE pointer, which can
      be used for FIFO watermark configuration.
      By the way, even though REG_MDP5_PIPE_REQPRIO_FIFO_WM_* registers
      are part of the PIPE registers, their functionality is to reflect
      the behavior of the SMP block. These registers access is now
      restricted to the SMP module.
      Signed-off-by: NStephane Viau <sviau@codeaurora.org>
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      bfcdfb0e
    • R
      drm/msm/hdmi: remove useless kref · d1a717bd
      Rob Clark 提交于
      A left-over from prior to component framework.  The original intent was
      to deal with hdmi getting unloaded before the master component, but that
      isn't really going to work anyways.  These days with the component
      framework taking care to unload the master component first, we don't
      have to worry about this.
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      d1a717bd
    • S
      drm/msm/mdp5: get the core clock rate from MDP5 config · 3f307963
      Stephane Viau 提交于
      The core clock rate depends on the hw configuration. Once we have
      read the hardware revision, we can set the core clock to its
      maximum value.
      Before then, the clock is set at a rate supported by all MDP5
      revisions.
      Signed-off-by: NStephane Viau <sviau@codeaurora.org>
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      3f307963
    • R
      drm/msm/mdp5: use irqdomains · f6a8eaca
      Rob Clark 提交于
      For mdp5, the irqs of hdmi/eDP/dsi0/dsi1 blocks get routed through the
      mdp block.  In order to decouple hdmi/eDP/etc, register an irq domain
      in mdp5.  When hdmi/dsi/etc are used with mdp4, they can directly setup
      their irqs in their DT nodes as normal.  When used with mdp5, instead
      set the mdp device as the interrupt-parent, as in:
      
      	mdp: qcom,mdss_mdp@fd900000 {
      		compatible = "qcom,mdss_mdp";
      		interrupt-controller;
      		#interrupt-cells = <1>;
      		...
      	};
      
      	hdmi: qcom,hdmi_tx@fd922100 {
      		compatible = "qcom,hdmi-tx-8074";
      		interrupt-parent = <&mdp>;
      		interrupts = <8 0>;   /* MDP5_HW_INTR_STATUS.INTR_HDMI */
      		...
      	};
      
      There is a slight awkwardness, in that we cannot disable child irqs
      at the mdp level, they can only be cleared in the child block.  So
      you must not use threaded irq handlers in the child.  I'm not sure
      if there is a better way to deal with that.
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      f6a8eaca
  9. 17 11月, 2014 16 次提交