From: Frank Min <[email protected]>

Add framework for MP5 firmware.

Signed-off-by: Frank Min <[email protected]>
Signed-off-by: Likun Gao <[email protected]>
Reviewed-by: Hawking Zhang <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c   | 7 +++++++
 drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c | 2 ++
 drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h | 1 +
 drivers/gpu/drm/amd/amdgpu/psp_gfx_if.h   | 1 +
 drivers/gpu/drm/amd/pm/inc/amdgpu_dpm.h   | 2 ++
 5 files changed, 13 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
index 0b5e8373855aa..5db568fc24218 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
@@ -3753,6 +3753,9 @@ int amdgpu_psp_get_fw_type(struct amdgpu_firmware_info 
*ucode,
        case AMDGPU_UCODE_ID_ISP:
                *type = GFX_FW_TYPE_ISP;
                break;
+       case AMDGPU_UCODE_ID_MP5:
+               *type = GFX_FW_TYPE_MP5;
+               break;
        case AMDGPU_UCODE_ID_MAXIMUM:
        default:
                return -EINVAL;
@@ -3806,6 +3809,10 @@ static void psp_print_fw_hdr(struct psp_context *psp,
                hdr = (struct common_firmware_header *)adev->pm.fw->data;
                amdgpu_ucode_print_smc_hdr(hdr);
                break;
+       case AMDGPU_UCODE_ID_MP5:
+               hdr = (struct common_firmware_header *)adev->pm.mp5_fw->data;
+               amdgpu_ucode_print_smc_hdr(hdr);
+               break;
        default:
                break;
        }
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
index c07f6d8d36bbd..31c10e3046b37 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
@@ -753,6 +753,8 @@ const char *amdgpu_ucode_name(enum AMDGPU_UCODE_ID ucode_id)
                return "RS64_MEC_P3_STACK";
        case AMDGPU_UCODE_ID_ISP:
                return "ISP";
+       case AMDGPU_UCODE_ID_MP5:
+               return "MP5";
        default:
                return "UNKNOWN UCODE";
        }
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h
index f316776fe950a..83e5f0627369d 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h
@@ -477,6 +477,7 @@ union amdgpu_firmware_header {
  */
 enum AMDGPU_UCODE_ID {
        AMDGPU_UCODE_ID_CAP = 0,
+       AMDGPU_UCODE_ID_MP5,
        AMDGPU_UCODE_ID_SDMA0,
        AMDGPU_UCODE_ID_SDMA1,
        AMDGPU_UCODE_ID_SDMA2,
diff --git a/drivers/gpu/drm/amd/amdgpu/psp_gfx_if.h 
b/drivers/gpu/drm/amd/amdgpu/psp_gfx_if.h
index 0803cfc445dc7..d54b9edcd5394 100644
--- a/drivers/gpu/drm/amd/amdgpu/psp_gfx_if.h
+++ b/drivers/gpu/drm/amd/amdgpu/psp_gfx_if.h
@@ -322,6 +322,7 @@ enum psp_gfx_fw_type {
        GFX_FW_TYPE_VPE                             = 102,
        GFX_FW_TYPE_JPEG_RAM                        = 128,  /**< JPEG Command 
buffer */
        GFX_FW_TYPE_P2S_TABLE                       = 129,
+       GFX_FW_TYPE_MP5                             = 158,  /* MP5 ucode    */
        GFX_FW_TYPE_MAX
 };
 
diff --git a/drivers/gpu/drm/amd/pm/inc/amdgpu_dpm.h 
b/drivers/gpu/drm/amd/pm/inc/amdgpu_dpm.h
index ed1e7385243db..64d68a905f86b 100644
--- a/drivers/gpu/drm/amd/pm/inc/amdgpu_dpm.h
+++ b/drivers/gpu/drm/amd/pm/inc/amdgpu_dpm.h
@@ -351,7 +351,9 @@ struct amdgpu_pm {
        bool                    sysfs_initialized;
        struct amdgpu_dpm       dpm;
        const struct firmware   *fw;    /* SMC firmware */
+       const struct firmware   *mp5_fw;        /* MP5 firmware */
        uint32_t                fw_version;
+       uint32_t                mp5_fw_version;
        uint32_t                pcie_gen_mask;
        uint32_t                pcie_mlw_mask;
        struct amd_pp_display_configuration pm_display_cfg;/* set by dc */
-- 
2.55.0

Reply via email to