As not every generation can support all these PSP sub modules.

Change-Id: I866884e6453a37ff844427eb2d6fd56a91058ebe
Signed-off-by: Evan Quan <evan.q...@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 41 +++++++++++++++++++------
 drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h | 14 ++++++++-
 drivers/gpu/drm/amd/amdgpu/psp_v10_0.c  |  6 ++++
 drivers/gpu/drm/amd/amdgpu/psp_v11_0.c  |  8 +++++
 drivers/gpu/drm/amd/amdgpu/psp_v3_1.c   |  6 ++++
 5 files changed, 64 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
index bf51686bdd0f..ecfbf618652a 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
@@ -32,9 +32,6 @@
 #include "psp_v3_1.h"
 #include "psp_v10_0.h"
 #include "psp_v11_0.h"
-#include "psp_xgmi.h"
-#include "psp_tmr.h"
-#include "psp_asd.h"
 
 #define psp_ring_init(psp, type) \
                (psp)->funcs->ring_init((psp), (type))
@@ -50,6 +47,30 @@
                (psp)->funcs->submit_cmd_buf((psp), (ucode), (cmd), (fence_mc))
 #define psp_support_vmr_ring(psp) \
                ((psp)->funcs->support_vmr_ring ? 
(psp)->funcs->support_vmr_ring((psp)) : false)
+#define psp_init_asd(psp) \
+               ((psp)->funcs->asd_init ? (psp)->funcs->asd_init((psp)) : 0)
+#define psp_load_asd(psp) \
+               ((psp)->funcs->asd_load ? (psp)->funcs->asd_load((psp)) : 0)
+#define psp_unload_asd(psp) \
+               ((psp)->funcs->asd_unload ? (psp)->funcs->asd_unload((psp)) : 0)
+#define psp_destory_asd(psp) \
+               ((psp)->funcs->asd_destory ? (psp)->funcs->asd_destory((psp)) : 
0)
+#define psp_init_tmr(psp) \
+               ((psp)->funcs->tmr_init ? (psp)->funcs->tmr_init((psp)) : 0)
+#define psp_load_tmr(psp) \
+               ((psp)->funcs->tmr_load ? (psp)->funcs->tmr_load((psp)) : 0)
+#define psp_unload_tmr(psp) \
+               ((psp)->funcs->tmr_unload ? (psp)->funcs->tmr_unload((psp)) : 0)
+#define psp_destory_tmr(psp) \
+               ((psp)->funcs->tmr_destory ? (psp)->funcs->tmr_destory((psp)) : 
0)
+#define psp_init_xgmi(psp) \
+               ((psp)->funcs->xgmi_init ? (psp)->funcs->xgmi_init((psp)) : 0)
+#define psp_load_xgmi(psp) \
+               ((psp)->funcs->xgmi_load ? (psp)->funcs->xgmi_load((psp)) : 0)
+#define psp_unload_xgmi(psp) \
+               ((psp)->funcs->xgmi_unload ? (psp)->funcs->xgmi_unload((psp)) : 
0)
+#define psp_destory_xgmi(psp) \
+               ((psp)->funcs->xgmi_destory ? (psp)->funcs->xgmi_destory((psp)) 
: 0)
 #define psp_compare_sram_data(psp, ucode, type) \
                (psp)->funcs->compare_sram_data((psp), (ucode), (type))
 #define psp_init_microcode(psp) \
@@ -127,16 +148,16 @@ static int psp_hw_start(struct psp_context *psp)
        if (ret)
                return ret;
 
-       ret = psp_tmr_load(psp);
+       ret = psp_load_tmr(psp);
        if (ret)
                return ret;
 
-       ret = psp_asd_load(psp);
+       ret = psp_load_asd(psp);
        if (ret)
                return ret;
 
        if (adev->gmc.xgmi.num_physical_nodes > 1) {
-               ret = psp_xgmi_initialize(psp);
+               ret = psp_init_xgmi(psp);
                /* Warning the XGMI seesion initialize failure
                 * Instead of stop driver initialization
                 */
@@ -245,11 +266,11 @@ static int psp_load_fw(struct amdgpu_device *adev)
        if (ret)
                goto failed_mem;
 
-       ret = psp_tmr_init(psp);
+       ret = psp_init_tmr(psp);
        if (ret)
                goto failed_mem;
 
-       ret = psp_asd_init(psp);
+       ret = psp_init_asd(psp);
        if (ret)
                goto failed_mem;
 
@@ -316,7 +337,7 @@ static int psp_hw_fini(void *handle)
 
        if (adev->gmc.xgmi.num_physical_nodes > 1 &&
            psp->xgmi_context.initialized == 1)
-                psp_xgmi_terminate(psp);
+                psp_destory_xgmi(psp);
 
        psp_ring_destroy(psp, PSP_RING_TYPE__KM);
 
@@ -344,7 +365,7 @@ static int psp_suspend(void *handle)
 
        if (adev->gmc.xgmi.num_physical_nodes > 1 &&
            psp->xgmi_context.initialized == 1) {
-               ret = psp_xgmi_terminate(psp);
+               ret = psp_destory_xgmi(psp);
                if (ret) {
                        DRM_ERROR("Failed to terminate xgmi ta\n");
                        return ret;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h
index 16900d4c8034..4cc7fd3224f4 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h
@@ -77,6 +77,19 @@ struct psp_funcs
        int (*submit_cmd_buf)(struct psp_context *psp,
                           struct amdgpu_firmware_info *ucode,
                           struct psp_gfx_cmd_resp *cmd, uint64_t 
fence_mc_addr);
+       bool (*support_vmr_ring)(struct psp_context *psp);
+       int (*asd_init)(struct psp_context *psp);
+       int (*asd_load)(struct psp_context *psp);
+       int (*asd_unload)(struct psp_context *psp);
+       int (*asd_destory)(struct psp_context *psp);
+       int (*tmr_init)(struct psp_context *psp);
+       int (*tmr_load)(struct psp_context *psp);
+       int (*tmr_unload)(struct psp_context *psp);
+       int (*tmr_destory)(struct psp_context *psp);
+       int (*xgmi_init)(struct psp_context *psp);
+       int (*xgmi_load)(struct psp_context *psp);
+       int (*xgmi_unload)(struct psp_context *psp);
+       int (*xgmi_destory)(struct psp_context *psp);
        bool (*compare_sram_data)(struct psp_context *psp,
                                  struct amdgpu_firmware_info *ucode,
                                  enum AMDGPU_UCODE_ID ucode_type);
@@ -88,7 +101,6 @@ struct psp_funcs
                                      struct psp_xgmi_topology_info *topology);
        int (*xgmi_set_topology_info)(struct psp_context *psp, int 
number_devices,
                                      struct psp_xgmi_topology_info *topology);
-       bool (*support_vmr_ring)(struct psp_context *psp);
 };
 
 struct psp_xgmi_context {
diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v10_0.c 
b/drivers/gpu/drm/amd/amdgpu/psp_v10_0.c
index 87d9560a52ce..a469ff952045 100644
--- a/drivers/gpu/drm/amd/amdgpu/psp_v10_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/psp_v10_0.c
@@ -35,6 +35,8 @@
 #include "sdma0/sdma0_4_1_offset.h"
 #include "psp_ring.h"
 #include "psp_cmn.h"
+#include "psp_asd.h"
+#include "psp_tmr.h"
 
 MODULE_FIRMWARE("amdgpu/raven_asd.bin");
 MODULE_FIRMWARE("amdgpu/picasso_asd.bin");
@@ -105,6 +107,10 @@ static const struct psp_funcs psp_v10_0_funcs = {
        .ring_destroy = psp_ring_destroy_ring,
        .prep_cmd_buf = psp_ring_prep_cmd_buf,
        .submit_cmd_buf = psp_ring_submit_cmd_buf,
+       .asd_init = psp_asd_init,
+       .asd_load = psp_asd_load,
+       .tmr_init = psp_tmr_init,
+       .tmr_load = psp_tmr_load,
        .compare_sram_data = psp_cmn_compare_sram_data,
        .mode1_reset = psp_v10_0_mode1_reset,
 };
diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v11_0.c 
b/drivers/gpu/drm/amd/amdgpu/psp_v11_0.c
index b5c6057dd6ed..68ce4ccceec7 100644
--- a/drivers/gpu/drm/amd/amdgpu/psp_v11_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/psp_v11_0.c
@@ -35,6 +35,8 @@
 #include "psp_ring.h"
 #include "psp_cmn.h"
 #include "psp_xgmi.h"
+#include "psp_asd.h"
+#include "psp_tmr.h"
 
 MODULE_FIRMWARE("amdgpu/vega20_sos.bin");
 MODULE_FIRMWARE("amdgpu/vega20_asd.bin");
@@ -257,6 +259,12 @@ static const struct psp_funcs psp_v11_0_funcs = {
        .prep_cmd_buf = psp_ring_prep_cmd_buf,
        .submit_cmd_buf = psp_ring_submit_cmd_buf,
        .support_vmr_ring = psp_ring_support_vmr,
+       .asd_init = psp_asd_init,
+       .asd_load = psp_asd_load,
+       .tmr_init = psp_tmr_init,
+       .tmr_load = psp_tmr_load,
+       .xgmi_init = psp_xgmi_initialize,
+       .xgmi_destory = psp_xgmi_terminate,
        .bootloader_load_sysdrv = psp_cmn_bootloader_load_sysdrv,
        .bootloader_load_sos = psp_cmn_bootloader_load_sos,
        .compare_sram_data = psp_cmn_compare_sram_data,
diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v3_1.c 
b/drivers/gpu/drm/amd/amdgpu/psp_v3_1.c
index a013c3ae114b..8bcbc6bb9333 100644
--- a/drivers/gpu/drm/amd/amdgpu/psp_v3_1.c
+++ b/drivers/gpu/drm/amd/amdgpu/psp_v3_1.c
@@ -38,6 +38,8 @@
 #include "nbio/nbio_6_1_offset.h"
 #include "psp_ring.h"
 #include "psp_cmn.h"
+#include "psp_asd.h"
+#include "psp_tmr.h"
 
 MODULE_FIRMWARE("amdgpu/vega10_sos.bin");
 MODULE_FIRMWARE("amdgpu/vega10_asd.bin");
@@ -175,6 +177,10 @@ static const struct psp_funcs psp_v3_1_funcs = {
        .ring_destroy = psp_ring_destroy_ring,
        .prep_cmd_buf = psp_ring_prep_cmd_buf,
        .submit_cmd_buf = psp_ring_submit_cmd_buf,
+       .asd_init = psp_asd_init,
+       .asd_load = psp_asd_load,
+       .tmr_init = psp_tmr_init,
+       .tmr_load = psp_tmr_load,
        .bootloader_load_sysdrv = psp_cmn_bootloader_load_sysdrv,
        .bootloader_load_sos = psp_v3_1_bootloader_load_sos,
        .compare_sram_data = psp_cmn_compare_sram_data,
-- 
2.20.1

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to