summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gm206/bios_gm206.c
diff options
context:
space:
mode:
authorTerje Bergstrom <tbergstrom@nvidia.com>2016-09-09 13:35:05 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2016-10-12 16:02:09 -0400
commit18c7268cbbfd815da9e3e06047b41c325a5947b1 (patch)
tree5ea73e5935dc1e50086d8a055b2dd8cf6bcf3a59 /drivers/gpu/nvgpu/gm206/bios_gm206.c
parent0568f26b8a86fc7e8892ba2dcc43acedacbf5ecf (diff)
gpu: nvgpu: Retrieve VBIOS version from dGPU
Retrieve VBIOS version from biosdata VBIOS structure. Bug 1811880 Change-Id: I24f4114ce7c8925bde4b195888da62454707b8e6 Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-on: http://git-master/r/1218062 (cherry picked from commit fb23e9522bc268fcf0d71cc7f2ae9a0bc6cfda23) Reviewed-on: http://git-master/r/1234089 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit
Diffstat (limited to 'drivers/gpu/nvgpu/gm206/bios_gm206.c')
-rw-r--r--drivers/gpu/nvgpu/gm206/bios_gm206.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gm206/bios_gm206.c b/drivers/gpu/nvgpu/gm206/bios_gm206.c
index a8f3f1d5..7b6a50d0 100644
--- a/drivers/gpu/nvgpu/gm206/bios_gm206.c
+++ b/drivers/gpu/nvgpu/gm206/bios_gm206.c
@@ -63,12 +63,24 @@ struct bit {
63 u8 header_checksum; 63 u8 header_checksum;
64} __packed; 64} __packed;
65 65
66#define TOKEN_ID_BIOSDATA 0x42
66#define TOKEN_ID_NVINIT_PTRS 0x49 67#define TOKEN_ID_NVINIT_PTRS 0x49
67#define TOKEN_ID_FALCON_DATA 0x70 68#define TOKEN_ID_FALCON_DATA 0x70
68#define TOKEN_ID_PERF_PTRS 0x50 69#define TOKEN_ID_PERF_PTRS 0x50
69#define TOKEN_ID_CLOCK_PTRS 0x43 70#define TOKEN_ID_CLOCK_PTRS 0x43
70#define TOKEN_ID_VIRT_PTRS 0x56 71#define TOKEN_ID_VIRT_PTRS 0x56
71 72
73struct biosdata {
74 u32 version;
75 u8 oem_version;
76 u8 checksum;
77 u16 int15callbackspost;
78 u16 int16callbackssystem;
79 u16 boardid;
80 u16 framecount;
81 u8 biosmoddate[8];
82} __packed;
83
72struct nvinit_ptrs { 84struct nvinit_ptrs {
73 u16 initscript_table_ptr; 85 u16 initscript_table_ptr;
74 u16 macro_index_table_ptr; 86 u16 macro_index_table_ptr;
@@ -252,6 +264,19 @@ static int gm206_bios_parse_rom(struct gk20a *g)
252 return 0; 264 return 0;
253} 265}
254 266
267static void gm206_bios_parse_biosdata(struct gk20a *g, int offset)
268{
269 struct biosdata biosdata;
270
271 memcpy(&biosdata, &g->bios.data[offset], sizeof(biosdata));
272 gk20a_dbg_fn("bios version %x, oem version %x",
273 biosdata.version,
274 biosdata.oem_version);
275
276 g->gpu_characteristics.vbios_version = biosdata.version;
277 g->gpu_characteristics.vbios_oem_version = biosdata.oem_version;
278}
279
255static void gm206_bios_parse_nvinit_ptrs(struct gk20a *g, int offset) 280static void gm206_bios_parse_nvinit_ptrs(struct gk20a *g, int offset)
256{ 281{
257 struct nvinit_ptrs nvinit_ptrs; 282 struct nvinit_ptrs nvinit_ptrs;
@@ -506,6 +531,9 @@ static void gm206_bios_parse_bit(struct gk20a *g, int offset)
506 bit_token.data_size, bit_token.data_version); 531 bit_token.data_size, bit_token.data_version);
507 532
508 switch (bit_token.token_id) { 533 switch (bit_token.token_id) {
534 case TOKEN_ID_BIOSDATA:
535 gm206_bios_parse_biosdata(g, bit_token.data_ptr);
536 break;
509 case TOKEN_ID_NVINIT_PTRS: 537 case TOKEN_ID_NVINIT_PTRS:
510 gm206_bios_parse_nvinit_ptrs(g, bit_token.data_ptr); 538 gm206_bios_parse_nvinit_ptrs(g, bit_token.data_ptr);
511 break; 539 break;