From: Greg Kroah-Hartman Date: Thu, 22 Aug 2024 00:12:27 +0000 (+0800) Subject: 6.10-stable patches X-Git-Tag: v6.1.107~87 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=609b3418b31607db3d1dbe8a958eb03c2f18634c;p=thirdparty%2Fkernel%2Fstable-queue.git 6.10-stable patches added patches: drm-amd-display-don-t-register-panel_power_savings-on-oled-panels.patch --- diff --git a/queue-6.10/drm-amd-display-don-t-register-panel_power_savings-on-oled-panels.patch b/queue-6.10/drm-amd-display-don-t-register-panel_power_savings-on-oled-panels.patch new file mode 100644 index 00000000000..9705c526e70 --- /dev/null +++ b/queue-6.10/drm-amd-display-don-t-register-panel_power_savings-on-oled-panels.patch @@ -0,0 +1,73 @@ +From 76cb763e6ea62e838ccc8f7a1ea4246d690fccc9 Mon Sep 17 00:00:00 2001 +From: Mario Limonciello +Date: Thu, 9 May 2024 12:05:24 -0500 +Subject: drm/amd/display: Don't register panel_power_savings on OLED panels + +From: Mario Limonciello + +commit 76cb763e6ea62e838ccc8f7a1ea4246d690fccc9 upstream. + +OLED panels don't support the ABM, they shouldn't offer the +panel_power_savings attribute to the user. Check whether aux BL +control support was enabled to decide whether to offer it. + +Reported-by: Gergo Koteles +Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3359 +Signed-off-by: Mario Limonciello +Reviewed-by: Harry Wentland +Tested-by: Gergo Koteles +Signed-off-by: Alex Deucher +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 29 ++++++++++++++++++---- + 1 file changed, 25 insertions(+), 4 deletions(-) + +--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c ++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +@@ -6562,12 +6562,34 @@ static const struct attribute_group amdg + .attrs = amdgpu_attrs + }; + ++static bool ++amdgpu_dm_should_create_sysfs(struct amdgpu_dm_connector *amdgpu_dm_connector) ++{ ++ if (amdgpu_dm_abm_level >= 0) ++ return false; ++ ++ if (amdgpu_dm_connector->base.connector_type != DRM_MODE_CONNECTOR_eDP) ++ return false; ++ ++ /* check for OLED panels */ ++ if (amdgpu_dm_connector->bl_idx >= 0) { ++ struct drm_device *drm = amdgpu_dm_connector->base.dev; ++ struct amdgpu_display_manager *dm = &drm_to_adev(drm)->dm; ++ struct amdgpu_dm_backlight_caps *caps; ++ ++ caps = &dm->backlight_caps[amdgpu_dm_connector->bl_idx]; ++ if (caps->aux_support) ++ return false; ++ } ++ ++ return true; ++} ++ + static void amdgpu_dm_connector_unregister(struct drm_connector *connector) + { + struct amdgpu_dm_connector *amdgpu_dm_connector = to_amdgpu_dm_connector(connector); + +- if (connector->connector_type == DRM_MODE_CONNECTOR_eDP && +- amdgpu_dm_abm_level < 0) ++ if (amdgpu_dm_should_create_sysfs(amdgpu_dm_connector)) + sysfs_remove_group(&connector->kdev->kobj, &amdgpu_group); + + drm_dp_aux_unregister(&amdgpu_dm_connector->dm_dp_aux.aux); +@@ -6674,8 +6696,7 @@ amdgpu_dm_connector_late_register(struct + to_amdgpu_dm_connector(connector); + int r; + +- if (connector->connector_type == DRM_MODE_CONNECTOR_eDP && +- amdgpu_dm_abm_level < 0) { ++ if (amdgpu_dm_should_create_sysfs(amdgpu_dm_connector)) { + r = sysfs_create_group(&connector->kdev->kobj, + &amdgpu_group); + if (r) diff --git a/queue-6.10/series b/queue-6.10/series index eb5f0bb4561..0ac88dd6a1e 100644 --- a/queue-6.10/series +++ b/queue-6.10/series @@ -134,3 +134,4 @@ powerpc-topology-check-if-a-core-is-online.patch printk-panic-allow-cpu-backtraces-to-be-written-into.patch arm64-fix-kasan-random-tag-seed-initialization.patch block-fix-lockdep-warning-in-blk_mq_mark_tag_wait.patch +drm-amd-display-don-t-register-panel_power_savings-on-oled-panels.patch