summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c
diff options
context:
space:
mode:
authorMahantesh Kumbar <mkumbar@nvidia.com>2015-09-15 19:31:07 -0400
committerTerje Bergstrom <tbergstrom@nvidia.com>2015-09-30 11:26:16 -0400
commit1372ec4df256978ebef8a87619290f994b127c6d (patch)
tree997b7b6e06862b742a679d3268646239ba33c898 /drivers/gpu/nvgpu/gk20a/pmu_gk20a.c
parentbb9f2219860c817d2d137c707e68139e67d991df (diff)
gpu: nvgpu: interface update to sync CL #19870492
- pg statistics update - perfmon update - ADD GR inti params interface to enable ELPG Bug n/a Change-Id: I39ae1d4518733480a42f06a0be7bd794fc93ff6f Signed-off-by: Mahantesh Kumbar <mkumbar@nvidia.com> Reviewed-on: http://git-master/r/799684 GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-on: http://git-master/r/806176 Tested-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/pmu_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/pmu_gk20a.c143
1 files changed, 127 insertions, 16 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c b/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c
index 110f3c5a..7cc248fa 100644
--- a/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c
@@ -522,6 +522,11 @@ static u16 get_pmu_init_msg_pmu_sw_mg_size_v0(union pmu_init_msg_pmu *init_msg)
522 return init->sw_managed_area_size; 522 return init->sw_managed_area_size;
523} 523}
524 524
525static u32 get_pmu_perfmon_cmd_start_size_v2(void)
526{
527 return sizeof(struct pmu_perfmon_cmd_start_v2);
528}
529
525static u32 get_pmu_perfmon_cmd_start_size_v1(void) 530static u32 get_pmu_perfmon_cmd_start_size_v1(void)
526{ 531{
527 return sizeof(struct pmu_perfmon_cmd_start_v1); 532 return sizeof(struct pmu_perfmon_cmd_start_v1);
@@ -532,6 +537,20 @@ static u32 get_pmu_perfmon_cmd_start_size_v0(void)
532 return sizeof(struct pmu_perfmon_cmd_start_v0); 537 return sizeof(struct pmu_perfmon_cmd_start_v0);
533} 538}
534 539
540static int get_perfmon_cmd_start_offsetofvar_v2(
541 enum pmu_perfmon_cmd_start_fields field)
542{
543 switch (field) {
544 case COUNTER_ALLOC:
545 return offsetof(struct pmu_perfmon_cmd_start_v2,
546 counter_alloc);
547 default:
548 return -EINVAL;
549 }
550
551 return 0;
552}
553
535static int get_perfmon_cmd_start_offsetofvar_v1( 554static int get_perfmon_cmd_start_offsetofvar_v1(
536 enum pmu_perfmon_cmd_start_fields field) 555 enum pmu_perfmon_cmd_start_fields field)
537{ 556{
@@ -541,8 +560,8 @@ static int get_perfmon_cmd_start_offsetofvar_v1(
541 counter_alloc); 560 counter_alloc);
542 default: 561 default:
543 return -EINVAL; 562 return -EINVAL;
544 break;
545 } 563 }
564
546 return 0; 565 return 0;
547} 566}
548 567
@@ -560,6 +579,11 @@ static int get_perfmon_cmd_start_offsetofvar_v0(
560 return 0; 579 return 0;
561} 580}
562 581
582static u32 get_pmu_perfmon_cmd_init_size_v2(void)
583{
584 return sizeof(struct pmu_perfmon_cmd_init_v2);
585}
586
563static u32 get_pmu_perfmon_cmd_init_size_v1(void) 587static u32 get_pmu_perfmon_cmd_init_size_v1(void)
564{ 588{
565 return sizeof(struct pmu_perfmon_cmd_init_v1); 589 return sizeof(struct pmu_perfmon_cmd_init_v1);
@@ -570,6 +594,20 @@ static u32 get_pmu_perfmon_cmd_init_size_v0(void)
570 return sizeof(struct pmu_perfmon_cmd_init_v0); 594 return sizeof(struct pmu_perfmon_cmd_init_v0);
571} 595}
572 596
597static int get_perfmon_cmd_init_offsetofvar_v2(
598 enum pmu_perfmon_cmd_start_fields field)
599{
600 switch (field) {
601 case COUNTER_ALLOC:
602 return offsetof(struct pmu_perfmon_cmd_init_v2,
603 counter_alloc);
604 default:
605 return -EINVAL;
606 break;
607 }
608 return 0;
609}
610
573static int get_perfmon_cmd_init_offsetofvar_v1( 611static int get_perfmon_cmd_init_offsetofvar_v1(
574 enum pmu_perfmon_cmd_start_fields field) 612 enum pmu_perfmon_cmd_start_fields field)
575{ 613{
@@ -598,6 +636,12 @@ static int get_perfmon_cmd_init_offsetofvar_v0(
598 return 0; 636 return 0;
599} 637}
600 638
639static void perfmon_start_set_cmd_type_v2(struct pmu_perfmon_cmd *pc, u8 value)
640{
641 struct pmu_perfmon_cmd_start_v2 *start = &pc->start_v2;
642 start->cmd_type = value;
643}
644
601static void perfmon_start_set_cmd_type_v1(struct pmu_perfmon_cmd *pc, u8 value) 645static void perfmon_start_set_cmd_type_v1(struct pmu_perfmon_cmd *pc, u8 value)
602{ 646{
603 struct pmu_perfmon_cmd_start_v1 *start = &pc->start_v1; 647 struct pmu_perfmon_cmd_start_v1 *start = &pc->start_v1;
@@ -610,6 +654,12 @@ static void perfmon_start_set_cmd_type_v0(struct pmu_perfmon_cmd *pc, u8 value)
610 start->cmd_type = value; 654 start->cmd_type = value;
611} 655}
612 656
657static void perfmon_start_set_group_id_v2(struct pmu_perfmon_cmd *pc, u8 value)
658{
659 struct pmu_perfmon_cmd_start_v2 *start = &pc->start_v2;
660 start->group_id = value;
661}
662
613static void perfmon_start_set_group_id_v1(struct pmu_perfmon_cmd *pc, u8 value) 663static void perfmon_start_set_group_id_v1(struct pmu_perfmon_cmd *pc, u8 value)
614{ 664{
615 struct pmu_perfmon_cmd_start_v1 *start = &pc->start_v1; 665 struct pmu_perfmon_cmd_start_v1 *start = &pc->start_v1;
@@ -622,6 +672,12 @@ static void perfmon_start_set_group_id_v0(struct pmu_perfmon_cmd *pc, u8 value)
622 start->group_id = value; 672 start->group_id = value;
623} 673}
624 674
675static void perfmon_start_set_state_id_v2(struct pmu_perfmon_cmd *pc, u8 value)
676{
677 struct pmu_perfmon_cmd_start_v2 *start = &pc->start_v2;
678 start->state_id = value;
679}
680
625static void perfmon_start_set_state_id_v1(struct pmu_perfmon_cmd *pc, u8 value) 681static void perfmon_start_set_state_id_v1(struct pmu_perfmon_cmd *pc, u8 value)
626{ 682{
627 struct pmu_perfmon_cmd_start_v1 *start = &pc->start_v1; 683 struct pmu_perfmon_cmd_start_v1 *start = &pc->start_v1;
@@ -634,6 +690,12 @@ static void perfmon_start_set_state_id_v0(struct pmu_perfmon_cmd *pc, u8 value)
634 start->state_id = value; 690 start->state_id = value;
635} 691}
636 692
693static void perfmon_start_set_flags_v2(struct pmu_perfmon_cmd *pc, u8 value)
694{
695 struct pmu_perfmon_cmd_start_v2 *start = &pc->start_v2;
696 start->flags = value;
697}
698
637static void perfmon_start_set_flags_v1(struct pmu_perfmon_cmd *pc, u8 value) 699static void perfmon_start_set_flags_v1(struct pmu_perfmon_cmd *pc, u8 value)
638{ 700{
639 struct pmu_perfmon_cmd_start_v1 *start = &pc->start_v1; 701 struct pmu_perfmon_cmd_start_v1 *start = &pc->start_v1;
@@ -646,6 +708,12 @@ static void perfmon_start_set_flags_v0(struct pmu_perfmon_cmd *pc, u8 value)
646 start->flags = value; 708 start->flags = value;
647} 709}
648 710
711static u8 perfmon_start_get_flags_v2(struct pmu_perfmon_cmd *pc)
712{
713 struct pmu_perfmon_cmd_start_v2 *start = &pc->start_v2;
714 return start->flags;
715}
716
649static u8 perfmon_start_get_flags_v1(struct pmu_perfmon_cmd *pc) 717static u8 perfmon_start_get_flags_v1(struct pmu_perfmon_cmd *pc)
650{ 718{
651 struct pmu_perfmon_cmd_start_v1 *start = &pc->start_v1; 719 struct pmu_perfmon_cmd_start_v1 *start = &pc->start_v1;
@@ -658,6 +726,14 @@ static u8 perfmon_start_get_flags_v0(struct pmu_perfmon_cmd *pc)
658 return start->flags; 726 return start->flags;
659} 727}
660 728
729static void perfmon_cmd_init_set_sample_buffer_v2(struct pmu_perfmon_cmd *pc,
730 u16 value)
731{
732 struct pmu_perfmon_cmd_init_v2 *init = &pc->init_v2;
733 init->sample_buffer = value;
734}
735
736
661static void perfmon_cmd_init_set_sample_buffer_v1(struct pmu_perfmon_cmd *pc, 737static void perfmon_cmd_init_set_sample_buffer_v1(struct pmu_perfmon_cmd *pc,
662 u16 value) 738 u16 value)
663{ 739{
@@ -672,6 +748,13 @@ static void perfmon_cmd_init_set_sample_buffer_v0(struct pmu_perfmon_cmd *pc,
672 init->sample_buffer = value; 748 init->sample_buffer = value;
673} 749}
674 750
751static void perfmon_cmd_init_set_dec_cnt_v2(struct pmu_perfmon_cmd *pc,
752 u8 value)
753{
754 struct pmu_perfmon_cmd_init_v2 *init = &pc->init_v2;
755 init->to_decrease_count = value;
756}
757
675static void perfmon_cmd_init_set_dec_cnt_v1(struct pmu_perfmon_cmd *pc, 758static void perfmon_cmd_init_set_dec_cnt_v1(struct pmu_perfmon_cmd *pc,
676 u8 value) 759 u8 value)
677{ 760{
@@ -686,6 +769,13 @@ static void perfmon_cmd_init_set_dec_cnt_v0(struct pmu_perfmon_cmd *pc,
686 init->to_decrease_count = value; 769 init->to_decrease_count = value;
687} 770}
688 771
772static void perfmon_cmd_init_set_base_cnt_id_v2(struct pmu_perfmon_cmd *pc,
773 u8 value)
774{
775 struct pmu_perfmon_cmd_init_v2 *init = &pc->init_v2;
776 init->base_counter_id = value;
777}
778
689static void perfmon_cmd_init_set_base_cnt_id_v1(struct pmu_perfmon_cmd *pc, 779static void perfmon_cmd_init_set_base_cnt_id_v1(struct pmu_perfmon_cmd *pc,
690 u8 value) 780 u8 value)
691{ 781{
@@ -700,6 +790,13 @@ static void perfmon_cmd_init_set_base_cnt_id_v0(struct pmu_perfmon_cmd *pc,
700 init->base_counter_id = value; 790 init->base_counter_id = value;
701} 791}
702 792
793static void perfmon_cmd_init_set_samp_period_us_v2(struct pmu_perfmon_cmd *pc,
794 u32 value)
795{
796 struct pmu_perfmon_cmd_init_v2 *init = &pc->init_v2;
797 init->sample_period_us = value;
798}
799
703static void perfmon_cmd_init_set_samp_period_us_v1(struct pmu_perfmon_cmd *pc, 800static void perfmon_cmd_init_set_samp_period_us_v1(struct pmu_perfmon_cmd *pc,
704 u32 value) 801 u32 value)
705{ 802{
@@ -714,6 +811,13 @@ static void perfmon_cmd_init_set_samp_period_us_v0(struct pmu_perfmon_cmd *pc,
714 init->sample_period_us = value; 811 init->sample_period_us = value;
715} 812}
716 813
814static void perfmon_cmd_init_set_num_cnt_v2(struct pmu_perfmon_cmd *pc,
815 u8 value)
816{
817 struct pmu_perfmon_cmd_init_v2 *init = &pc->init_v2;
818 init->num_counters = value;
819}
820
717static void perfmon_cmd_init_set_num_cnt_v1(struct pmu_perfmon_cmd *pc, 821static void perfmon_cmd_init_set_num_cnt_v1(struct pmu_perfmon_cmd *pc,
718 u8 value) 822 u8 value)
719{ 823{
@@ -728,6 +832,13 @@ static void perfmon_cmd_init_set_num_cnt_v0(struct pmu_perfmon_cmd *pc,
728 init->num_counters = value; 832 init->num_counters = value;
729} 833}
730 834
835static void perfmon_cmd_init_set_mov_avg_v2(struct pmu_perfmon_cmd *pc,
836 u8 value)
837{
838 struct pmu_perfmon_cmd_init_v2 *init = &pc->init_v2;
839 init->samples_in_moving_avg = value;
840}
841
731static void perfmon_cmd_init_set_mov_avg_v1(struct pmu_perfmon_cmd *pc, 842static void perfmon_cmd_init_set_mov_avg_v1(struct pmu_perfmon_cmd *pc,
732 u8 value) 843 u8 value)
733{ 844{
@@ -961,35 +1072,35 @@ int gk20a_init_pmu(struct pmu_gk20a *pmu)
961 g->ops.pmu_ver.get_pmu_init_msg_pmu_sw_mg_size = 1072 g->ops.pmu_ver.get_pmu_init_msg_pmu_sw_mg_size =
962 get_pmu_init_msg_pmu_sw_mg_size_v1; 1073 get_pmu_init_msg_pmu_sw_mg_size_v1;
963 g->ops.pmu_ver.get_pmu_perfmon_cmd_start_size = 1074 g->ops.pmu_ver.get_pmu_perfmon_cmd_start_size =
964 get_pmu_perfmon_cmd_start_size_v1; 1075 get_pmu_perfmon_cmd_start_size_v2;
965 g->ops.pmu_ver.get_perfmon_cmd_start_offsetofvar = 1076 g->ops.pmu_ver.get_perfmon_cmd_start_offsetofvar =
966 get_perfmon_cmd_start_offsetofvar_v1; 1077 get_perfmon_cmd_start_offsetofvar_v2;
967 g->ops.pmu_ver.perfmon_start_set_cmd_type = 1078 g->ops.pmu_ver.perfmon_start_set_cmd_type =
968 perfmon_start_set_cmd_type_v1; 1079 perfmon_start_set_cmd_type_v2;
969 g->ops.pmu_ver.perfmon_start_set_group_id = 1080 g->ops.pmu_ver.perfmon_start_set_group_id =
970 perfmon_start_set_group_id_v1; 1081 perfmon_start_set_group_id_v2;
971 g->ops.pmu_ver.perfmon_start_set_state_id = 1082 g->ops.pmu_ver.perfmon_start_set_state_id =
972 perfmon_start_set_state_id_v1; 1083 perfmon_start_set_state_id_v2;
973 g->ops.pmu_ver.perfmon_start_set_flags = 1084 g->ops.pmu_ver.perfmon_start_set_flags =
974 perfmon_start_set_flags_v1; 1085 perfmon_start_set_flags_v2;
975 g->ops.pmu_ver.perfmon_start_get_flags = 1086 g->ops.pmu_ver.perfmon_start_get_flags =
976 perfmon_start_get_flags_v1; 1087 perfmon_start_get_flags_v2;
977 g->ops.pmu_ver.get_pmu_perfmon_cmd_init_size = 1088 g->ops.pmu_ver.get_pmu_perfmon_cmd_init_size =
978 get_pmu_perfmon_cmd_init_size_v1; 1089 get_pmu_perfmon_cmd_init_size_v2;
979 g->ops.pmu_ver.get_perfmon_cmd_init_offsetofvar = 1090 g->ops.pmu_ver.get_perfmon_cmd_init_offsetofvar =
980 get_perfmon_cmd_init_offsetofvar_v1; 1091 get_perfmon_cmd_init_offsetofvar_v2;
981 g->ops.pmu_ver.perfmon_cmd_init_set_sample_buffer = 1092 g->ops.pmu_ver.perfmon_cmd_init_set_sample_buffer =
982 perfmon_cmd_init_set_sample_buffer_v1; 1093 perfmon_cmd_init_set_sample_buffer_v2;
983 g->ops.pmu_ver.perfmon_cmd_init_set_dec_cnt = 1094 g->ops.pmu_ver.perfmon_cmd_init_set_dec_cnt =
984 perfmon_cmd_init_set_dec_cnt_v1; 1095 perfmon_cmd_init_set_dec_cnt_v2;
985 g->ops.pmu_ver.perfmon_cmd_init_set_base_cnt_id = 1096 g->ops.pmu_ver.perfmon_cmd_init_set_base_cnt_id =
986 perfmon_cmd_init_set_base_cnt_id_v1; 1097 perfmon_cmd_init_set_base_cnt_id_v2;
987 g->ops.pmu_ver.perfmon_cmd_init_set_samp_period_us = 1098 g->ops.pmu_ver.perfmon_cmd_init_set_samp_period_us =
988 perfmon_cmd_init_set_samp_period_us_v1; 1099 perfmon_cmd_init_set_samp_period_us_v2;
989 g->ops.pmu_ver.perfmon_cmd_init_set_num_cnt = 1100 g->ops.pmu_ver.perfmon_cmd_init_set_num_cnt =
990 perfmon_cmd_init_set_num_cnt_v1; 1101 perfmon_cmd_init_set_num_cnt_v2;
991 g->ops.pmu_ver.perfmon_cmd_init_set_mov_avg = 1102 g->ops.pmu_ver.perfmon_cmd_init_set_mov_avg =
992 perfmon_cmd_init_set_mov_avg_v1; 1103 perfmon_cmd_init_set_mov_avg_v2;
993 g->ops.pmu_ver.get_pmu_seq_in_a_ptr = 1104 g->ops.pmu_ver.get_pmu_seq_in_a_ptr =
994 get_pmu_sequence_in_alloc_ptr_v1; 1105 get_pmu_sequence_in_alloc_ptr_v1;
995 g->ops.pmu_ver.get_pmu_seq_out_a_ptr = 1106 g->ops.pmu_ver.get_pmu_seq_out_a_ptr =