diff options
author | Maarten Lankhorst <maarten.lankhorst@linux.intel.com> | 2023-08-17 23:30:41 +0300 |
---|---|---|
committer | Rodrigo Vivi <rodrigo.vivi@intel.com> | 2023-12-21 19:43:39 +0300 |
commit | 44e694958b95395bd1c41508c88c8ca141bf9bd7 (patch) | |
tree | 1b3e18abe5f05a6716e6dee725a3c2c50d5db30c /drivers/gpu/drm/xe/xe_pm.c | |
parent | a839e365ac88f0fa9f8c7ae92b9e7e66bbd9e4d7 (diff) | |
download | linux-44e694958b95395bd1c41508c88c8ca141bf9bd7.tar.xz |
drm/xe/display: Implement display support
As for display, the intent is to share the display code with the i915
driver so that there is maximum reuse there.
We do this by recompiling i915/display code twice.
Now that i915 has been adapted to support the Xe build, we can add
the xe/display support.
This initial work is a collaboration of many people and unfortunately
this squashed patch won't fully honor the proper credits.
But let's try to add a few from the squashed patches:
Co-developed-by: Matthew Brost <matthew.brost@intel.com>
Co-developed-by: Jani Nikula <jani.nikula@intel.com>
Co-developed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Co-developed-by: Matt Roper <matthew.d.roper@intel.com>
Co-developed-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Co-developed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Co-developed-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
Diffstat (limited to 'drivers/gpu/drm/xe/xe_pm.c')
-rw-r--r-- | drivers/gpu/drm/xe/xe_pm.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/gpu/drm/xe/xe_pm.c b/drivers/gpu/drm/xe/xe_pm.c index 93a7658da324..e31a91cf311c 100644 --- a/drivers/gpu/drm/xe/xe_pm.c +++ b/drivers/gpu/drm/xe/xe_pm.c @@ -14,6 +14,7 @@ #include "xe_bo_evict.h" #include "xe_device.h" #include "xe_device_sysfs.h" +#include "xe_display.h" #include "xe_ggtt.h" #include "xe_gt.h" #include "xe_guc.h" @@ -61,14 +62,20 @@ int xe_pm_suspend(struct xe_device *xe) if (err) return err; + xe_display_pm_suspend(xe); + for_each_gt(gt, xe, id) { err = xe_gt_suspend(gt); - if (err) + if (err) { + xe_display_pm_resume(xe); return err; + } } xe_irq_suspend(xe); + xe_display_pm_suspend_late(xe); + return 0; } @@ -94,6 +101,8 @@ int xe_pm_resume(struct xe_device *xe) return err; } + xe_display_pm_resume_early(xe); + /* * This only restores pinned memory which is the memory required for the * GT(s) to resume. @@ -104,6 +113,8 @@ int xe_pm_resume(struct xe_device *xe) xe_irq_resume(xe); + xe_display_pm_resume(xe); + for_each_gt(gt, xe, id) xe_gt_resume(gt); |