1. 31 Jul, 2020 28 commits
  2. 30 Jul, 2020 5 commits
    • Kalyan Thota's avatar
      drm/msm/dpu: enumerate second cursor pipe for external interface · 7b149f2b
      Kalyan Thota authored
      Setup an RGB HW pipe as cursor which can be used on
      secondary interface.
      
      For SC7180 2 HW pipes are enumerated as cursors
      1 - primary interface
      2 - secondary interface
      Signed-off-by: default avatarKalyan Thota <kalyan_t@codeaurora.org>
      Signed-off-by: default avatarRob Clark <robdclark@chromium.org>
      7b149f2b
    • Kalyan Thota's avatar
      drm/msm/dpu: ensure device suspend happens during PM sleep · ca8199f1
      Kalyan Thota authored
      "The PM core always increments the runtime usage counter
      before calling the ->suspend() callback and decrements it
      after calling the ->resume() callback"
      
      DPU and DSI are managed as runtime devices. When
      suspend is triggered, PM core adds a refcount on all the
      devices and calls device suspend, since usage count is
      already incremented, runtime suspend was not getting called
      and it kept the clocks on which resulted in target not
      entering into XO shutdown.
      
      Add changes to force suspend on runtime devices during pm sleep.
      
      Changes in v1:
       - Remove unnecessary checks in the function
          _dpu_kms_disable_dpu (Rob Clark).
      
      Changes in v2:
       - Avoid using suspend_late to reset the usagecount
         as suspend_late might not be called during suspend
         call failures (Doug).
      
      Changes in v3:
       - Use force suspend instead of managing device usage_count
         via runtime put and get API's to trigger callbacks (Doug).
      
      Changes in v4:
       - Check the return values of pm_runtime_force_suspend and
         pm_runtime_force_resume API's and pass appropriately (Doug).
      
      Changes in v5:
       - With v4 patch, test cycle has uncovered issues in device resume.
      
         On bubs: cmd tx failures were seen as SW is sending panel off
         commands when the dsi resources are turned off.
      
         Upon suspend, DRM driver will issue a NULL composition to the
         dpu, followed by turning off all the HW blocks.
      
         v5 changes will serialize the NULL commit and resource unwinding
         by handling them under PM prepare and PM complete phases there by
         ensuring that clks are on when panel off commands are being
         processed.
      
      Changes in v6:
      - Use drm_mode_config_helper_suspend/resume() instead of legacy API
        drm_atomic_helper_suspend/resume() (Doug).
      
        Trigger runtime callbacks from the suspend/resume call to turn
        off the resources.
      
      Changes in v7:
      - Add "__maybe_unused" to the functions to avoid compilation
        failures. Cleanup unnecessary configs (Doug).
      Signed-off-by: default avatarKalyan Thota <kalyan_t@codeaurora.org>
      Reviewed-by: default avatarDouglas Anderson <dianders@chromium.org>
      Signed-off-by: default avatarRob Clark <robdclark@chromium.org>
      ca8199f1
    • Jonathan Marek's avatar
      drm/msm: handle for EPROBE_DEFER for of_icc_get · 08af4769
      Jonathan Marek authored
      Check for errors instead of silently not using icc if the msm driver
      probes before the interconnect driver.
      
      Allow ENODATA for ocmem path, as it is optional and this error
      is returned when "gfx-mem" path is provided but not "ocmem".
      
      Because msm_gpu_cleanup assumes msm_gpu_init has been called, the icc path
      init needs to be after msm_gpu_init for the error path to work.
      Signed-off-by: default avatarJonathan Marek <jonathan@marek.ca>
      Signed-off-by: default avatarRob Clark <robdclark@chromium.org>
      08af4769
    • Jonathan Marek's avatar
      drm/msm: reset devfreq freq_table/max_state before devfreq_add_device · 0ded520b
      Jonathan Marek authored
      These never get set back to 0 when probing fails, so an attempt to probe
      again results in broken behavior. Fix the problem by setting thse to zero
      before they are used.
      Signed-off-by: default avatarJonathan Marek <jonathan@marek.ca>
      Signed-off-by: default avatarRob Clark <robdclark@chromium.org>
      0ded520b
    • Jonathan Marek's avatar
      drm/msm: fix unbalanced pm_runtime_enable in adreno_gpu_{init, cleanup} · 17e822f7
      Jonathan Marek authored
      adreno_gpu_init calls pm_runtime_enable, so adreno_gpu_cleanup needs to
      call pm_runtime_disable.
      Signed-off-by: default avatarJonathan Marek <jonathan@marek.ca>
      Signed-off-by: default avatarRob Clark <robdclark@chromium.org>
      17e822f7
  3. 29 Jul, 2020 2 commits
  4. 28 Jul, 2020 2 commits
  5. 27 Jul, 2020 2 commits
  6. 24 Jul, 2020 1 commit
    • Lyude Paul's avatar
      drm/nouveau/kms/nv50-: Fix CRC-related compile errors with debugfs disabled · 0059a908
      Lyude Paul authored
      Looks like I made the mistake of forgetting to check whether or not this
      would build without CONFIG_DEBUG_FS, as the Kbuild bot reported some
      issues building with tegra_defconfig:
      
      In file included from drivers/gpu/drm/nouveau/nouveau_display.c:47:
      ./drivers/gpu/drm/nouveau/dispnv50/crc.h: In function
      ‘nv50_head_crc_late_register’:
      ./drivers/gpu/drm/nouveau/dispnv50/crc.h:106:47: error: parameter name
      omitted
        106 | static inline int nv50_head_crc_late_register(struct nv50_head *) {}
            |                                               ^~~~~~~~~~~~~~~~~~
      ./drivers/gpu/drm/nouveau/dispnv50/crc.h:106:54: warning: no return
      statement in function returning non-void [-Wreturn-type]
        106 | static inline int nv50_head_crc_late_register(struct nv50_head *) {}
            |                                                      ^~~~~~~~~
      ./drivers/gpu/drm/nouveau/dispnv50/crc.h: In function
      ‘nv50_crc_handle_vblank’:
      ./drivers/gpu/drm/nouveau/dispnv50/crc.h:108:57: warning: ‘return’ with
      a value, in function returning void [-Wreturn-type]
        108 | nv50_crc_handle_vblank(struct nv50_head *head) { return 0; }
            |                                                         ^
      ./drivers/gpu/drm/nouveau/dispnv50/crc.h:108:1: note: declared here
        108 | nv50_crc_handle_vblank(struct nv50_head *head) { return 0; }
            | ^~~~~~~~~~~~~~~~~~~~~~
      ./drivers/gpu/drm/nouveau/dispnv50/crc.h: In function
      ‘nv50_crc_atomic_check’:
      ./drivers/gpu/drm/nouveau/dispnv50/crc.h:111:23: error: parameter name
      omitted
        111 | nv50_crc_atomic_check(struct nv50_head *, struct nv50_head_atom *,
            |                       ^~~~~~~~~~~~~~~~~~
      ./drivers/gpu/drm/nouveau/dispnv50/crc.h:111:43: error: parameter name
      omitted
        111 | nv50_crc_atomic_check(struct nv50_head *, struct nv50_head_atom *,
            |                                           ^~~~~~~~~~~~~~~~~~~~~~~
      ./drivers/gpu/drm/nouveau/dispnv50/crc.h:112:9: error: parameter name
      omitted
        112 |         struct nv50_head_atom *) {}
            |         ^~~~~~~~~~~~~~~~~~~~~~~
      ./drivers/gpu/drm/nouveau/dispnv50/crc.h:112:16: warning: no return
      statement in function returning non-void [-Wreturn-type]
        112 |         struct nv50_head_atom *) {}
            |                ^~~~~~~~~~~~~~
      ./drivers/gpu/drm/nouveau/dispnv50/crc.h: In function
      ‘nv50_crc_atomic_stop_reporting’:
      ./drivers/gpu/drm/nouveau/dispnv50/crc.h:114:32: error: parameter name
      omitted
        114 | nv50_crc_atomic_stop_reporting(struct drm_atomic_state *) {}
            |                                ^~~~~~~~~~~~~~~~~~~~~~~~~
      ./drivers/gpu/drm/nouveau/dispnv50/crc.h: In function
      ‘nv50_crc_atomic_prepare_notifier_contexts’:
      ./drivers/gpu/drm/nouveau/dispnv50/crc.h:116:43: error: parameter name
      omitted
        116 | nv50_crc_atomic_prepare_notifier_contexts(struct drm_atomic_state *) {}
            |                                           ^~~~~~~~~~~~~~~~~~~~~~~~~
      ./drivers/gpu/drm/nouveau/dispnv50/crc.h: In function
      ‘nv50_crc_atomic_start_reporting’:
      ./drivers/gpu/drm/nouveau/dispnv50/crc.h:118:33: error: parameter name
      omitted
        118 | nv50_crc_atomic_start_reporting(struct drm_atomic_state *) {}
            |                                 ^~~~~~~~~~~~~~~~~~~~~~~~~
      ./drivers/gpu/drm/nouveau/dispnv50/crc.h: In function
      ‘nv50_crc_atomic_set’:
      ./drivers/gpu/drm/nouveau/dispnv50/crc.h:120:21: error: parameter name
      omitted
        120 | nv50_crc_atomic_set(struct nv50_head *, struct nv50_head_atom *) {}
            |                     ^~~~~~~~~~~~~~~~~~
      ./drivers/gpu/drm/nouveau/dispnv50/crc.h:120:41: error: parameter name
      omitted
        120 | nv50_crc_atomic_set(struct nv50_head *, struct nv50_head_atom *) {}
            |                                         ^~~~~~~~~~~~~~~~~~~~~~~
      ./drivers/gpu/drm/nouveau/dispnv50/crc.h: In function
      ‘nv50_crc_atomic_clr’:
      ./drivers/gpu/drm/nouveau/dispnv50/crc.h:122:21: error: parameter name
      omitted
        122 | nv50_crc_atomic_clr(struct nv50_head *) {}
            |                     ^~~~~~~~~~~~~~~~~~
      drivers/gpu/drm/nouveau/nouveau_display.c: In function
      ‘nouveau_framebuffer_new’:
      drivers/gpu/drm/nouveau/nouveau_display.c:286:15: warning: variable
      ‘width’ set but not used [-Wunused-but-set-variable]
        286 |  unsigned int width, height, i;
            |               ^~~~~
      
      So, fix the inline function declarations we use in
      drm/drivers/gpu/drm/nouveau/dispnv50/crc.h when CONFIG_DEBUG_FS is
      enabled.
      
      Fixes: 12885ecb ("drm/nouveau/kms/nvd9-: Add CRC support")
      Reported-by: default avatarkernel test robot <lkp@intel.com>
      Signed-off-by: default avatarLyude Paul <lyude@redhat.com>
      Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
      0059a908