From: Lo-an Chen <[email protected]>

[ Upstream commit d60073294cc3b46b73d6de247e0e5ae8684a6241 ]

[WHY]
The fw_state in dmub_srv was assigned with wrong address.
The address was pointed to the firmware region.

[HOW]
Fix the firmware state by using DMUB_DEBUG_FW_STATE_OFFSET
in dmub_cmd.h.

Reviewed-by: Nicholas Kazlauskas <[email protected]>
Signed-off-by: Lo-an Chen <[email protected]>
Signed-off-by: Alex Hung <[email protected]>
Tested-by: Daniel Wheeler <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
(cherry picked from commit f57b38ac85a01bf03020cc0a9761d63e5c0ce197)
Signed-off-by: Sasha Levin <[email protected]>
---
 drivers/gpu/drm/amd/display/dmub/src/dmub_srv.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/display/dmub/src/dmub_srv.c 
b/drivers/gpu/drm/amd/display/dmub/src/dmub_srv.c
index a3f3ff5d49ace..9d2250d84f291 100644
--- a/drivers/gpu/drm/amd/display/dmub/src/dmub_srv.c
+++ b/drivers/gpu/drm/amd/display/dmub/src/dmub_srv.c
@@ -708,7 +708,7 @@ enum dmub_status dmub_srv_hw_init(struct dmub_srv *dmub,
        cw6.region.base = DMUB_CW6_BASE;
        cw6.region.top = cw6.region.base + fw_state_fb->size;
 
-       dmub->fw_state = fw_state_fb->cpu_addr;
+       dmub->fw_state = (void *)((uintptr_t)(fw_state_fb->cpu_addr) + 
DMUB_DEBUG_FW_STATE_OFFSET);
 
        region6.offset.quad_part = shared_state_fb->gpu_addr;
        region6.region.base = DMUB_CW6_BASE;
-- 
2.39.5

Reply via email to