[Intel-xe] [PATCH 5/5] drm/xe: Fix GMD_ID to revid
Lucas De Marchi
lucas.demarchi at intel.com
Sun Jun 11 22:24:47 UTC 2023
In order to calculate revid, let peek_gmdid() return the raw value of
the register, then calculate arch, release and rev. Also rename the
variables to make clear what are the assigned values.
Signed-off-by: Lucas De Marchi <lucas.demarchi at intel.com>
---
drivers/gpu/drm/xe/xe_pci.c | 29 ++++++++++++++++-------------
drivers/gpu/drm/xe/xe_pci_types.h | 2 +-
2 files changed, 17 insertions(+), 14 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
index bd1f59b49928..06d9d21c7cd3 100644
--- a/drivers/gpu/drm/xe/xe_pci.c
+++ b/drivers/gpu/drm/xe/xe_pci.c
@@ -407,8 +407,7 @@ static u32 peek_gmdid(struct xe_device *xe, u32 gmdid_offset)
ver = ioread32(map);
pci_iounmap(pdev, map);
- return REG_FIELD_GET(GMD_ID_ARCH_MASK, ver) * 100 +
- REG_FIELD_GET(GMD_ID_RELEASE_MASK, ver);
+ return ver;
}
/*
@@ -442,13 +441,15 @@ static void handle_gmdid(struct xe_device *xe,
u32 *graphics_revid,
u32 *media_revid)
{
- u32 ver;
+ u32 verx100, gmdid;
- ver = peek_gmdid(xe, GMD_ID.addr);
- *graphics_revid = REG_FIELD_GET(GMD_ID_REVID, ver);
+ gmdid = peek_gmdid(xe, GMD_ID.addr);
+ verx100 = REG_FIELD_GET(GMD_ID_ARCH_MASK, gmdid) * 100 +
+ REG_FIELD_GET(GMD_ID_RELEASE_MASK, gmdid);
+ *graphics_revid = REG_FIELD_GET(GMD_ID_REVID, gmdid);
for (int i = 0; i < ARRAY_SIZE(graphics_ip_map); i++) {
- if (ver == graphics_ip_map[i].ver) {
- xe->info.graphics_verx100 = ver;
+ if (verx100 == graphics_ip_map[i].verx100) {
+ xe->info.graphics_verx100 = verx100;
*graphics = graphics_ip_map[i].ip;
break;
@@ -457,14 +458,16 @@ static void handle_gmdid(struct xe_device *xe,
if (!xe->info.graphics_verx100) {
drm_err(&xe->drm, "Hardware reports unknown graphics version %u.%02u\n",
- ver / 100, ver % 100);
+ verx100 / 100, verx100 % 100);
}
- ver = peek_gmdid(xe, GMD_ID.addr + 0x380000);
- *media_revid = REG_FIELD_GET(GMD_ID_REVID, ver);
+ gmdid = peek_gmdid(xe, GMD_ID.addr + 0x380000);
+ verx100 = REG_FIELD_GET(GMD_ID_ARCH_MASK, gmdid) * 100 +
+ REG_FIELD_GET(GMD_ID_RELEASE_MASK, gmdid);
+ *media_revid = REG_FIELD_GET(GMD_ID_REVID, gmdid);
for (int i = 0; i < ARRAY_SIZE(media_ip_map); i++) {
- if (ver == media_ip_map[i].ver) {
- xe->info.media_verx100 = ver;
+ if (verx100 == media_ip_map[i].verx100) {
+ xe->info.media_verx100 = verx100;
*media = media_ip_map[i].ip;
break;
@@ -473,7 +476,7 @@ static void handle_gmdid(struct xe_device *xe,
if (!xe->info.media_verx100) {
drm_err(&xe->drm, "Hardware reports unknown media version %u.%02u\n",
- ver / 100, ver % 100);
+ verx100 / 100, verx100 % 100);
}
}
diff --git a/drivers/gpu/drm/xe/xe_pci_types.h b/drivers/gpu/drm/xe/xe_pci_types.h
index ba31b933eb8e..70858836cc5b 100644
--- a/drivers/gpu/drm/xe/xe_pci_types.h
+++ b/drivers/gpu/drm/xe/xe_pci_types.h
@@ -37,7 +37,7 @@ struct xe_media_desc {
};
struct gmdid_map {
- unsigned int ver;
+ unsigned int verx100;
const void *ip;
};
--
2.40.1
More information about the Intel-xe
mailing list