From fb64e1f1b9c2162f521dfe3956655accb911d6a7 Mon Sep 17 00:00:00 2001 From: Terje Bergstrom Date: Wed, 23 Mar 2016 08:43:53 -0700 Subject: gpu: nvgpu: Add support for gm204 and gm206 Add support for chips gm204 and gm206. Adds also support for reading VBIOS and booting devinit and pre-os images on PMU. Change-Id: I4824b44245611e5379ace62793cc37158048f432 Signed-off-by: Terje Bergstrom Reviewed-on: http://git-master/r/1120467 GVS: Gerrit_Virtual_Submit Reviewed-by: Ken Adams --- drivers/gpu/nvgpu/gk20a/gk20a.h | 43 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'drivers/gpu/nvgpu/gk20a/gk20a.h') diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h index 49da164c..f5b4bb3f 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/gk20a.h @@ -592,6 +592,40 @@ struct gpu_ops { int (*get_litter_value)(struct gk20a *g, enum nvgpu_litter_value value); int (*chip_init_gpu_characteristics)(struct gk20a *g); + + struct { + int (*init)(struct gk20a *g); + } bios; +}; + +struct nvgpu_bios_ucode { + u8 *bootloader; + u32 bootloader_phys_base; + u32 bootloader_size; + u8 *ucode; + u32 phys_base; + u32 size; + u8 *dmem; + u32 dmem_phys_base; + u32 dmem_size; + u32 code_entry_point; +}; + +struct nvgpu_bios { + u8 *data; + + struct nvgpu_bios_ucode devinit; + struct nvgpu_bios_ucode preos; + + u8 *devinit_tables; + u32 devinit_tables_size; + u8 *bootscripts; + u32 bootscripts_size; + + u32 devinit_tables_phys_base; + u32 devinit_script_phys_base; + + u32 expansion_rom_offset; }; struct gk20a { @@ -763,6 +797,9 @@ struct gk20a { bool mmu_debug_ctrl; u32 tpc_fs_mask_user; + + struct nvgpu_bios bios; + struct debugfs_blob_wrapper bios_blob; }; static inline unsigned long gk20a_get_gr_idle_timeout(struct gk20a *g) @@ -1020,6 +1057,12 @@ gk20a_request_firmware(struct gk20a *g, const char *fw_name); #define GK20A_GPUID_GM20B \ GK20A_GPUID(NVGPU_GPU_ARCH_GM200, NVGPU_GPU_IMPL_GM20B) +#define GK20A_GPUID_GM204 \ + GK20A_GPUID(NVGPU_GPU_ARCH_GM200, NVGPU_GPU_IMPL_GM204) + +#define GK20A_GPUID_GM206 \ + GK20A_GPUID(NVGPU_GPU_ARCH_GM200, NVGPU_GPU_IMPL_GM206) + int gk20a_init_gpu_characteristics(struct gk20a *g); void gk20a_pbus_isr(struct gk20a *g); -- cgit v1.2.2