summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c
diff options
context:
space:
mode:
authorSupriya <ssharatkumar@nvidia.com>2014-10-27 08:01:04 -0400
committerDan Willemsen <dwillemsen@nvidia.com>2015-03-18 15:11:56 -0400
commiteb690cb391ca0578a2c086eff5085f16c32f651e (patch)
treeeaa7ba386296c52a3ded108ca53418b5a91cf8ae /drivers/gpu/nvgpu/gk20a/pmu_gk20a.c
parent8c6a9fd1151299697037d58f33cfa306d8ac5d87 (diff)
gpu: nvgpu: Changes to support LS sig
Support added to send PMU and FECS signatures to ACR ucode Bug 200046413 Change-Id: Ie1babb640be20a697ad4d6dd18bd11161edb263c Signed-off-by: Vijayakumar <vsubbu@nvidia.com> Signed-off-by: Supriya <ssharatkumar@nvidia.com> Signed-off-by: Vijayakumar <vsubbu@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/pmu_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/pmu_gk20a.c119
1 files changed, 119 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c b/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c
index 0580f19d..3fa7e53c 100644
--- a/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c
@@ -155,6 +155,37 @@ static void set_pmu_cmdline_args_falctracedmaidx_v2(
155 pmu->args_v2.falc_trace_dma_idx = idx; 155 pmu->args_v2.falc_trace_dma_idx = idx;
156} 156}
157 157
158static u32 pmu_cmdline_size_v3(struct pmu_gk20a *pmu)
159{
160 return sizeof(struct pmu_cmdline_args_v3);
161}
162
163static void set_pmu_cmdline_args_cpufreq_v3(struct pmu_gk20a *pmu, u32 freq)
164{
165 pmu->args_v3.cpu_freq_hz = freq;
166}
167static void set_pmu_cmdline_args_secure_mode_v3(struct pmu_gk20a *pmu, u32 val)
168{
169 pmu->args_v3.secure_mode = val;
170}
171
172static void set_pmu_cmdline_args_falctracesize_v3(
173 struct pmu_gk20a *pmu, u32 size)
174{
175 pmu->args_v3.falc_trace_size = size;
176}
177
178static void set_pmu_cmdline_args_falctracedmabase_v3(struct pmu_gk20a *pmu)
179{
180 pmu->args_v3.falc_trace_dma_base = ((u32)pmu->trace_buf.pmu_va)/0x100;
181}
182
183static void set_pmu_cmdline_args_falctracedmaidx_v3(
184 struct pmu_gk20a *pmu, u32 idx)
185{
186 pmu->args_v3.falc_trace_dma_idx = idx;
187}
188
158static void set_pmu_cmdline_args_cpufreq_v1(struct pmu_gk20a *pmu, u32 freq) 189static void set_pmu_cmdline_args_cpufreq_v1(struct pmu_gk20a *pmu, u32 freq)
159{ 190{
160 pmu->args_v1.cpu_freq_hz = freq; 191 pmu->args_v1.cpu_freq_hz = freq;
@@ -229,6 +260,11 @@ static void set_pmu_cmdline_args_cpufreq_v0(struct pmu_gk20a *pmu, u32 freq)
229 pmu->args_v0.cpu_freq_hz = freq; 260 pmu->args_v0.cpu_freq_hz = freq;
230} 261}
231 262
263static void *get_pmu_cmdline_args_ptr_v3(struct pmu_gk20a *pmu)
264{
265 return (void *)(&pmu->args_v3);
266}
267
232static void *get_pmu_cmdline_args_ptr_v2(struct pmu_gk20a *pmu) 268static void *get_pmu_cmdline_args_ptr_v2(struct pmu_gk20a *pmu)
233{ 269{
234 return (void *)(&pmu->args_v2); 270 return (void *)(&pmu->args_v2);
@@ -661,6 +697,89 @@ int gk20a_init_pmu(struct pmu_gk20a *pmu)
661 pmu->remove_support = gk20a_remove_pmu_support; 697 pmu->remove_support = gk20a_remove_pmu_support;
662 698
663 switch (pmu->desc->app_version) { 699 switch (pmu->desc->app_version) {
700 case APP_VERSION_GM20B_4:
701 g->ops.pmu_ver.get_perfmon_cntr_ptr = get_perfmon_cntr_ptr_v2;
702 g->ops.pmu_ver.set_perfmon_cntr_ut = set_perfmon_cntr_ut_v2;
703 g->ops.pmu_ver.set_perfmon_cntr_lt = set_perfmon_cntr_lt_v2;
704 g->ops.pmu_ver.set_perfmon_cntr_valid =
705 set_perfmon_cntr_valid_v2;
706 g->ops.pmu_ver.set_perfmon_cntr_index =
707 set_perfmon_cntr_index_v2;
708 g->ops.pmu_ver.set_perfmon_cntr_group_id =
709 set_perfmon_cntr_group_id_v2;
710 g->ops.pmu_ver.get_perfmon_cntr_sz = pmu_perfmon_cntr_sz_v2;
711 g->ops.pmu_ver.cmd_id_zbc_table_update = 16;
712 g->ops.pmu_ver.get_pmu_cmdline_args_size =
713 pmu_cmdline_size_v3;
714 g->ops.pmu_ver.set_pmu_cmdline_args_cpu_freq =
715 set_pmu_cmdline_args_cpufreq_v3;
716 g->ops.pmu_ver.set_pmu_cmdline_args_secure_mode =
717 set_pmu_cmdline_args_secure_mode_v3;
718 g->ops.pmu_ver.set_pmu_cmdline_args_trace_size =
719 set_pmu_cmdline_args_falctracesize_v3;
720 g->ops.pmu_ver.set_pmu_cmdline_args_trace_dma_base =
721 set_pmu_cmdline_args_falctracedmabase_v3;
722 g->ops.pmu_ver.set_pmu_cmdline_args_trace_dma_idx =
723 set_pmu_cmdline_args_falctracedmaidx_v3;
724 g->ops.pmu_ver.get_pmu_cmdline_args_ptr =
725 get_pmu_cmdline_args_ptr_v3;
726 g->ops.pmu_ver.get_pmu_allocation_struct_size =
727 get_pmu_allocation_size_v1;
728 g->ops.pmu_ver.set_pmu_allocation_ptr =
729 set_pmu_allocation_ptr_v1;
730 g->ops.pmu_ver.pmu_allocation_set_dmem_size =
731 pmu_allocation_set_dmem_size_v1;
732 g->ops.pmu_ver.pmu_allocation_get_dmem_size =
733 pmu_allocation_get_dmem_size_v1;
734 g->ops.pmu_ver.pmu_allocation_get_dmem_offset =
735 pmu_allocation_get_dmem_offset_v1;
736 g->ops.pmu_ver.pmu_allocation_get_dmem_offset_addr =
737 pmu_allocation_get_dmem_offset_addr_v1;
738 g->ops.pmu_ver.pmu_allocation_set_dmem_offset =
739 pmu_allocation_set_dmem_offset_v1;
740 g->ops.pmu_ver.get_pmu_init_msg_pmu_queue_params =
741 get_pmu_init_msg_pmu_queue_params_v1;
742 g->ops.pmu_ver.get_pmu_msg_pmu_init_msg_ptr =
743 get_pmu_msg_pmu_init_msg_ptr_v1;
744 g->ops.pmu_ver.get_pmu_init_msg_pmu_sw_mg_off =
745 get_pmu_init_msg_pmu_sw_mg_off_v1;
746 g->ops.pmu_ver.get_pmu_init_msg_pmu_sw_mg_size =
747 get_pmu_init_msg_pmu_sw_mg_size_v1;
748 g->ops.pmu_ver.get_pmu_perfmon_cmd_start_size =
749 get_pmu_perfmon_cmd_start_size_v1;
750 g->ops.pmu_ver.get_perfmon_cmd_start_offsetofvar =
751 get_perfmon_cmd_start_offsetofvar_v1;
752 g->ops.pmu_ver.perfmon_start_set_cmd_type =
753 perfmon_start_set_cmd_type_v1;
754 g->ops.pmu_ver.perfmon_start_set_group_id =
755 perfmon_start_set_group_id_v1;
756 g->ops.pmu_ver.perfmon_start_set_state_id =
757 perfmon_start_set_state_id_v1;
758 g->ops.pmu_ver.perfmon_start_set_flags =
759 perfmon_start_set_flags_v1;
760 g->ops.pmu_ver.perfmon_start_get_flags =
761 perfmon_start_get_flags_v1;
762 g->ops.pmu_ver.get_pmu_perfmon_cmd_init_size =
763 get_pmu_perfmon_cmd_init_size_v1;
764 g->ops.pmu_ver.get_perfmon_cmd_init_offsetofvar =
765 get_perfmon_cmd_init_offsetofvar_v1;
766 g->ops.pmu_ver.perfmon_cmd_init_set_sample_buffer =
767 perfmon_cmd_init_set_sample_buffer_v1;
768 g->ops.pmu_ver.perfmon_cmd_init_set_dec_cnt =
769 perfmon_cmd_init_set_dec_cnt_v1;
770 g->ops.pmu_ver.perfmon_cmd_init_set_base_cnt_id =
771 perfmon_cmd_init_set_base_cnt_id_v1;
772 g->ops.pmu_ver.perfmon_cmd_init_set_samp_period_us =
773 perfmon_cmd_init_set_samp_period_us_v1;
774 g->ops.pmu_ver.perfmon_cmd_init_set_num_cnt =
775 perfmon_cmd_init_set_num_cnt_v1;
776 g->ops.pmu_ver.perfmon_cmd_init_set_mov_avg =
777 perfmon_cmd_init_set_mov_avg_v1;
778 g->ops.pmu_ver.get_pmu_seq_in_a_ptr =
779 get_pmu_sequence_in_alloc_ptr_v1;
780 g->ops.pmu_ver.get_pmu_seq_out_a_ptr =
781 get_pmu_sequence_out_alloc_ptr_v1;
782 break;
664 case APP_VERSION_GM20B_3: 783 case APP_VERSION_GM20B_3:
665 case APP_VERSION_GM20B_2: 784 case APP_VERSION_GM20B_2:
666 g->ops.pmu_ver.get_perfmon_cntr_ptr = get_perfmon_cntr_ptr_v2; 785 g->ops.pmu_ver.get_perfmon_cntr_ptr = get_perfmon_cntr_ptr_v2;