mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-03-22 07:27:12 +08:00
drm/amd/display: Add a trace event for brightness programming
[Why] Brightness programming may involve a conversion of a user requested brightness against what was in a custom brightness curve. The values might not match what a user programmed. [How] Add a new trace event to show specific converted brightness values. Reviewed-by: Alex Hung <alex.hung@amd.com> Link: https://lore.kernel.org/r/20250623171114.1156451-2-mario.limonciello@amd.com Signed-off-by: Mario Limonciello <mario.limonciello@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
committed by
Alex Deucher
parent
5b852044eb
commit
009bfc5ec5
@@ -85,3 +85,21 @@ UMR
|
||||
GPU debugging and diagnostics tool. Please see the umr
|
||||
`documentation <https://umr.readthedocs.io/en/main/>`_ for more information
|
||||
about its capabilities.
|
||||
|
||||
Debugging backlight brightness
|
||||
==============================
|
||||
Default backlight brightness is intended to be set via the policy advertised
|
||||
by the firmware. Firmware will often provide different defaults for AC or DC.
|
||||
Furthermore, some userspace software will save backlight brightness during
|
||||
the previous boot and attempt to restore it.
|
||||
|
||||
Some firmware also has support for a feature called "Custom Backlight Curves"
|
||||
where an input value for brightness is mapped along a linearly interpolated
|
||||
curve of brightness values that better match display characteristics.
|
||||
|
||||
In the event of problems happening with backlight, there is a trace event
|
||||
that can be enabled at bootup to log every brightness change request.
|
||||
This can help isolate where the problem is. To enable the trace event add
|
||||
the following to the kernel command line:
|
||||
|
||||
tp_printk trace_event=amdgpu_dm:amdgpu_dm_brightness:mod:amdgpu trace_buf_size=1M
|
||||
|
||||
@@ -4861,6 +4861,14 @@ static void amdgpu_dm_backlight_set_level(struct amdgpu_display_manager *dm,
|
||||
reallow_idle = true;
|
||||
}
|
||||
|
||||
if (trace_amdgpu_dm_brightness_enabled()) {
|
||||
trace_amdgpu_dm_brightness(__builtin_return_address(0),
|
||||
user_brightness,
|
||||
brightness,
|
||||
caps->aux_support,
|
||||
power_supply_is_system_supplied() > 0);
|
||||
}
|
||||
|
||||
if (caps->aux_support) {
|
||||
rc = dc_link_set_backlight_level_nits(link, true, brightness,
|
||||
AUX_BL_DEFAULT_TRANSITION_TIME_MS);
|
||||
|
||||
@@ -726,6 +726,32 @@ TRACE_EVENT(dcn_optc_lock_unlock_state,
|
||||
)
|
||||
);
|
||||
|
||||
TRACE_EVENT(amdgpu_dm_brightness,
|
||||
TP_PROTO(void *function, u32 user_brightness, u32 converted_brightness, bool aux, bool ac),
|
||||
TP_ARGS(function, user_brightness, converted_brightness, aux, ac),
|
||||
TP_STRUCT__entry(
|
||||
__field(void *, function)
|
||||
__field(u32, user_brightness)
|
||||
__field(u32, converted_brightness)
|
||||
__field(bool, aux)
|
||||
__field(bool, ac)
|
||||
),
|
||||
TP_fast_assign(
|
||||
__entry->function = function;
|
||||
__entry->user_brightness = user_brightness;
|
||||
__entry->converted_brightness = converted_brightness;
|
||||
__entry->aux = aux;
|
||||
__entry->ac = ac;
|
||||
),
|
||||
TP_printk("%ps: brightness requested=%u converted=%u aux=%s power=%s",
|
||||
(void *)__entry->function,
|
||||
(u32)__entry->user_brightness,
|
||||
(u32)__entry->converted_brightness,
|
||||
(__entry->aux) ? "true" : "false",
|
||||
(__entry->ac) ? "AC" : "DC"
|
||||
)
|
||||
);
|
||||
|
||||
#endif /* _AMDGPU_DM_TRACE_H_ */
|
||||
|
||||
#undef TRACE_INCLUDE_PATH
|
||||
|
||||
Reference in New Issue
Block a user