mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-10 20:02:10 -04:00
drm/amd/display: Extend DMUB HW params to allow DM to specify boot options
[Why & How] Add the field to HW params to allow DM dynamically pass down debug and boot options as needed. Signed-off-by: Eric Yang <Eric.Yang2@amd.com> Reviewed-by: Nicholas Kazlauskas <Nicholas.Kazlauskas@amd.com> Acked-by: Wayne Lin <Wayne.Lin@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
@@ -216,6 +216,23 @@ struct dmub_srv_fb_info {
|
||||
struct dmub_fb fb[DMUB_WINDOW_TOTAL];
|
||||
};
|
||||
|
||||
/*
|
||||
* struct dmub_srv_hw_params - params for dmub hardware initialization
|
||||
* @fb: framebuffer info for each region
|
||||
* @fb_base: base of the framebuffer aperture
|
||||
* @fb_offset: offset of the framebuffer aperture
|
||||
* @psp_version: psp version to pass for DMCU init
|
||||
* @load_inst_const: true if DMUB should load inst const fw
|
||||
*/
|
||||
struct dmub_srv_hw_params {
|
||||
struct dmub_fb *fb[DMUB_WINDOW_TOTAL];
|
||||
uint64_t fb_base;
|
||||
uint64_t fb_offset;
|
||||
uint32_t psp_version;
|
||||
bool load_inst_const;
|
||||
bool skip_panel_power_sequence;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct dmub_srv_base_funcs - Driver specific base callbacks
|
||||
*/
|
||||
@@ -290,7 +307,8 @@ struct dmub_srv_hw_funcs {
|
||||
bool (*is_hw_init)(struct dmub_srv *dmub);
|
||||
|
||||
bool (*is_phy_init)(struct dmub_srv *dmub);
|
||||
void (*enable_dmub_boot_options)(struct dmub_srv *dmub);
|
||||
void (*enable_dmub_boot_options)(struct dmub_srv *dmub,
|
||||
const struct dmub_srv_hw_params *params);
|
||||
|
||||
void (*skip_dmub_panel_power_sequence)(struct dmub_srv *dmub, bool skip);
|
||||
|
||||
@@ -325,23 +343,6 @@ struct dmub_srv_create_params {
|
||||
bool is_virtual;
|
||||
};
|
||||
|
||||
/*
|
||||
* struct dmub_srv_hw_params - params for dmub hardware initialization
|
||||
* @fb: framebuffer info for each region
|
||||
* @fb_base: base of the framebuffer aperture
|
||||
* @fb_offset: offset of the framebuffer aperture
|
||||
* @psp_version: psp version to pass for DMCU init
|
||||
* @load_inst_const: true if DMUB should load inst const fw
|
||||
*/
|
||||
struct dmub_srv_hw_params {
|
||||
struct dmub_fb *fb[DMUB_WINDOW_TOTAL];
|
||||
uint64_t fb_base;
|
||||
uint64_t fb_offset;
|
||||
uint32_t psp_version;
|
||||
bool load_inst_const;
|
||||
bool skip_panel_power_sequence;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct dmub_srv - software state for dmcub
|
||||
* @asic: dmub asic identifier
|
||||
|
||||
@@ -385,7 +385,7 @@ union dmub_fw_boot_status dmub_dcn20_get_fw_boot_status(struct dmub_srv *dmub)
|
||||
return status;
|
||||
}
|
||||
|
||||
void dmub_dcn20_enable_dmub_boot_options(struct dmub_srv *dmub)
|
||||
void dmub_dcn20_enable_dmub_boot_options(struct dmub_srv *dmub, const struct dmub_srv_hw_params *params)
|
||||
{
|
||||
union dmub_fw_boot_options boot_options = {0};
|
||||
|
||||
|
||||
@@ -221,7 +221,7 @@ bool dmub_dcn20_is_gpint_acked(struct dmub_srv *dmub,
|
||||
|
||||
uint32_t dmub_dcn20_get_gpint_response(struct dmub_srv *dmub);
|
||||
|
||||
void dmub_dcn20_enable_dmub_boot_options(struct dmub_srv *dmub);
|
||||
void dmub_dcn20_enable_dmub_boot_options(struct dmub_srv *dmub, const struct dmub_srv_hw_params *params);
|
||||
|
||||
void dmub_dcn20_skip_dmub_panel_power_sequence(struct dmub_srv *dmub, bool skip);
|
||||
|
||||
|
||||
@@ -514,6 +514,10 @@ enum dmub_status dmub_srv_hw_init(struct dmub_srv *dmub,
|
||||
outbox0_rb_params.capacity = tracebuff_fb->size - dmub_align(TRACE_BUFFER_ENTRY_OFFSET, 64);
|
||||
dmub_rb_init(&dmub->outbox0_rb, &outbox0_rb_params);
|
||||
|
||||
/* Report to DMUB what features are supported by current driver */
|
||||
if (dmub->hw_funcs.enable_dmub_boot_options)
|
||||
dmub->hw_funcs.enable_dmub_boot_options(dmub, params);
|
||||
|
||||
if (dmub->hw_funcs.reset_release)
|
||||
dmub->hw_funcs.reset_release(dmub);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user