diff options
author | Terje Bergstrom <tbergstrom@nvidia.com> | 2016-03-23 11:43:53 -0400 |
---|---|---|
committer | Terje Bergstrom <tbergstrom@nvidia.com> | 2016-05-23 17:15:25 -0400 |
commit | fb64e1f1b9c2162f521dfe3956655accb911d6a7 (patch) | |
tree | 15236c00323c8d24102f5a1221f1b313d62bfac2 /drivers/gpu/nvgpu/gk20a/gk20a.h | |
parent | c25e1da93e09a421b8c2b91df720d4bc603db378 (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.h | 43 |
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 | |||
601 | struct 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 | |||
614 | struct 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 | ||
597 | struct gk20a { | 631 | struct 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 | ||
768 | static inline unsigned long gk20a_get_gr_idle_timeout(struct gk20a *g) | 805 | 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); | |||
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 | |||
1023 | int gk20a_init_gpu_characteristics(struct gk20a *g); | 1066 | int gk20a_init_gpu_characteristics(struct gk20a *g); |
1024 | 1067 | ||
1025 | void gk20a_pbus_isr(struct gk20a *g); | 1068 | void gk20a_pbus_isr(struct gk20a *g); |