drm/amdgpu: print full bios version in dmesg.
authorRex Zhu <Rex.Zhu@amd.com>
Mon, 6 Mar 2017 03:33:25 +0000 (11:33 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 30 Mar 2017 03:53:26 +0000 (23:53 -0400)
v2: fix merge error.

Signed-off-by: Rex Zhu <Rex.Zhu@amd.com>
Reviewed-by: Xiaojie Yuan <Xiaojie.Yuan@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/atom.c
drivers/gpu/drm/amd/amdgpu/atom.h

index d1444aa..81c60a2 100644 (file)
@@ -1300,8 +1300,7 @@ struct atom_context *amdgpu_atom_parse(struct card_info *card, void *bios)
        struct atom_context *ctx =
            kzalloc(sizeof(struct atom_context), GFP_KERNEL);
        char *str;
-       char name[512];
-       int i;
+       u16 idx;
 
        if (!ctx)
                return NULL;
@@ -1339,18 +1338,13 @@ struct atom_context *amdgpu_atom_parse(struct card_info *card, void *bios)
                return NULL;
        }
 
-       str = CSTR(CU16(base + ATOM_ROM_MSG_PTR));
-       while (*str && ((*str == '\n') || (*str == '\r')))
-               str++;
-       /* name string isn't always 0 terminated */
-       for (i = 0; i < 511; i++) {
-               name[i] = str[i];
-               if (name[i] < '.' || name[i] > 'z') {
-                       name[i] = 0;
-                       break;
-               }
-       }
-       pr_info("ATOM BIOS: %s\n", name);
+       idx = CU16(ATOM_ROM_PART_NUMBER_PTR);
+       if (idx == 0)
+               idx = 0x80;
+
+       str = CSTR(idx);
+       if (*str != '\0')
+               pr_info("ATOM BIOS: %s\n", str);
 
        return ctx;
 }
index 49daf6d..baa2438 100644 (file)
@@ -32,6 +32,7 @@
 #define ATOM_ATI_MAGIC_PTR     0x30
 #define ATOM_ATI_MAGIC         " 761295520"
 #define ATOM_ROM_TABLE_PTR     0x48
+#define ATOM_ROM_PART_NUMBER_PTR       0x6E
 
 #define ATOM_ROM_MAGIC         "ATOM"
 #define ATOM_ROM_MAGIC_PTR     4