From: Filip Moc <dev@moc6.cz>
To: Harry Wentland <harry.wentland@amd.com>,
Leo Li <sunpeng.li@amd.com>,
Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Cc: "David Airlie" <airlied@linux.ie>,
"Pan, Xinhui" <Xinhui.Pan@amd.com>,
linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org,
dri-devel@lists.freedesktop.org,
"Daniel Vetter" <daniel@ffwll.ch>,
"Alex Deucher" <alexander.deucher@amd.com>,
"Christian König" <christian.koenig@amd.com>
Subject: [PATCH] drm/amd/display: add parameter backlight_min
Date: Sat, 29 Oct 2022 21:13:32 +0200 [thread overview]
Message-ID: <Y117XNaSP6/8bH+3@moc6.cz> (raw)
There are some devices on which amdgpu won't allow user to set brightness
to sufficiently low values even though the hardware would support it just
fine.
This usually happens in two cases when either configuration of brightness
levels via ACPI/ATIF is not available and amdgpu falls back to defaults
(currently 12 for minimum level) which may be too high for some devices or
even the configuration via ATIF is available but the minimum brightness
level provided by the manufacturer is set to unreasonably high value.
In either case user can use this new module parameter to adjust the
minimum allowed backlight brightness level.
Link: https://bugzilla.kernel.org/show_bug.cgi?id=203439
Signed-off-by: Filip Moc <dev@moc6.cz>
---
drivers/gpu/drm/amd/amdgpu/amdgpu.h | 3 +++
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 15 +++++++++++++++
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 15 +++++++++++++++
3 files changed, 33 insertions(+)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
index 0e6ddf05c23c..c5445402c49d 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
@@ -200,6 +200,9 @@ extern uint amdgpu_dc_debug_mask;
extern uint amdgpu_dc_visual_confirm;
extern uint amdgpu_dm_abm_level;
extern int amdgpu_backlight;
+#ifdef CONFIG_DRM_AMD_DC
+extern int amdgpu_backlight_override_min[];
+#endif
extern struct amdgpu_mgpu_info mgpu_info;
extern int amdgpu_ras_enable;
extern uint amdgpu_ras_mask;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
index 16f6a313335e..f2fb549ac52f 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
@@ -43,6 +43,7 @@
#include "amdgpu_irq.h"
#include "amdgpu_dma_buf.h"
#include "amdgpu_sched.h"
+#include "amdgpu_dm.h"
#include "amdgpu_fdinfo.h"
#include "amdgpu_amdkfd.h"
@@ -853,6 +854,20 @@ int amdgpu_backlight = -1;
MODULE_PARM_DESC(backlight, "Backlight control (0 = pwm, 1 = aux, -1 auto (default))");
module_param_named(backlight, amdgpu_backlight, bint, 0444);
+/**
+ * DOC: backlight_min (array of int)
+ * Override minimum allowed backlight brightness signal (per display).
+ * Must be less than the maximum brightness signal.
+ * Negative value means no override.
+ *
+ * Defaults to all -1 (no override on any display).
+ */
+#ifdef CONFIG_DRM_AMD_DC
+int amdgpu_backlight_override_min[AMDGPU_DM_MAX_NUM_EDP] = {[0 ... (AMDGPU_DM_MAX_NUM_EDP-1)] = -1};
+MODULE_PARM_DESC(backlight_min, "Override minimum backlight brightness signal (0..max-1, -1 = no override (default))");
+module_param_array_named(backlight_min, amdgpu_backlight_override_min, int, NULL, 0444);
+#endif
+
/**
* DOC: tmz (int)
* Trusted Memory Zone (TMZ) is a method to protect data being written
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
index eb4ce7216104..e2c36ba93d05 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -3911,6 +3911,21 @@ static void amdgpu_dm_update_backlight_caps(struct amdgpu_display_manager *dm,
dm->backlight_caps[bl_idx].min_input_signal = AMDGPU_DM_DEFAULT_MIN_BACKLIGHT;
dm->backlight_caps[bl_idx].max_input_signal = AMDGPU_DM_DEFAULT_MAX_BACKLIGHT;
#endif
+
+ if (amdgpu_backlight_override_min[bl_idx] >= 0) {
+ if (amdgpu_backlight_override_min[bl_idx] < dm->backlight_caps[bl_idx].max_input_signal) {
+ DRM_INFO("amdgpu: backlight[%i]: overriding minimum brightness from %i to %i\n",
+ bl_idx,
+ dm->backlight_caps[bl_idx].min_input_signal,
+ amdgpu_backlight_override_min[bl_idx]);
+ dm->backlight_caps[bl_idx].min_input_signal = amdgpu_backlight_override_min[bl_idx];
+ } else {
+ DRM_ERROR("amdgpu: backlight[%i]: minimum brightness override (%i) is not below maximum (%i)\n",
+ bl_idx,
+ amdgpu_backlight_override_min[bl_idx],
+ dm->backlight_caps[bl_idx].max_input_signal);
+ }
+ }
}
static int get_brightness_range(const struct amdgpu_dm_backlight_caps *caps,
base-commit: d8c03bfe146fd5e081a252cd34f3f12ca0255357
--
2.30.2
next reply other threads:[~2022-10-31 8:14 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-29 19:13 Filip Moc [this message]
2022-10-31 14:24 ` [PATCH] drm/amd/display: add parameter backlight_min Harry Wentland
2022-11-01 15:33 ` Filip Moc
2022-11-02 14:57 ` Harry Wentland
2022-10-31 15:36 ` Alex Deucher
2022-11-01 15:42 ` Filip Moc
2022-11-01 16:06 ` Alex Deucher
2022-11-13 18:12 ` Filip Moc
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Y117XNaSP6/8bH+3@moc6.cz \
--to=dev@moc6.cz \
--cc=Rodrigo.Siqueira@amd.com \
--cc=Xinhui.Pan@amd.com \
--cc=airlied@linux.ie \
--cc=alexander.deucher@amd.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=christian.koenig@amd.com \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=harry.wentland@amd.com \
--cc=linux-kernel@vger.kernel.org \
--cc=sunpeng.li@amd.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox