1. 20 Oct, 2017 2 commits
    • Thierry Reding's avatar
      gpu: host1x: syncpt: Request syncpoints per client · 617dd7cc
      Thierry Reding authored
      Rather than request syncpoints for a struct device *, request them for a
      struct host1x_client *. This is important because subsequent patches are
      going to break the assumption that host1x will always be the parent for
      devices requesting a syncpoint. It's also a more natural choice because
      host1x clients are really the only ones that will know how to deal with
      syncpoints.
      
      Note that host1x clients are always guaranteed to be children of host1x,
      regardless of their location in the device tree.
      Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
      617dd7cc
    • Thierry Reding's avatar
      gpu: host1x: Use of_device_get_match_data() · 6a341fdf
      Thierry Reding authored
      Avoid some boilerplate by calling of_device_get_match_data() instead of
      open-coding the equivalent in the driver.
      
      While at it, shuffle around some code to avoid unnecessary local
      variables.
      Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
      6a341fdf
  2. 17 Aug, 2017 4 commits
  3. 31 Jul, 2017 1 commit
  4. 27 Jul, 2017 1 commit
  5. 15 Jun, 2017 14 commits
  6. 18 May, 2017 2 commits
    • Arnd Bergmann's avatar
      gpu: host1x: select IOMMU_IOVA · 52499a6a
      Arnd Bergmann authored
      When IOMMU_IOVA is not built-in but host1x is, we get a link error:
      
      drivers/gpu/host1x/dev.o: In function `host1x_remove':
      dev.c:(.text.host1x_remove+0x50): undefined reference to `put_iova_domain'
      drivers/gpu/host1x/dev.o: In function `host1x_probe':
      dev.c:(.text.host1x_probe+0x31c): undefined reference to `init_iova_domain'
      dev.c:(.text.host1x_probe+0x38c): undefined reference to `put_iova_domain'
      drivers/gpu/host1x/cdma.o: In function `host1x_cdma_init':
      cdma.c:(.text.host1x_cdma_init+0x238): undefined reference to `alloc_iova'
      cdma.c:(.text.host1x_cdma_init+0x2c0): undefined reference to `__free_iova'
      drivers/gpu/host1x/cdma.o: In function `host1x_cdma_deinit':
      cdma.c:(.text.host1x_cdma_deinit+0xb0): undefined reference to `free_iova'
      
      This adds the same select statement that we have for drm_tegra.
      
      Fixes: 404bfb78 ("gpu: host1x: Add IOMMU support")
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Reviewed-by: default avatarMikko Perttunen <mperttunen@nvidia.com>
      Signed-off-by: Sean Paul's avatarSean Paul <seanpaul@chromium.org>
      Link: http://patchwork.freedesktop.org/patch/msgid/20170419182449.885312-1-arnd@arndb.de
      52499a6a
    • Arnd Bergmann's avatar
      gpu: host1x: select IOMMU_IOVA · b12f601f
      Arnd Bergmann authored
      When IOMMU_IOVA is not built-in but host1x is, we get a link error:
      
      drivers/gpu/host1x/dev.o: In function `host1x_remove':
      dev.c:(.text.host1x_remove+0x50): undefined reference to `put_iova_domain'
      drivers/gpu/host1x/dev.o: In function `host1x_probe':
      dev.c:(.text.host1x_probe+0x31c): undefined reference to `init_iova_domain'
      dev.c:(.text.host1x_probe+0x38c): undefined reference to `put_iova_domain'
      drivers/gpu/host1x/cdma.o: In function `host1x_cdma_init':
      cdma.c:(.text.host1x_cdma_init+0x238): undefined reference to `alloc_iova'
      cdma.c:(.text.host1x_cdma_init+0x2c0): undefined reference to `__free_iova'
      drivers/gpu/host1x/cdma.o: In function `host1x_cdma_deinit':
      cdma.c:(.text.host1x_cdma_deinit+0xb0): undefined reference to `free_iova'
      
      This adds the same select statement that we have for drm_tegra.
      
      Fixes: 404bfb78 ("gpu: host1x: Add IOMMU support")
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Reviewed-by: default avatarMikko Perttunen <mperttunen@nvidia.com>
      Signed-off-by: Sean Paul's avatarSean Paul <seanpaul@chromium.org>
      Link: http://patchwork.freedesktop.org/patch/msgid/20170419182449.885312-1-arnd@arndb.de
      b12f601f
  7. 05 Apr, 2017 4 commits
  8. 04 Apr, 2017 1 commit
  9. 30 Jan, 2017 1 commit
  10. 11 Nov, 2016 2 commits
  11. 24 Aug, 2016 1 commit
    • Thierry Reding's avatar
      drm/tegra: dsi: Enhance runtime power management · 87904c3e
      Thierry Reding authored
      The MIPI DSI output on Tegra SoCs requires some external logic to
      calibrate the MIPI pads before a video signal can be transmitted. This
      MIPI calibration logic requires to be powered on while the MIPI pads are
      being used, which is currently done as part of the DSI driver's probe
      implementation.
      
      This is suboptimal because it will leave the MIPI calibration logic
      powered up even if the DSI output is never used.
      
      On Tegra114 and earlier this behaviour also causes the driver to hang
      while trying to power up the MIPI calibration logic because the power
      partition that contains the MIPI calibration logic will be powered on
      by the display controller at output pipeline configuration time. Thus
      the power up sequence for the MIPI calibration logic happens before
      it's power partition is guaranteed to be enabled.
      
      Fix this by splitting up the API into a request/free pair of functions
      that manage the runtime dependency between the DSI and the calibration
      modules (no registers are accessed) and a set of enable, calibrate and
      disable functions that program the MIPI calibration logic at points in
      time where the power partition is really enabled.
      
      While at it, make sure that the runtime power management also works in
      ganged mode, which is currently also broken.
      Reported-by: default avatarJonathan Hunter <jonathanh@nvidia.com>
      Tested-by: default avatarJonathan Hunter <jonathanh@nvidia.com>
      Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
      87904c3e
  12. 23 Jun, 2016 7 commits