1. 17 Dec, 2014 3 commits
    • Daniel Vetter's avatar
      drm/atomic-helper: Again check modeset *before* plane states · b4274fbe
      Daniel Vetter authored
      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: default avatarRob Clark <robdclark@gmail.com>
      Tested-by: default avatarRob Clark <robdclark@gmail.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
      b4274fbe
    • Daniel Vetter's avatar
      drm/atomic-helper: Export both plane and modeset check helpers · d9b13620
      Daniel Vetter authored
      The default call sequence for these two parts won't fit for all
      drivers. So export the two pieces and explain with a bit of kerneldoc
      when each should be called.
      
      v2: Squash in fixup from Rob to actually add the newly exported
      functions to headers
      
      Cc: Rob Clark <robdclark@gmail.com>
      Reviewed-by: default avatarRob Clark <robdclark@gmail.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
      d9b13620
    • Rob Clark's avatar
      drm/atomic: fix potential null ptr on plane enable · 4b08eae5
      Rob Clark authored
      When a plane is being enabled, plane->crtc has not been set yet.  Use
      plane->state->crtc.
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      Reviewed-by: default avatarSean Paul <seanpaul@chromium.org>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      4b08eae5
  2. 15 Dec, 2014 1 commit
  3. 12 Dec, 2014 2 commits
    • Dave Airlie's avatar
      Merge branch 'drm-sti-next-2014-12-11' of... · 731d7545
      Dave Airlie authored
      Merge branch 'drm-sti-next-2014-12-11' of http://git.linaro.org/people/benjamin.gaignard/kernel into drm-next
      
      This series of patches fix various issues in STI drm driver.
      Now HDMI i2c adapter could be selected in device tree
      and plug detection doesn't use gpio anymore.
      I also had fix some signal timing problems after testing the driver
      on more hardware.
      The remaining patches attemps to simplify the code and prepare
      the next evolutions like DVO and auxiliary CRTC support
      
      * 'drm-sti-next-2014-12-11' of http://git.linaro.org/people/benjamin.gaignard/kernel:
        drm: sti: correctly cleanup CRTC and planes
        drm: sti: add HQVDP plane
        drm: sti: add cursor plane
        drm: sti: enable auxiliary CRTC
        drm: sti: fix delay in VTG programming
        drm: sti: prepare sti_tvout to support auxiliary crtc
        drm: sti: use drm_crtc_vblank_{on/off} instead of drm_vblank_{on/off}
        drm: sti: fix hdmi avi infoframe
        drm: sti: remove event lock while disabling vblank
        drm: sti: simplify gdp code
        drm: sti: clear all mixer control
        drm: sti: remove gpio for HDMI hot plug detection
        drm: sti: allow to change hdmi ddc i2c adapter
      731d7545
    • Dave Airlie's avatar
      Merge tag 'drm-intel-next-fixes-2014-12-11' of... · b59f7822
      Dave Airlie authored
      Merge tag 'drm-intel-next-fixes-2014-12-11' of git://anongit.freedesktop.org/drm-intel into drm-next
      
      Here's a batch of i915 fixes for 3.19.
      
      * tag 'drm-intel-next-fixes-2014-12-11' of git://anongit.freedesktop.org/drm-intel:
        drm/i915: save/restore GMBUS freq across suspend/resume on gen4
        drm/i915: Remove '& 0xffff' from the mask given to WA_REG()
        drm/i915: Invert the mask and val arguments in wa_add() and WA_REG()
        drm/i915/bdw: Fix the write setting up the WIZ hashing mode
        drm/i915: Don't complain about stolen conflicts on gen3
        drm/i915: resume MST after reading back hw state
        drm/i915: Handle inaccurate time conversion issues
        drm/i915: compute wait_ioctl timeout correctly
        drm/i915: don't always do full mode sets when infoframes are enabled
      b59f7822
  4. 11 Dec, 2014 16 commits
  5. 10 Dec, 2014 5 commits
  6. 09 Dec, 2014 2 commits
  7. 08 Dec, 2014 11 commits
    • Dave Airlie's avatar
      Merge branch 'drm-mst-next' of ssh://people.freedesktop.org/~/linux into drm-next · d1b8792b
      Dave Airlie authored
      Merge mst tiling patches and MST fixes
      
      * 'drm-mst-next' of ssh://people.freedesktop.org/~/linux:
        drm/fb: add support for tiled monitor configurations. (v2)
        drm/tile: expose the tile property to userspace (v3)
        drm/connector: store tile information from displayid (v3)
        drm/mst: cached EDID for logical ports (v2)
        drm: add tile_group support. (v3)
        drm/displayid: add displayid defines and edid extension (v2)
        drm/dp-mst: Remove branches before dropping the reference
        drm/fb_helper: move deferred fb checking into restore mode (v2)
        drm/dp: retry AUX transactions 32 times (v1.1)
      d1b8792b
    • Dave Airlie's avatar
      drm/fb: add support for tiled monitor configurations. (v2) · b0ee9e7f
      Dave Airlie authored
      This adds fbdev/con support for tiled monitors, so that we
      only set a mode on the correct half of the monitor, or
      span the two halves if needed.
      
      v2: remove unneeded ERROR, fix | vs ||
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      b0ee9e7f
    • Dave Airlie's avatar
      drm/tile: expose the tile property to userspace (v3) · 6f134d7b
      Dave Airlie authored
      This takes the tiling info from the connector and
      exposes it to userspace, as a blob object in a
      connector property.
      
      The contents of the blob is ABI.
      
      v2: add property + function documentation.
      
      v3: move property setup from previous patch.
      add boilerplate + fix long line (Daniel)
      Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      6f134d7b
    • Dave Airlie's avatar
      drm/connector: store tile information from displayid (v3) · 40d9b043
      Dave Airlie authored
      This creates a tile group from DisplayID block, and
      stores the pieces of parsed info from the DisplayID block
      into the connector.
      
      v2: add missing signoff, add new connector bits to docs.
      
      v3: remove some debugging.
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      40d9b043
    • Dave Airlie's avatar
      drm/mst: cached EDID for logical ports (v2) · c6a0aed4
      Dave Airlie authored
      Logical ports are never going to have EDID changes,
      they are used for the internal ports on MST monitors.
      
      We cache the EDIDs from these to save time at MST probe.
      
      v2: drop misplace tile property line, meant for other patch.
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      c6a0aed4
    • Dave Airlie's avatar
      drm: add tile_group support. (v3) · 138f9ebb
      Dave Airlie authored
      A tile group is an identifier shared by a single monitor,
      DisplayID topology has 8 bytes we can use for this, just
      use those for now until something else comes up in the
      future. We assign these to an idr and use the idr to
      tell userspace what connectors are in the same tile group.
      
      DisplayID v1.3 says the serial number must be unique for
      displays from the same manufacturer.
      
      v2:
      destroy idr (dvdhrm)
      add docbook (danvet)
      airlied:- not sure how to make docbook add fns to tile group section.
      
      v3: fix missing unlock.
      Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      138f9ebb
    • Dave Airlie's avatar
      drm/displayid: add displayid defines and edid extension (v2) · b49b55bd
      Dave Airlie authored
      These are just taken from the DisplayID v1.3 spec, and the
      DDC spec.
      
      v2: use __packed (Jani)
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      b49b55bd
    • Daniel Vetter's avatar
      drm/dp-mst: Remove branches before dropping the reference · 0391359d
      Daniel Vetter authored
      When we unplug a dp mst branch we unreference the entire tree from
      the root towards the leaves. Which is ok, since that's the way the
      pointers and so also the refcounts go.
      
      But when we drop the reference we must make sure that we remove the
      branches/ports from the lists/pointers before dropping the reference.
      Otherwise the get_validated functions will still return it instead
      of returning NULL (which indicates a potentially on-going unplug).
      
      The mst branch destroy gets this right for ports: First it deletes
      the port from the ports list, then it unrefs. But the ports destroy
      function gets it wrong: First it unrefs, then it drops the ref. Which
      means a zombie mst branch can still be validate with get_validated_mstb_ref
      when it shouldn't.
      
      Fix this.
      
      This should address a backtrace Dave dug out somewhere on unplug:
      
       [<ffffffffa00cc262>] drm_dp_mst_get_validated_mstb_ref_locked+0x92/0xa0 [drm_kms_helper]
       [<ffffffffa00cc211>] drm_dp_mst_get_validated_mstb_ref_locked+0x41/0xa0 [drm_kms_helper]
       [<ffffffffa00cc2aa>] drm_dp_get_validated_mstb_ref+0x3a/0x60 [drm_kms_helper]
       [<ffffffffa00cc2fb>] drm_dp_payload_send_msg.isra.14+0x2b/0x100 [drm_kms_helper]
       [<ffffffffa00cc547>] drm_dp_update_payload_part1+0x177/0x360 [drm_kms_helper]
       [<ffffffffa015c52e>] intel_mst_disable_dp+0x3e/0x80 [i915]
       [<ffffffffa013d60b>] haswell_crtc_disable+0x1cb/0x340 [i915]
       [<ffffffffa0136739>] intel_crtc_control+0x49/0x100 [i915]
       [<ffffffffa0136857>] intel_crtc_update_dpms+0x67/0x80 [i915]
       [<ffffffffa013fa59>] intel_connector_dpms+0x59/0x70 [i915]
       [<ffffffffa015c752>] intel_dp_destroy_mst_connector+0x32/0xc0 [i915]
       [<ffffffffa00cb44b>] drm_dp_destroy_port+0x6b/0xa0 [drm_kms_helper]
       [<ffffffffa00cb588>] drm_dp_destroy_mst_branch_device+0x108/0x130 [drm_kms_helper]
       [<ffffffffa00cb3cd>] drm_dp_port_teardown_pdt+0x3d/0x50 [drm_kms_helper]
       [<ffffffffa00cdb79>] drm_dp_mst_handle_up_req+0x499/0x540 [drm_kms_helper]
       [<ffffffff810d9ead>] ? trace_hardirqs_on_caller+0x15d/0x200 [<ffffffffa00cdc73>]
       drm_dp_mst_hpd_irq+0x53/0xa00 [drm_kms_helper] [<ffffffffa00c7dfb>]
       ? drm_dp_dpcd_read+0x1b/0x20 [drm_kms_helper] [<ffffffffa0153ed8>]
       ? intel_dp_dpcd_read_wake+0x38/0x70 [i915] [<ffffffffa015a225>]
       intel_dp_check_mst_status+0xb5/0x250 [i915] [<ffffffffa015ac71>]
       intel_dp_hpd_pulse+0x181/0x210 [i915] [<ffffffffa01104f6>]
       i915_digport_work_func+0x96/0x120 [i915]
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      0391359d
    • Dave Airlie's avatar
      drm/fb_helper: move deferred fb checking into restore mode (v2) · e2809c7d
      Dave Airlie authored
      On MST systems the monitors don't appear when we set the fb up,
      but plymouth opens the drm device and holds it open while they
      come up, when plymouth finishes and lastclose gets called we
      don't do the delayed fb probe, so the monitor never appears on the
      console.
      
      Fix this by moving the delayed checking into the mode restore.
      
      v2: Daniel suggested that ->delayed_hotplug is set under
      the mode_config mutex, so we should check it under that as
      well, while we are in the area.
      Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      e2809c7d
    • Dave Airlie's avatar
      drm/dp: retry AUX transactions 32 times (v1.1) · 19a93f04
      Dave Airlie authored
      At least on two MST devices I've tested with, when
      they are link training downstream, they are totally
      unable to handle aux ch msgs, so they defer like nuts.
      I tried 16, it wasn't enough, 32 seems better.
      
      This fixes one Dell 4k monitor and one of the
      MST hubs.
      
      v1.1: fixup comment (Tom).
      Acked-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      19a93f04
    • Dave Airlie's avatar
      drm/i915: resume MST after reading back hw state · e7d6f7d7
      Dave Airlie authored
      Otherwise the MST resume paths can hit DPMS paths
      which hit state checker paths, which hit WARN_ON,
      because the state checker is inconsistent with the
      hw.
      
      This fixes a bunch of WARN_ON's on resume after
      undocking.
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
      e7d6f7d7