mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-22 17:36:20 +03:00
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
This commit is contained in:
committed by
mobile promotions
parent
0568f26b8a
commit
18c7268cbb
@@ -63,12 +63,24 @@ struct bit {
|
||||
u8 header_checksum;
|
||||
} __packed;
|
||||
|
||||
#define TOKEN_ID_BIOSDATA 0x42
|
||||
#define TOKEN_ID_NVINIT_PTRS 0x49
|
||||
#define TOKEN_ID_FALCON_DATA 0x70
|
||||
#define TOKEN_ID_PERF_PTRS 0x50
|
||||
#define TOKEN_ID_CLOCK_PTRS 0x43
|
||||
#define TOKEN_ID_VIRT_PTRS 0x56
|
||||
|
||||
struct biosdata {
|
||||
u32 version;
|
||||
u8 oem_version;
|
||||
u8 checksum;
|
||||
u16 int15callbackspost;
|
||||
u16 int16callbackssystem;
|
||||
u16 boardid;
|
||||
u16 framecount;
|
||||
u8 biosmoddate[8];
|
||||
} __packed;
|
||||
|
||||
struct nvinit_ptrs {
|
||||
u16 initscript_table_ptr;
|
||||
u16 macro_index_table_ptr;
|
||||
@@ -252,6 +264,19 @@ static int gm206_bios_parse_rom(struct gk20a *g)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void gm206_bios_parse_biosdata(struct gk20a *g, int offset)
|
||||
{
|
||||
struct biosdata biosdata;
|
||||
|
||||
memcpy(&biosdata, &g->bios.data[offset], sizeof(biosdata));
|
||||
gk20a_dbg_fn("bios version %x, oem version %x",
|
||||
biosdata.version,
|
||||
biosdata.oem_version);
|
||||
|
||||
g->gpu_characteristics.vbios_version = biosdata.version;
|
||||
g->gpu_characteristics.vbios_oem_version = biosdata.oem_version;
|
||||
}
|
||||
|
||||
static void gm206_bios_parse_nvinit_ptrs(struct gk20a *g, int offset)
|
||||
{
|
||||
struct nvinit_ptrs nvinit_ptrs;
|
||||
@@ -506,6 +531,9 @@ static void gm206_bios_parse_bit(struct gk20a *g, int offset)
|
||||
bit_token.data_size, bit_token.data_version);
|
||||
|
||||
switch (bit_token.token_id) {
|
||||
case TOKEN_ID_BIOSDATA:
|
||||
gm206_bios_parse_biosdata(g, bit_token.data_ptr);
|
||||
break;
|
||||
case TOKEN_ID_NVINIT_PTRS:
|
||||
gm206_bios_parse_nvinit_ptrs(g, bit_token.data_ptr);
|
||||
break;
|
||||
|
||||
@@ -203,7 +203,8 @@ struct nvgpu_gpu_characteristics {
|
||||
__u16 pci_subsystem_vendor_id, pci_subsystem_device_id;
|
||||
__u16 pci_class;
|
||||
__u8 pci_revision;
|
||||
__u8 reserved2[5];
|
||||
__u8 vbios_oem_version;
|
||||
__u32 vbios_version;
|
||||
|
||||
/* Notes:
|
||||
- This struct can be safely appended with new fields. However, always
|
||||
|
||||
Reference in New Issue
Block a user