1. 22 5月, 2015 3 次提交
  2. 21 5月, 2015 5 次提交
    • A
      drm/DocBook: Add more drm_bridge documentation · 2331b4e4
      Archit Taneja 提交于
      Add DOC sections giving an overview of drm_bridge and how to fill up the
      drm_bridge_funcs ops. Add these to drm.tpml in DocBook.
      
      Add headerdocs for funcs in drm_bridge.c that don't have them yet.
      Signed-off-by: NArchit Taneja <architt@codeaurora.org>
      [danvet: Amend kerneldoc as discussed with Archit.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      2331b4e4
    • A
      drm: bridge: Allow daisy chaining of bridges · 862e686c
      Archit Taneja 提交于
      Allow drm_bridge objects to link to each other in order to form an encoder
      chain. The requirement for creating a chain of bridges comes because the
      MSM drm driver uses up its encoder and bridge objects for blocks within
      the SoC itself. There isn't anything left to use if the SoC display output
      is connected to an external encoder IC. Having an additional bridge
      connected to the existing bridge helps here. In general, it is possible for
      platforms to have  multiple devices between the encoder and the
      connector/panel that require some sort of configuration.
      
      We create drm bridge helper functions corresponding to each op in
      'drm_bridge_funcs'. These helpers call the corresponding
      'drm_bridge_funcs' op for the entire chain of bridges. These helpers are
      used internally by drm_atomic_helper.c and drm_crtc_helper.c.
      
      The drm_bridge_enable/pre_enable helpers execute enable/pre_enable ops of
      the bridge closet to the encoder, and proceed until the last bridge in the
      chain is enabled. The same holds for drm_bridge_mode_set/mode_fixup
      helpers. The drm_bridge_disable/post_disable helpers disable the last
      bridge in the chain first, and proceed until the first bridge in the chain
      is disabled.
      
      drm_bridge_attach() remains the same. As before, the driver calling this
      function should make sure it has set the links correctly. The order in
      which the bridges are connected to each other determines the order in which
      the calls are made. One requirement is that every bridge in the chain
      should point the parent encoder object. This is required since bridge
      drivers expect a valid encoder pointer in drm_bridge. For example, consider
      a chain where an encoder's output is connected to bridge1, and bridge1's
      output is connected to bridge2:
      
      	/* Like before, attach bridge to an encoder */
      	bridge1->encoder = encoder;
      	ret = drm_bridge_attach(dev, bridge1);
      	..
      
      	/*
      	 * set the first bridge's 'next' bridge to bridge2, set its encoder
      	 * as bridge1's encoder
      	 */
      	bridge1->next = bridge2
      	bridge2->encoder = bridge1->encoder;
      	ret = drm_bridge_attach(dev, bridge2);
      
      	...
      	...
      
      This method of bridge chaining isn't intrusive and existing drivers that
      use drm_bridge will behave the same way as before. The bridge helpers also
      cleans up the atomic and crtc helper files a bit.
      Reviewed-by: NJani Nikula <jani.nikula@linux.intel.com>
      Reviewed-by: NRob Clark <robdclark@gmail.com>
      Reviewed-by: NDaniel Vetter <daniel@ffwll.ch>
      Signed-off-by: NArchit Taneja <architt@codeaurora.org>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      862e686c
    • M
      drm/atomic: add all affected planes in drm_atomic_helper_check_modeset · 57744aa7
      Maarten Lankhorst 提交于
      Drivers may need to recalculate plane state when a modeset occurs,
      not reliably adding them might cause hard to debug bugs.
      Signed-off-by: NMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      57744aa7
    • M
      drm/atomic: add drm_atomic_add_affected_planes · e01e9f75
      Maarten Lankhorst 提交于
      This is a convenience function to add all planes for a crtc,
      similar to add_affected_connectors. This will be used in
      drm_atomic_helper_check_modeset, but drivers can call it too
      when they need to recalculate all state.
      Signed-off-by: NMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
      [danvet: Amend kerneldoc a bit.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      e01e9f75
    • M
      drm/atomic: add commit_planes_on_crtc helper · de28d021
      Maarten Lankhorst 提交于
      drm_atomic_helper_commit_planes calls all atomic_begin's first,
      then updates all planes, finally calling atomic_flush.
      
      Some drivers may want to things like disabling irq's
      from their atomic_begin, in which case a second call to atomic_begin
      will splat. By using commit_planes_on_crtc on each crtc in the
      atomic state they'll evade that issue.
      Signed-off-by: NMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
      [danvet: Extend kerneldoc a bit as discussed with Maarten on irc.]
      [danvet: Squash in fixup to check for crtc_funcs in all places.
      Reported by Dan Carpenter.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      de28d021
  3. 19 5月, 2015 13 次提交
  4. 18 5月, 2015 2 次提交
  5. 14 5月, 2015 1 次提交
  6. 13 5月, 2015 10 次提交
  7. 12 5月, 2015 3 次提交
  8. 11 5月, 2015 3 次提交
    • P
      drm/i915: Avoid GPU hang when coming out of s3 or s4 · 364aece0
      Peter Antoine 提交于
      This patch fixes a timing issue that causes a GPU hang when the system
      comes out of power saving.
      
      During pm_resume, We are submitting batchbuffers before enabling
      Interrupts this is causing us to miss the context switch interrupt,
      and in consequence intel_execlists_handle_ctx_events is not triggered.
      
      This patch is based on a patch from Deepak S <deepak.s@intel.com>
      from another platform.
      
      The patch fixes an issue introduced by:
        commit e7778be1
        drm/i915: Fix startup failure in LRC mode after recent init changes
      
      The above patch added a call to init_context() to fix an issue introduced
      by a previous patch. But, it then opened up a small timing window for the
      batches being added by the init_context (basically setting up the context)
      to complete before the interrupts have been turned on, thus hanging the
      GPU.
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89600
      Cc: stable@vger.kernel.org # 4.0+
      Signed-off-by: NPeter Antoine <peter.antoine@intel.com>
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      [Jani: fixed typo in subject, massaged the comments a bit]
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      364aece0
    • J
      drm/i915/vlv: remove wait for previous GFX clk disable request · cc7297dc
      Jesse Barnes 提交于
      Looks like it was introduced in:
      
      commit 650ad970
      Author: Imre Deak <imre.deak@intel.com>
      Date:   Fri Apr 18 16:35:02 2014 +0300
      
          drm/i915: vlv: factor out vlv_force_gfx_clock and check for pending force-of
      
      but I'm not sure why.  It has caused problems for us in the past (see
      85250ddf "drm/i915/chv: Remove Wait for a previous gfx force-off"
      and 8d4eee9c "drm/i915: vlv: increase timeout when forcing on the
      GFX clock") and doesn't seem to be required, so let's just drop it.
      
      [airlied: I messed up a merge - readd this]
      References: https://bugs.freedesktop.org/show_bug.cgi?id=89611Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Tested-by: NDarren Hart <dvhart@linux.intel.com>
      Reviewed-by: NDeepak S <deepak.s@linux.intel.com>
      Cc: stable@vger.kernel.org # c9c52e24: drm/i915/chv: Remove Wait ...
      Cc: stable@vger.kernel.org
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      cc7297dc
    • M
      drm: Zero out invalid vblank timestamp in drm_update_vblank_count. · fdb68e09
      Mario Kleiner 提交于
      Since commit 844b03f2 we make
      sure that after vblank irq off, we return the last valid
      (vblank count, vblank timestamp) pair to clients, e.g., during
      modesets, which is good.
      
      An overlooked side effect of that commit for kms drivers without
      support for precise vblank timestamping is that at vblank irq
      enable, when we update the vblank counter from the hw counter, we
      can't update the corresponding vblank timestamp, so now we have a
      totally mismatched timestamp for the new count to confuse clients.
      
      Restore old client visible behaviour from before Linux 3.17, but
      zero out the timestamp at vblank counter update (instead of disable
      as in original implementation) if we can't generate a meaningful
      timestamp immediately for the new vblank counter. This will fix
      this regression, so callers know they need to retry again later
      if they need a valid timestamp, but at the same time preserves
      the improvements made in the commit mentioned above.
      Signed-off-by: NMario Kleiner <mario.kleiner.de@gmail.com>
      Cc: <stable@vger.kernel.org> #v3.17+
      
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Cc: Daniel Vetter <daniel@ffwll.ch>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      fdb68e09