drm/amdgpu: make psp_ring_init common
authorAlex Deucher <alexander.deucher@amd.com>
Wed, 16 Nov 2022 16:06:03 +0000 (11:06 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 17 Nov 2022 23:09:16 +0000 (18:09 -0500)
All of the IP specific versions are the same now, so
we can just use a common function.

Acked-by: Felix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h
drivers/gpu/drm/amd/amdgpu/psp_v10_0.c
drivers/gpu/drm/amd/amdgpu/psp_v11_0.c
drivers/gpu/drm/amd/amdgpu/psp_v11_0_8.c
drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
drivers/gpu/drm/amd/amdgpu/psp_v13_0.c
drivers/gpu/drm/amd/amdgpu/psp_v13_0_4.c
drivers/gpu/drm/amd/amdgpu/psp_v3_1.c

index 0a8c30475dda0f89d567fb0c7abcacf1c09407e9..98dbf4e5aae9898252fc83bb60aced78a418102c 100644 (file)
@@ -52,6 +52,32 @@ static int psp_load_smu_fw(struct psp_context *psp);
 static int psp_rap_terminate(struct psp_context *psp);
 static int psp_securedisplay_terminate(struct psp_context *psp);
 
+static int psp_ring_init(struct psp_context *psp,
+                        enum psp_ring_type ring_type)
+{
+       int ret = 0;
+       struct psp_ring *ring;
+       struct amdgpu_device *adev = psp->adev;
+
+       ring = &psp->km_ring;
+
+       ring->ring_type = ring_type;
+
+       /* allocate 4k Page of Local Frame Buffer memory for ring */
+       ring->ring_size = 0x1000;
+       ret = amdgpu_bo_create_kernel(adev, ring->ring_size, PAGE_SIZE,
+                                     AMDGPU_GEM_DOMAIN_VRAM,
+                                     &adev->firmware.rbuf,
+                                     &ring->ring_mem_mc_addr,
+                                     (void **)&ring->ring_mem);
+       if (ret) {
+               ring->ring_size = 0;
+               return ret;
+       }
+
+       return 0;
+}
+
 /*
  * Due to DF Cstate management centralized to PMFW, the firmware
  * loading sequence will be updated as below:
index cbd4194a288337a9de9f3a7cdb2c840054ad707d..cf4f60c661223c7562f73c05e2086b101aab17ec 100644 (file)
@@ -118,7 +118,6 @@ struct psp_funcs
        int (*bootloader_load_dbg_drv)(struct psp_context *psp);
        int (*bootloader_load_ras_drv)(struct psp_context *psp);
        int (*bootloader_load_sos)(struct psp_context *psp);
-       int (*ring_init)(struct psp_context *psp, enum psp_ring_type ring_type);
        int (*ring_create)(struct psp_context *psp,
                           enum psp_ring_type ring_type);
        int (*ring_stop)(struct psp_context *psp,
@@ -396,7 +395,6 @@ struct amdgpu_psp_funcs {
 };
 
 
-#define psp_ring_init(psp, type) (psp)->funcs->ring_init((psp), (type))
 #define psp_ring_create(psp, type) (psp)->funcs->ring_create((psp), (type))
 #define psp_ring_stop(psp, type) (psp)->funcs->ring_stop((psp), (type))
 #define psp_ring_destroy(psp, type) ((psp)->funcs->ring_destroy((psp), (type)))
index ed2293686f0de3e9b738749ed40f78d2fabf8ed0..9de46fa8f46ce997e3b7e042efe9b1880d0da5b4 100644 (file)
@@ -126,32 +126,6 @@ out:
        return err;
 }
 
-static int psp_v10_0_ring_init(struct psp_context *psp,
-                              enum psp_ring_type ring_type)
-{
-       int ret = 0;
-       struct psp_ring *ring;
-       struct amdgpu_device *adev = psp->adev;
-
-       ring = &psp->km_ring;
-
-       ring->ring_type = ring_type;
-
-       /* allocate 4k Page of Local Frame Buffer memory for ring */
-       ring->ring_size = 0x1000;
-       ret = amdgpu_bo_create_kernel(adev, ring->ring_size, PAGE_SIZE,
-                                     AMDGPU_GEM_DOMAIN_VRAM,
-                                     &adev->firmware.rbuf,
-                                     &ring->ring_mem_mc_addr,
-                                     (void **)&ring->ring_mem);
-       if (ret) {
-               ring->ring_size = 0;
-               return ret;
-       }
-
-       return 0;
-}
-
 static int psp_v10_0_ring_create(struct psp_context *psp,
                                 enum psp_ring_type ring_type)
 {
@@ -245,7 +219,6 @@ static void psp_v10_0_ring_set_wptr(struct psp_context *psp, uint32_t value)
 
 static const struct psp_funcs psp_v10_0_funcs = {
        .init_microcode = psp_v10_0_init_microcode,
-       .ring_init = psp_v10_0_ring_init,
        .ring_create = psp_v10_0_ring_create,
        .ring_stop = psp_v10_0_ring_stop,
        .ring_destroy = psp_v10_0_ring_destroy,
index 9518b4394a6e7863a5e9b902ec076870b018b946..bd3e3e23a93981ec5fe6c425d63cf01fac7d0e7b 100644 (file)
@@ -360,32 +360,6 @@ static int psp_v11_0_bootloader_load_sos(struct psp_context *psp)
        return ret;
 }
 
-static int psp_v11_0_ring_init(struct psp_context *psp,
-                             enum psp_ring_type ring_type)
-{
-       int ret = 0;
-       struct psp_ring *ring;
-       struct amdgpu_device *adev = psp->adev;
-
-       ring = &psp->km_ring;
-
-       ring->ring_type = ring_type;
-
-       /* allocate 4k Page of Local Frame Buffer memory for ring */
-       ring->ring_size = 0x1000;
-       ret = amdgpu_bo_create_kernel(adev, ring->ring_size, PAGE_SIZE,
-                                     AMDGPU_GEM_DOMAIN_VRAM,
-                                     &adev->firmware.rbuf,
-                                     &ring->ring_mem_mc_addr,
-                                     (void **)&ring->ring_mem);
-       if (ret) {
-               ring->ring_size = 0;
-               return ret;
-       }
-
-       return 0;
-}
-
 static int psp_v11_0_ring_stop(struct psp_context *psp,
                              enum psp_ring_type ring_type)
 {
@@ -779,7 +753,6 @@ static const struct psp_funcs psp_v11_0_funcs = {
        .bootloader_load_spl = psp_v11_0_bootloader_load_spl,
        .bootloader_load_sysdrv = psp_v11_0_bootloader_load_sysdrv,
        .bootloader_load_sos = psp_v11_0_bootloader_load_sos,
-       .ring_init = psp_v11_0_ring_init,
        .ring_create = psp_v11_0_ring_create,
        .ring_stop = psp_v11_0_ring_stop,
        .ring_destroy = psp_v11_0_ring_destroy,
index ff13e1beb49b0361eec4a95e05875a0c42e5499e..5697760a819bc7898438b6f2ab2062087022259c 100644 (file)
 
 #include "mp/mp_11_0_8_offset.h"
 
-static int psp_v11_0_8_ring_init(struct psp_context *psp,
-                             enum psp_ring_type ring_type)
-{
-       int ret = 0;
-       struct psp_ring *ring;
-       struct amdgpu_device *adev = psp->adev;
-
-       ring = &psp->km_ring;
-
-       ring->ring_type = ring_type;
-
-       /* allocate 4k Page of Local Frame Buffer memory for ring */
-       ring->ring_size = 0x1000;
-       ret = amdgpu_bo_create_kernel(adev, ring->ring_size, PAGE_SIZE,
-                                     AMDGPU_GEM_DOMAIN_VRAM,
-                                     &adev->firmware.rbuf,
-                                     &ring->ring_mem_mc_addr,
-                                     (void **)&ring->ring_mem);
-       if (ret) {
-               ring->ring_size = 0;
-               return ret;
-       }
-
-       return 0;
-}
-
 static int psp_v11_0_8_ring_stop(struct psp_context *psp,
                               enum psp_ring_type ring_type)
 {
@@ -194,7 +168,6 @@ static void psp_v11_0_8_ring_set_wptr(struct psp_context *psp, uint32_t value)
 }
 
 static const struct psp_funcs psp_v11_0_8_funcs = {
-       .ring_init = psp_v11_0_8_ring_init,
        .ring_create = psp_v11_0_8_ring_create,
        .ring_stop = psp_v11_0_8_ring_stop,
        .ring_destroy = psp_v11_0_8_ring_destroy,
index d7dd84090c0923251d22f1e8e927a2d712e5e3b3..8ed2281b6557c3c324ead50515e6d62c8e996df4 100644 (file)
@@ -236,32 +236,6 @@ static void psp_v12_0_reroute_ih(struct psp_context *psp)
                     0x80000000, 0x8000FFFF, false);
 }
 
-static int psp_v12_0_ring_init(struct psp_context *psp,
-                             enum psp_ring_type ring_type)
-{
-       int ret = 0;
-       struct psp_ring *ring;
-       struct amdgpu_device *adev = psp->adev;
-
-       ring = &psp->km_ring;
-
-       ring->ring_type = ring_type;
-
-       /* allocate 4k Page of Local Frame Buffer memory for ring */
-       ring->ring_size = 0x1000;
-       ret = amdgpu_bo_create_kernel(adev, ring->ring_size, PAGE_SIZE,
-                                     AMDGPU_GEM_DOMAIN_VRAM,
-                                     &adev->firmware.rbuf,
-                                     &ring->ring_mem_mc_addr,
-                                     (void **)&ring->ring_mem);
-       if (ret) {
-               ring->ring_size = 0;
-               return ret;
-       }
-
-       return 0;
-}
-
 static int psp_v12_0_ring_create(struct psp_context *psp,
                                enum psp_ring_type ring_type)
 {
@@ -425,7 +399,6 @@ static const struct psp_funcs psp_v12_0_funcs = {
        .init_microcode = psp_v12_0_init_microcode,
        .bootloader_load_sysdrv = psp_v12_0_bootloader_load_sysdrv,
        .bootloader_load_sos = psp_v12_0_bootloader_load_sos,
-       .ring_init = psp_v12_0_ring_init,
        .ring_create = psp_v12_0_ring_create,
        .ring_stop = psp_v12_0_ring_stop,
        .ring_destroy = psp_v12_0_ring_destroy,
index 88f9b327183ab8a3799217d6092179cde4317d65..ee27bfaba6fdbf4000f7700fac8b2294e95625f8 100644 (file)
@@ -268,32 +268,6 @@ static int psp_v13_0_bootloader_load_sos(struct psp_context *psp)
        return ret;
 }
 
-static int psp_v13_0_ring_init(struct psp_context *psp,
-                             enum psp_ring_type ring_type)
-{
-       int ret = 0;
-       struct psp_ring *ring;
-       struct amdgpu_device *adev = psp->adev;
-
-       ring = &psp->km_ring;
-
-       ring->ring_type = ring_type;
-
-       /* allocate 4k Page of Local Frame Buffer memory for ring */
-       ring->ring_size = 0x1000;
-       ret = amdgpu_bo_create_kernel(adev, ring->ring_size, PAGE_SIZE,
-                                     AMDGPU_GEM_DOMAIN_VRAM,
-                                     &adev->firmware.rbuf,
-                                     &ring->ring_mem_mc_addr,
-                                     (void **)&ring->ring_mem);
-       if (ret) {
-               ring->ring_size = 0;
-               return ret;
-       }
-
-       return 0;
-}
-
 static int psp_v13_0_ring_stop(struct psp_context *psp,
                               enum psp_ring_type ring_type)
 {
@@ -729,7 +703,6 @@ static const struct psp_funcs psp_v13_0_funcs = {
        .bootloader_load_dbg_drv = psp_v13_0_bootloader_load_dbg_drv,
        .bootloader_load_ras_drv = psp_v13_0_bootloader_load_ras_drv,
        .bootloader_load_sos = psp_v13_0_bootloader_load_sos,
-       .ring_init = psp_v13_0_ring_init,
        .ring_create = psp_v13_0_ring_create,
        .ring_stop = psp_v13_0_ring_stop,
        .ring_destroy = psp_v13_0_ring_destroy,
index 321089dfa7dbf91794031bd7d713e08dd8af62f1..9d4e24e518e875eb34a1a5cc3b920e77b47e540b 100644 (file)
@@ -199,32 +199,6 @@ static int psp_v13_0_4_bootloader_load_sos(struct psp_context *psp)
        return ret;
 }
 
-static int psp_v13_0_4_ring_init(struct psp_context *psp,
-                             enum psp_ring_type ring_type)
-{
-       int ret = 0;
-       struct psp_ring *ring;
-       struct amdgpu_device *adev = psp->adev;
-
-       ring = &psp->km_ring;
-
-       ring->ring_type = ring_type;
-
-       /* allocate 4k Page of Local Frame Buffer memory for ring */
-       ring->ring_size = 0x1000;
-       ret = amdgpu_bo_create_kernel(adev, ring->ring_size, PAGE_SIZE,
-                                     AMDGPU_GEM_DOMAIN_VRAM,
-                                     &adev->firmware.rbuf,
-                                     &ring->ring_mem_mc_addr,
-                                     (void **)&ring->ring_mem);
-       if (ret) {
-               ring->ring_size = 0;
-               return ret;
-       }
-
-       return 0;
-}
-
 static int psp_v13_0_4_ring_stop(struct psp_context *psp,
                               enum psp_ring_type ring_type)
 {
@@ -373,7 +347,6 @@ static const struct psp_funcs psp_v13_0_4_funcs = {
        .bootloader_load_intf_drv = psp_v13_0_4_bootloader_load_intf_drv,
        .bootloader_load_dbg_drv = psp_v13_0_4_bootloader_load_dbg_drv,
        .bootloader_load_sos = psp_v13_0_4_bootloader_load_sos,
-       .ring_init = psp_v13_0_4_ring_init,
        .ring_create = psp_v13_0_4_ring_create,
        .ring_stop = psp_v13_0_4_ring_stop,
        .ring_destroy = psp_v13_0_4_ring_destroy,
index 01f3bcc62a6c72a927abdfdf621252119803fc95..157147c6c94e1d4f0ef5365072cc2703f3ea487b 100644 (file)
@@ -160,32 +160,6 @@ static int psp_v3_1_bootloader_load_sos(struct psp_context *psp)
        return ret;
 }
 
-static int psp_v3_1_ring_init(struct psp_context *psp,
-                             enum psp_ring_type ring_type)
-{
-       int ret = 0;
-       struct psp_ring *ring;
-       struct amdgpu_device *adev = psp->adev;
-
-       ring = &psp->km_ring;
-
-       ring->ring_type = ring_type;
-
-       /* allocate 4k Page of Local Frame Buffer memory for ring */
-       ring->ring_size = 0x1000;
-       ret = amdgpu_bo_create_kernel(adev, ring->ring_size, PAGE_SIZE,
-                                     AMDGPU_GEM_DOMAIN_VRAM,
-                                     &adev->firmware.rbuf,
-                                     &ring->ring_mem_mc_addr,
-                                     (void **)&ring->ring_mem);
-       if (ret) {
-               ring->ring_size = 0;
-               return ret;
-       }
-
-       return 0;
-}
-
 static void psp_v3_1_reroute_ih(struct psp_context *psp)
 {
        struct amdgpu_device *adev = psp->adev;
@@ -401,7 +375,6 @@ static const struct psp_funcs psp_v3_1_funcs = {
        .init_microcode = psp_v3_1_init_microcode,
        .bootloader_load_sysdrv = psp_v3_1_bootloader_load_sysdrv,
        .bootloader_load_sos = psp_v3_1_bootloader_load_sos,
-       .ring_init = psp_v3_1_ring_init,
        .ring_create = psp_v3_1_ring_create,
        .ring_stop = psp_v3_1_ring_stop,
        .ring_destroy = psp_v3_1_ring_destroy,