1. 13 10月, 2014 1 次提交
    • D
      drm/mst: rework payload table allocation to conform better. · dfda0df3
      Dave Airlie 提交于
      The old code has problems with the Dell MST monitors due to some
      assumptions I made that weren't true.
      
      I initially thought the Virtual Channel Payload IDs had to be in
      the DPCD table in ascending order, however it appears that assumption
      is bogus.
      
      The old code also assumed it was possible to insert a member
      into the table and it would move other members up, like it does
      when you remove table entries, however reality has shown this
      isn't true.
      
      So the new code allocates VCPIs separate from entries in the payload
      tracking table, and when we remove an entry from the DPCD table,
      I shuffle the tracking payload entries around in the struct.
      
      This appears to make VT switch more robust (still not perfect)
      with an MST enabled Dell monitor.
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      dfda0df3
  2. 15 8月, 2014 2 次提交
  3. 22 7月, 2014 1 次提交
  4. 18 7月, 2014 2 次提交
  5. 09 7月, 2014 1 次提交
  6. 08 7月, 2014 1 次提交
    • D
      drm/helper: add Displayport multi-stream helper (v0.6) · ad7f8a1f
      Dave Airlie 提交于
      This is the initial import of the helper for displayport multistream.
      
      It consists of a topology manager, init/destroy/set mst state
      
      It supports DP 1.2 MST sideband msg protocol handler - via hpd irqs
      
      connector detect and edid retrieval interface.
      
      It supports i2c device over DP 1.2 sideband msg protocol (EDID reads only)
      
      bandwidth manager API via vcpi allocation and payload updating,
      along with a helper to check the ACT status.
      
      Objects:
      MST topology manager - one per toplevel MST capable GPU port - not sure if this should be higher level again
      MST branch unit - one instance per plugged branching unit - one at top of hierarchy - others hanging from ports
      MST port - one port per port reported by branching units, can have MST units hanging from them as well.
      
      Changes since initial posting:
      a) add a mutex responsbile for the queues, it locks the sideband and msg slots, and msgs to transmit state
      b) add worker to handle connection state change events, for MST device chaining and hotplug
      c) add a payload spinlock
      d) add path sideband msg support
      e) fixup enum path resources transmit
      f) reduce max dpcd msg to 16, as per DP1.2 spec.
      g) separate tx queue kicking from irq processing and move irq acking back to drivers.
      
      Changes since v0.2:
      a) reorganise code,
      b) drop ACT forcing code
      c) add connector naming interface using path property
      d) add topology dumper helper
      e) proper reference counting and lookup for ports and mstbs.
      f) move tx kicking into a workq
      g) add aux locking - this should be redone
      h) split teardown into two parts
      i) start working on documentation on interface.
      
      Changes since v0.3:
      a) vc payload locking and tracking fixes
      b) add hotplug callback into driver - replaces crazy return 1 scheme
      c) txmsg + mst branch device refcount fixes
      d) don't bail on mst shutdown if device is gone
      e) change irq handler to take all 4 bytes of SINK_COUNT + ESI vectors
      f) make DP payload updates timeout longer - observed on docking station redock
      g) add more info to debugfs dumper
      
      Changes since v0.4:
      a) suspend/resume support
      b) more debugging in debugfs
      
      Changes since v0.5:
      a) use byte * to avoid unnecessary stack usage
      b) fix num_sdp_streams interpretation.
      c) init payload state for unplug events
      d) remove lenovo dock sink count hack
      e) drop aux lock - post rebase
      f) call hotplug on port destroy
      
      TODO:
      misc features
      Reviewed-by: NTodd Previte <tprevite@gmail.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      ad7f8a1f