Commit 11dbb6d7 authored by Dillon Varone's avatar Dillon Varone Committed by Alex Deucher
Browse files

drm/amd/display: Consolidate dmub fb info to a single struct



[WHY&HOW]
Consolidate dmub fb info into a single structure to simplify translation
between components.

Reviewed-by: default avatarNicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Signed-off-by: default avatarDillon Varone <Dillon.Varone@amd.com>
Signed-off-by: default avatarChenyu Chen <chen-yu.chen@amd.com>
Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 5ad5b0b7
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1336,8 +1336,8 @@ static int dm_dmub_hw_init(struct amdgpu_device *adev)

	/* Initialize hardware. */
	memset(&hw_params, 0, sizeof(hw_params));
	hw_params.fb_base = adev->gmc.fb_start;
	hw_params.fb_offset = adev->vm_manager.vram_base_offset;
	hw_params.soc_fb_info.fb_base = adev->gmc.fb_start;
	hw_params.soc_fb_info.fb_offset = adev->vm_manager.vram_base_offset;

	/* backdoor load firmware and trigger dmub running */
	if (adev->firmware.load_type != AMDGPU_FW_LOAD_PSP)
+12 −4
Original line number Diff line number Diff line
@@ -307,6 +307,16 @@ struct dmub_srv_fb_info {
	struct dmub_fb fb[DMUB_WINDOW_TOTAL];
};

/**
 * struct dmub_soc_fb_info - relevant addresses from the frame buffer
 * @fb_base: base of the framebuffer aperture
 * @fb_offset: offset of the framebuffer aperture
 */
struct dmub_soc_fb_info {
	uint64_t fb_base;
	uint64_t fb_offset;
};

/*
 * struct dmub_srv_hw_params - params for dmub hardware initialization
 * @fb: framebuffer info for each region
@@ -317,8 +327,7 @@ struct dmub_srv_fb_info {
 */
struct dmub_srv_hw_params {
	struct dmub_fb *fb[DMUB_WINDOW_TOTAL];
	uint64_t fb_base;
	uint64_t fb_offset;
	struct dmub_soc_fb_info soc_fb_info;
	uint32_t psp_version;
	bool load_inst_const;
	bool skip_panel_power_sequence;
@@ -610,8 +619,7 @@ struct dmub_srv {
	bool hw_init;
	bool dpia_supported;

	uint64_t fb_base;
	uint64_t fb_offset;
	struct dmub_soc_fb_info soc_fb_info;
	uint32_t psp_version;

	/* Feature capabilities reported by fw */
+3 −3
Original line number Diff line number Diff line
@@ -63,9 +63,9 @@ static void dmub_dcn20_get_fb_base_offset(struct dmub_srv *dmub,
{
	uint32_t tmp;

	if (dmub->fb_base || dmub->fb_offset) {
		*fb_base = dmub->fb_base;
		*fb_offset = dmub->fb_offset;
	if (dmub->soc_fb_info.fb_base || dmub->soc_fb_info.fb_offset) {
		*fb_base = dmub->soc_fb_info.fb_base;
		*fb_offset = dmub->soc_fb_info.fb_offset;
		return;
	}

+3 −3
Original line number Diff line number Diff line
@@ -63,9 +63,9 @@ static void dmub_dcn30_get_fb_base_offset(struct dmub_srv *dmub,
{
	uint32_t tmp;

	if (dmub->fb_base || dmub->fb_offset) {
		*fb_base = dmub->fb_base;
		*fb_offset = dmub->fb_offset;
	if (dmub->soc_fb_info.fb_base || dmub->soc_fb_info.fb_offset) {
		*fb_base = dmub->soc_fb_info.fb_base;
		*fb_offset = dmub->soc_fb_info.fb_offset;
		return;
	}

+3 −3
Original line number Diff line number Diff line
@@ -59,9 +59,9 @@ static void dmub_dcn31_get_fb_base_offset(struct dmub_srv *dmub,
{
	uint32_t tmp;

	if (dmub->fb_base || dmub->fb_offset) {
		*fb_base = dmub->fb_base;
		*fb_offset = dmub->fb_offset;
	if (dmub->soc_fb_info.fb_base || dmub->soc_fb_info.fb_offset) {
		*fb_base = dmub->soc_fb_info.fb_base;
		*fb_offset = dmub->soc_fb_info.fb_offset;
		return;
	}

Loading