summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/gk20a.h
diff options
context:
space:
mode:
authorTerje Bergstrom <tbergstrom@nvidia.com>2016-03-23 11:43:53 -0400
committerTerje Bergstrom <tbergstrom@nvidia.com>2016-05-23 17:15:25 -0400
commitfb64e1f1b9c2162f521dfe3956655accb911d6a7 (patch)
tree15236c00323c8d24102f5a1221f1b313d62bfac2 /drivers/gpu/nvgpu/gk20a/gk20a.h
parentc25e1da93e09a421b8c2b91df720d4bc603db378 (diff)
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 <tbergstrom@nvidia.com> Reviewed-on: http://git-master/r/1120467 GVS: Gerrit_Virtual_Submit Reviewed-by: Ken Adams <kadams@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/gk20a.h')
-rw-r--r--drivers/gpu/nvgpu/gk20a/gk20a.h43
1 files changed, 43 insertions, 0 deletions
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 {
592 592
593 int (*get_litter_value)(struct gk20a *g, enum nvgpu_litter_value value); 593 int (*get_litter_value)(struct gk20a *g, enum nvgpu_litter_value value);
594 int (*chip_init_gpu_characteristics)(struct gk20a *g); 594 int (*chip_init_gpu_characteristics)(struct gk20a *g);
595
596 struct {
597 int (*init)(struct gk20a *g);
598 } bios;
599};
600
601struct nvgpu_bios_ucode {
602 u8 *bootloader;
603 u32 bootloader_phys_base;
604 u32 bootloader_size;
605 u8 *ucode;
606 u32 phys_base;
607 u32 size;
608 u8 *dmem;
609 u32 dmem_phys_base;
610 u32 dmem_size;
611 u32 code_entry_point;
612};
613
614struct nvgpu_bios {
615 u8 *data;
616
617 struct nvgpu_bios_ucode devinit;
618 struct nvgpu_bios_ucode preos;
619
620 u8 *devinit_tables;
621 u32 devinit_tables_size;
622 u8 *bootscripts;
623 u32 bootscripts_size;
624
625 u32 devinit_tables_phys_base;
626 u32 devinit_script_phys_base;
627
628 u32 expansion_rom_offset;
595}; 629};
596 630
597struct gk20a { 631struct gk20a {
@@ -763,6 +797,9 @@ struct gk20a {
763 bool mmu_debug_ctrl; 797 bool mmu_debug_ctrl;
764 798
765 u32 tpc_fs_mask_user; 799 u32 tpc_fs_mask_user;
800
801 struct nvgpu_bios bios;
802 struct debugfs_blob_wrapper bios_blob;
766}; 803};
767 804
768static inline unsigned long gk20a_get_gr_idle_timeout(struct gk20a *g) 805static 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);
1020#define GK20A_GPUID_GM20B \ 1057#define GK20A_GPUID_GM20B \
1021 GK20A_GPUID(NVGPU_GPU_ARCH_GM200, NVGPU_GPU_IMPL_GM20B) 1058 GK20A_GPUID(NVGPU_GPU_ARCH_GM200, NVGPU_GPU_IMPL_GM20B)
1022 1059
1060#define GK20A_GPUID_GM204 \
1061 GK20A_GPUID(NVGPU_GPU_ARCH_GM200, NVGPU_GPU_IMPL_GM204)
1062
1063#define GK20A_GPUID_GM206 \
1064 GK20A_GPUID(NVGPU_GPU_ARCH_GM200, NVGPU_GPU_IMPL_GM206)
1065
1023int gk20a_init_gpu_characteristics(struct gk20a *g); 1066int gk20a_init_gpu_characteristics(struct gk20a *g);
1024 1067
1025void gk20a_pbus_isr(struct gk20a *g); 1068void gk20a_pbus_isr(struct gk20a *g);