diff options
author | Jani Nikula <jani.nikula@intel.com> | 2024-09-12 17:34:14 +0300 |
---|---|---|
committer | Jani Nikula <jani.nikula@intel.com> | 2024-09-13 10:44:15 +0300 |
commit | 8967549f99aaf6a2652ded122a2b15cd6bf895b1 (patch) | |
tree | 3bf29267f645bb2ac2981e11a3f22c7bcc4c40ed /drivers/gpu/drm/i915/display/intel_dmc.c | |
parent | 6304e052df2111f25bfedcaf999ac8571a275f2a (diff) | |
download | linux-8967549f99aaf6a2652ded122a2b15cd6bf895b1.tar.gz linux-8967549f99aaf6a2652ded122a2b15cd6bf895b1.tar.bz2 linux-8967549f99aaf6a2652ded122a2b15cd6bf895b1.zip |
drm/i915/display: move dmc snapshotting to new display snapshot
Convert dmc error state printing to new snapshot capture/print division.
v2: Rebase
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/9116319e7faceeed7695ee35e56fe001ddf94e11.1726151571.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Diffstat (limited to 'drivers/gpu/drm/i915/display/intel_dmc.c')
-rw-r--r-- | drivers/gpu/drm/i915/display/intel_dmc.c | 38 |
1 files changed, 30 insertions, 8 deletions
diff --git a/drivers/gpu/drm/i915/display/intel_dmc.c b/drivers/gpu/drm/i915/display/intel_dmc.c index bbac6bfd1752..48bbbf8f312c 100644 --- a/drivers/gpu/drm/i915/display/intel_dmc.c +++ b/drivers/gpu/drm/i915/display/intel_dmc.c @@ -1194,21 +1194,43 @@ void intel_dmc_fini(struct intel_display *display) } } -void intel_dmc_print_error_state(struct drm_printer *p, - struct intel_display *display) +struct intel_dmc_snapshot { + bool initialized; + bool loaded; + u32 version; +}; + +struct intel_dmc_snapshot *intel_dmc_snapshot_capture(struct intel_display *display) { struct intel_dmc *dmc = display_to_dmc(display); + struct intel_dmc_snapshot *snapshot; if (!HAS_DMC(display)) - return; + return NULL; - drm_printf(p, "DMC initialized: %s\n", str_yes_no(dmc)); - drm_printf(p, "DMC loaded: %s\n", - str_yes_no(intel_dmc_has_payload(display))); + snapshot = kzalloc(sizeof(*snapshot), GFP_ATOMIC); + if (!snapshot) + return NULL; + + snapshot->initialized = dmc; + snapshot->loaded = intel_dmc_has_payload(display); if (dmc) + snapshot->version = dmc->version; + + return snapshot; +} + +void intel_dmc_snapshot_print(const struct intel_dmc_snapshot *snapshot, struct drm_printer *p) +{ + if (!snapshot) + return; + + drm_printf(p, "DMC initialized: %s\n", str_yes_no(snapshot->initialized)); + drm_printf(p, "DMC loaded: %s\n", str_yes_no(snapshot->loaded)); + if (snapshot->initialized) drm_printf(p, "DMC fw version: %d.%d\n", - DMC_VERSION_MAJOR(dmc->version), - DMC_VERSION_MINOR(dmc->version)); + DMC_VERSION_MAJOR(snapshot->version), + DMC_VERSION_MINOR(snapshot->version)); } static int intel_dmc_debugfs_status_show(struct seq_file *m, void *unused) |