1. 09 Sep, 2017 2 commits
    • Chen-Yu Tsai's avatar
      drm/sun4i: tcon: Check for multiple paths between TCONs and backends · 1469619d
      Chen-Yu Tsai authored
      The patch b317fa3b ("drm/sun4i: tcon: Find matching display backend
      by device node matching") assumed a one-to-one mapping between TCONs
      and backends. This turned out wrong, as we found muxing controls in the
      TCON of the A31, and undocumented usage of the backend output selector
      of the A20.
      
      Make sun4i_tcon_find_engine() bail out if the current node has multiple
      input connections.
      
      Fixes: b317fa3b ("drm/sun4i: tcon: Find matching display backend
      		      by device node matching")
      Signed-off-by: default avatarChen-Yu Tsai <wens@csie.org>
      Signed-off-by: default avatarMaxime Ripard <maxime.ripard@free-electrons.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20170908075016.18657-4-wens@csie.org
      1469619d
    • Chen-Yu Tsai's avatar
      drm/sun4i: add components in breadth first traversal order · da82b878
      Chen-Yu Tsai authored
      The encoder drivers use drm_of_find_possible_crtcs to get upstream
      crtcs from the device tree using of_graph. For the results to be
      correct, encoders must be probed/bound after _all_ crtcs have been
      created. The existing code uses a depth first recursive traversal
      of the of_graph, which means the encoders downstream of the TCON
      get add right after the first TCON. The second TCON or CRTC will
      never be properly associated with encoders connected to it.
      
      Other platforms, such as Rockchip, deal with this by probing all
      CRTCs first, then all subsequent components. This is easy to do
      since the CRTCs correspond to just one device node, and are the
      first nodes in the pipeline.
      
      However with Allwinner SoCs, the function of the CRTC is split
      between the display backend (DE 1.0) or mixer (DE 2.0), which does
      scan-out and compositing, and the TCON, which generates the display
      timing signals. Further complicating the process, there may be a
      Dynamic Range Controller between the backend and the TCON. Also, the
      backend is preceded by the frontend, with a Display Enhancement Unit
      possibly in between.
      
      In a dual display pipeline setup, both frontends can feed either
      backend, and both backends can feed either TCON. We want all
      components of the same type to be added before the next type in the
      pipeline. Fortunately, the pipelines are perfectly symmetric, i.e.
      components of the same type are at the same depth when counted from
      the frontend. The only exception is the third pipeline in the A80
      SoC, which we do not support anyway.
      
      Hence we can use a breadth first search traversal order to add
      components. We do not need to check for duplicates. The component
      matching system handles this for us.
      Signed-off-by: default avatarChen-Yu Tsai <wens@csie.org>
      Signed-off-by: default avatarMaxime Ripard <maxime.ripard@free-electrons.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20170908075016.18657-3-wens@csie.org
      da82b878
  2. 08 Sep, 2017 15 commits
  3. 06 Sep, 2017 1 commit
  4. 05 Sep, 2017 3 commits
  5. 04 Sep, 2017 3 commits
  6. 02 Sep, 2017 6 commits
  7. 01 Sep, 2017 5 commits
  8. 31 Aug, 2017 1 commit
  9. 30 Aug, 2017 1 commit
  10. 27 Aug, 2017 3 commits