OSDN Git Service

drm/amd/display: Add interface to modify DMUB panel power options
authorPaul Hsieh <paul.hsieh@amd.com>
Tue, 11 Jul 2023 08:07:52 +0000 (16:07 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 25 Jul 2023 17:41:27 +0000 (13:41 -0400)
[Why]
This option can vary depending on the panel and may be required to be
called during sink detection phase before transmitter control.

[How]
Allow modify the bit depending on the eDP panel connected with a new
interface.

Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Acked-by: Alex Hung <alex.hung@amd.com>
Signed-off-by: Paul Hsieh <paul.hsieh@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dmub/dmub_srv.h
drivers/gpu/drm/amd/display/dmub/src/dmub_srv.c

index 53bd9bf..2d995c8 100644 (file)
@@ -785,6 +785,9 @@ enum dmub_status dmub_srv_get_fw_boot_option(struct dmub_srv *dmub,
 enum dmub_status dmub_srv_cmd_with_reply_data(struct dmub_srv *dmub,
                                              union dmub_rb_cmd *cmd);
 
+enum dmub_status dmub_srv_set_skip_panel_power_sequence(struct dmub_srv *dmub,
+                                            bool skip);
+
 bool dmub_srv_get_outbox0_msg(struct dmub_srv *dmub, struct dmcub_trace_buf_entry *entry);
 
 bool dmub_srv_get_diagnostic_data(struct dmub_srv *dmub, struct dmub_diagnostic_data *diag_data);
index 70af110..93624ff 100644 (file)
@@ -861,6 +861,18 @@ enum dmub_status dmub_srv_get_fw_boot_option(struct dmub_srv *dmub,
        return DMUB_STATUS_OK;
 }
 
+enum dmub_status dmub_srv_set_skip_panel_power_sequence(struct dmub_srv *dmub,
+                                            bool skip)
+{
+       if (!dmub->sw_init)
+               return DMUB_STATUS_INVALID;
+
+       if (dmub->hw_funcs.skip_dmub_panel_power_sequence && !dmub->is_virtual)
+               dmub->hw_funcs.skip_dmub_panel_power_sequence(dmub, skip);
+
+       return DMUB_STATUS_OK;
+}
+
 enum dmub_status dmub_srv_cmd_with_reply_data(struct dmub_srv *dmub,
                                              union dmub_rb_cmd *cmd)
 {