RE: [PATCH] drm/amdgpu/pm: add smc v2_1 printer in amdgpu_ucode_print_smc_hdr()

2020-12-07 Thread Lazar, Lijo
[AMD Public Use]

Reviewed-by: Lijo Lazar 

-Original Message-
From: amd-gfx  On Behalf Of Kevin Wang
Sent: Monday, December 7, 2020 12:12 PM
To: amd-gfx@lists.freedesktop.org
Cc: Wang, Kevin(Yang) 
Subject: [PATCH] drm/amdgpu/pm: add smc v2_1 printer in 
amdgpu_ucode_print_smc_hdr()

[CAUTION: External Email]

the smc v2_0 printer is not compatible with the smc v2_1 .
1. add smc v2_1 printer.
2. cleanup code

Signed-off-by: Kevin Wang 
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c | 29 +++
 1 file changed, 19 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
index 2b7c90b7a712..1beb08af347f 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
@@ -68,23 +68,32 @@ void amdgpu_ucode_print_smc_hdr(const struct 
common_firmware_header *hdr)  {
uint16_t version_major = le16_to_cpu(hdr->header_version_major);
uint16_t version_minor = le16_to_cpu(hdr->header_version_minor);
+   const struct smc_firmware_header_v1_0 *v1_0_hdr;
+   const struct smc_firmware_header_v2_0 *v2_0_hdr;
+   const struct smc_firmware_header_v2_1 *v2_1_hdr;

DRM_DEBUG("SMC\n");
amdgpu_ucode_print_common_hdr(hdr);

if (version_major == 1) {
-   const struct smc_firmware_header_v1_0 *smc_hdr =
-   container_of(hdr, struct smc_firmware_header_v1_0, 
header);
-
-   DRM_DEBUG("ucode_start_addr: %u\n", 
le32_to_cpu(smc_hdr->ucode_start_addr));
+   v1_0_hdr = container_of(hdr, struct smc_firmware_header_v1_0, 
header);
+   DRM_DEBUG("ucode_start_addr: %u\n", 
+ le32_to_cpu(v1_0_hdr->ucode_start_addr));
} else if (version_major == 2) {
-   const struct smc_firmware_header_v1_0 *v1_hdr =
-   container_of(hdr, struct smc_firmware_header_v1_0, 
header);
-   const struct smc_firmware_header_v2_0 *v2_hdr =
-   container_of(v1_hdr, struct smc_firmware_header_v2_0, 
v1_0);
+   switch (version_minor) {
+   case 0:
+   v2_0_hdr = container_of(hdr, struct 
smc_firmware_header_v2_0, v1_0.header);
+   DRM_DEBUG("ppt_offset_bytes: %u\n", 
le32_to_cpu(v2_0_hdr->ppt_offset_bytes));
+   DRM_DEBUG("ppt_size_bytes: %u\n", 
le32_to_cpu(v2_0_hdr->ppt_size_bytes));
+   break;
+   case 1:
+   v2_1_hdr = container_of(hdr, struct 
smc_firmware_header_v2_1, v1_0.header);
+   DRM_DEBUG("pptable_count: %u\n", 
le32_to_cpu(v2_1_hdr->pptable_count));
+   DRM_DEBUG("pptable_entry_offset: %u\n", 
le32_to_cpu(v2_1_hdr->pptable_entry_offset));
+   break;
+   default:
+   break;
+   }

-   DRM_DEBUG("ppt_offset_bytes: %u\n", 
le32_to_cpu(v2_hdr->ppt_offset_bytes));
-   DRM_DEBUG("ppt_size_bytes: %u\n", 
le32_to_cpu(v2_hdr->ppt_size_bytes));
} else {
DRM_ERROR("Unknown SMC ucode version: %u.%u\n", version_major, 
version_minor);
}
--
2.17.1

___
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Famd-gfxdata=04%7C01%7Clijo.lazar%40amd.com%7C37d29083a0b9477713da08d89a7b4c3a%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637429201636429266%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000sdata=oOvoyTt5DvoNaXr%2FjqBXqZfOnDa1Im672JEXRKP8xsk%3Dreserved=0
___
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx


[PATCH] drm/amdgpu/pm: add smc v2_1 printer in amdgpu_ucode_print_smc_hdr()

2020-12-06 Thread Kevin Wang
the smc v2_0 printer is not compatible with the smc v2_1 .
1. add smc v2_1 printer.
2. cleanup code

Signed-off-by: Kevin Wang 
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c | 29 +++
 1 file changed, 19 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
index 2b7c90b7a712..1beb08af347f 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
@@ -68,23 +68,32 @@ void amdgpu_ucode_print_smc_hdr(const struct 
common_firmware_header *hdr)
 {
uint16_t version_major = le16_to_cpu(hdr->header_version_major);
uint16_t version_minor = le16_to_cpu(hdr->header_version_minor);
+   const struct smc_firmware_header_v1_0 *v1_0_hdr;
+   const struct smc_firmware_header_v2_0 *v2_0_hdr;
+   const struct smc_firmware_header_v2_1 *v2_1_hdr;
 
DRM_DEBUG("SMC\n");
amdgpu_ucode_print_common_hdr(hdr);
 
if (version_major == 1) {
-   const struct smc_firmware_header_v1_0 *smc_hdr =
-   container_of(hdr, struct smc_firmware_header_v1_0, 
header);
-
-   DRM_DEBUG("ucode_start_addr: %u\n", 
le32_to_cpu(smc_hdr->ucode_start_addr));
+   v1_0_hdr = container_of(hdr, struct smc_firmware_header_v1_0, 
header);
+   DRM_DEBUG("ucode_start_addr: %u\n", 
le32_to_cpu(v1_0_hdr->ucode_start_addr));
} else if (version_major == 2) {
-   const struct smc_firmware_header_v1_0 *v1_hdr =
-   container_of(hdr, struct smc_firmware_header_v1_0, 
header);
-   const struct smc_firmware_header_v2_0 *v2_hdr =
-   container_of(v1_hdr, struct smc_firmware_header_v2_0, 
v1_0);
+   switch (version_minor) {
+   case 0:
+   v2_0_hdr = container_of(hdr, struct 
smc_firmware_header_v2_0, v1_0.header);
+   DRM_DEBUG("ppt_offset_bytes: %u\n", 
le32_to_cpu(v2_0_hdr->ppt_offset_bytes));
+   DRM_DEBUG("ppt_size_bytes: %u\n", 
le32_to_cpu(v2_0_hdr->ppt_size_bytes));
+   break;
+   case 1:
+   v2_1_hdr = container_of(hdr, struct 
smc_firmware_header_v2_1, v1_0.header);
+   DRM_DEBUG("pptable_count: %u\n", 
le32_to_cpu(v2_1_hdr->pptable_count));
+   DRM_DEBUG("pptable_entry_offset: %u\n", 
le32_to_cpu(v2_1_hdr->pptable_entry_offset));
+   break;
+   default:
+   break;
+   }
 
-   DRM_DEBUG("ppt_offset_bytes: %u\n", 
le32_to_cpu(v2_hdr->ppt_offset_bytes));
-   DRM_DEBUG("ppt_size_bytes: %u\n", 
le32_to_cpu(v2_hdr->ppt_size_bytes));
} else {
DRM_ERROR("Unknown SMC ucode version: %u.%u\n", version_major, 
version_minor);
}
-- 
2.17.1

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