5
5
// Copyright (C) 2023 Synopsys, Inc. (www.synopsys.com)
6
6
//
7
7
// Note: use perf with a key "-a" means system-wide collection from all CPUs
8
- // to work with cluster PMU
8
+ // to work with cluster PMU
9
9
10
10
#include <linux/errno.h>
11
11
#include <linux/interrupt.h>
@@ -66,7 +66,7 @@ static void arc_cluster_pmu_write_reg(unsigned int reg, void *data)
66
66
/* read counter #idx; note that counter# != event# on ARC cluster! */
67
67
static u64 arc_cluster_pmu_read_counter (int idx )
68
68
{
69
- struct cpct_snap snapL , snapH ;
69
+ struct cpct_snap snapL , snapH ;
70
70
struct cpct_n_config cfg ;
71
71
u64 result ;
72
72
int number ;
@@ -78,15 +78,15 @@ static u64 arc_cluster_pmu_read_counter(int idx)
78
78
* ARC cluster supports making 'snapshots' of the counters, so we don't
79
79
* need to care about counters wrapping to 0 underneath our feet
80
80
*/
81
- number = 8 * idx ; // select counter, 0..31
81
+ number = 8 * idx ; // select counter, 0..31
82
82
83
83
arc_cluster_pmu_read_reg (SCM_AUX_CPCT_N_CONFIG + number , & cfg );
84
- cfg .lsn = 1 ; /* take snapshot */
84
+ cfg .lsn = 1 ; /* take snapshot */
85
85
arc_cluster_pmu_write_reg (SCM_AUX_CPCT_N_CONFIG + number , & cfg );
86
86
87
87
arc_cluster_pmu_read_reg (SCM_AUX_CPCT_N_SNAPH + number , & snapH );
88
- arc_cluster_pmu_read_reg (SCM_AUX_CPCT_N_SNAPL + number , & snapL );
89
- result = ((u64 )snapH .snap << 32ULL ) | (u64 )snapL .snap ;
88
+ arc_cluster_pmu_read_reg (SCM_AUX_CPCT_N_SNAPL + number , & snapL );
89
+ result = ((u64 )snapH .snap << 32ULL ) | (u64 )snapL .snap ;
90
90
return result ;
91
91
}
92
92
@@ -519,86 +519,86 @@ static void arc_cluster_pmu_raw_free(struct device *dev)
519
519
520
520
static int arc_cluster_pmu_is_present (void )
521
521
{
522
- struct cpct_build bld ;
523
- arc_cluster_pmu_read_reg (SCM_AUX_CPCT_BUILD , & bld );
524
- return bld .ver ;
522
+ struct cpct_build bld ;
523
+ arc_cluster_pmu_read_reg (SCM_AUX_CPCT_BUILD , & bld );
524
+ return bld .ver ;
525
525
}
526
526
527
527
static int arc_cluster_pmu_get_n_counters (void )
528
528
{
529
- struct cpct_build bld ;
530
- arc_cluster_pmu_read_reg (SCM_AUX_CPCT_BUILD , & bld );
531
- return bld .num_ctrs ;
529
+ struct cpct_build bld ;
530
+ arc_cluster_pmu_read_reg (SCM_AUX_CPCT_BUILD , & bld );
531
+ return bld .num_ctrs ;
532
532
}
533
533
534
534
static int arc_cluster_pmu_has_interrupt (void )
535
535
{
536
- struct cpct_build bld ;
537
- arc_cluster_pmu_read_reg (SCM_AUX_CPCT_BUILD , & bld );
538
- return bld .i ;
536
+ struct cpct_build bld ;
537
+ arc_cluster_pmu_read_reg (SCM_AUX_CPCT_BUILD , & bld );
538
+ return bld .i ;
539
539
}
540
540
541
541
static int arc_cluster_pmu_get_cnt_bits (void )
542
542
{
543
- struct cpct_build bld ;
544
- arc_cluster_pmu_read_reg (SCM_AUX_CPCT_BUILD , & bld );
545
- return 32 + 16 * bld .cs ;
543
+ struct cpct_build bld ;
544
+ arc_cluster_pmu_read_reg (SCM_AUX_CPCT_BUILD , & bld );
545
+ return 32 + 16 * bld .cs ;
546
546
}
547
547
548
548
static int arc_cluster_pmu_get_events_number (void )
549
549
{
550
- int ii ;
551
- struct cpct_cc_num cc_num ;
552
- union cpct_cc_name name ;
553
- int n_actual_conditions = 0 ;
554
-
555
- name .cc [CPCT_NAME_SZ - 1 ] = 0 ;
556
- for (ii = 0 ; ii < MAX_CONDITIONS_NUMBER ; ii ++ ) {
557
- cc_num .cc_num = ii ;
558
- cc_num .res = 0 ; /* recomended to write with 0 */
559
- arc_cluster_pmu_write_reg (SCM_AUX_CPCT_CC_NUM , & cc_num );
560
- arc_cluster_pmu_read_reg (SCM_AUX_CPCT_CC_NAME0 , & name .uu [0 ]);
561
- arc_cluster_pmu_read_reg (SCM_AUX_CPCT_CC_NAME1 , & name .uu [1 ]);
562
- arc_cluster_pmu_read_reg (SCM_AUX_CPCT_CC_NAME2 , & name .uu [2 ]);
563
- arc_cluster_pmu_read_reg (SCM_AUX_CPCT_CC_NAME3 , & name .uu [3 ]);
564
- if (strlen (name .cc ) == 0 ) {
565
- continue ;
566
- }
567
- n_actual_conditions ++ ;
568
- }
569
- return n_actual_conditions ;
550
+ int ii ;
551
+ struct cpct_cc_num cc_num ;
552
+ union cpct_cc_name name ;
553
+ int n_actual_conditions = 0 ;
554
+
555
+ name .cc [CPCT_NAME_SZ - 1 ] = 0 ;
556
+ for (ii = 0 ; ii < MAX_CONDITIONS_NUMBER ; ii ++ ) {
557
+ cc_num .cc_num = ii ;
558
+ cc_num .res = 0 ; /* recomended to write with 0 */
559
+ arc_cluster_pmu_write_reg (SCM_AUX_CPCT_CC_NUM , & cc_num );
560
+ arc_cluster_pmu_read_reg (SCM_AUX_CPCT_CC_NAME0 , & name .uu [0 ]);
561
+ arc_cluster_pmu_read_reg (SCM_AUX_CPCT_CC_NAME1 , & name .uu [1 ]);
562
+ arc_cluster_pmu_read_reg (SCM_AUX_CPCT_CC_NAME2 , & name .uu [2 ]);
563
+ arc_cluster_pmu_read_reg (SCM_AUX_CPCT_CC_NAME3 , & name .uu [3 ]);
564
+ if (strlen (name .cc ) == 0 ) {
565
+ continue ;
566
+ }
567
+ n_actual_conditions ++ ;
568
+ }
569
+ return n_actual_conditions ;
570
570
}
571
571
572
572
static int arc_cluster_pmu_fill_events (void )
573
573
{
574
- int ii ;
575
- struct cpct_cc_num cc_num ;
576
- union cpct_cc_name name ;
577
- int n_actual_conditions = 0 ;
578
-
579
- name .cc [CPCT_NAME_SZ - 1 ] = 0 ;
580
- for (ii = 0 ; ii < MAX_CONDITIONS_NUMBER ; ii ++ ) {
581
- cc_num .cc_num = ii ;
582
- cc_num .res = 0 ; /* recomended to write with 0 */
583
- arc_cluster_pmu_write_reg (SCM_AUX_CPCT_CC_NUM , & cc_num );
584
- arc_cluster_pmu_read_reg (SCM_AUX_CPCT_CC_NAME0 , & name .uu [0 ]);
585
- arc_cluster_pmu_read_reg (SCM_AUX_CPCT_CC_NAME1 , & name .uu [1 ]);
586
- arc_cluster_pmu_read_reg (SCM_AUX_CPCT_CC_NAME2 , & name .uu [2 ]);
587
- arc_cluster_pmu_read_reg (SCM_AUX_CPCT_CC_NAME3 , & name .uu [3 ]);
588
- if (strlen (name .cc ) == 0 ) {
589
- continue ;
590
- }
574
+ int ii ;
575
+ struct cpct_cc_num cc_num ;
576
+ union cpct_cc_name name ;
577
+ int n_actual_conditions = 0 ;
578
+
579
+ name .cc [CPCT_NAME_SZ - 1 ] = 0 ;
580
+ for (ii = 0 ; ii < MAX_CONDITIONS_NUMBER ; ii ++ ) {
581
+ cc_num .cc_num = ii ;
582
+ cc_num .res = 0 ; /* recomended to write with 0 */
583
+ arc_cluster_pmu_write_reg (SCM_AUX_CPCT_CC_NUM , & cc_num );
584
+ arc_cluster_pmu_read_reg (SCM_AUX_CPCT_CC_NAME0 , & name .uu [0 ]);
585
+ arc_cluster_pmu_read_reg (SCM_AUX_CPCT_CC_NAME1 , & name .uu [1 ]);
586
+ arc_cluster_pmu_read_reg (SCM_AUX_CPCT_CC_NAME2 , & name .uu [2 ]);
587
+ arc_cluster_pmu_read_reg (SCM_AUX_CPCT_CC_NAME3 , & name .uu [3 ]);
588
+ if (strlen (name .cc ) == 0 ) {
589
+ continue ;
590
+ }
591
591
592
592
arc_cluster_pmu -> raw_entry [n_actual_conditions ].cc_number = ii ;
593
- strcpy (arc_cluster_pmu -> raw_entry [n_actual_conditions ].name .cc , name .cc );
593
+ strcpy (arc_cluster_pmu -> raw_entry [n_actual_conditions ].name .cc , name .cc );
594
594
595
- n_actual_conditions ++ ;
595
+ n_actual_conditions ++ ;
596
596
if (n_actual_conditions >= arc_cluster_pmu -> n_events ) {
597
597
break ;
598
598
}
599
- }
599
+ }
600
600
601
- return n_actual_conditions ;
601
+ return n_actual_conditions ;
602
602
}
603
603
604
604
//------------------------------------------------------------
@@ -842,7 +842,7 @@ static struct platform_driver arc_cluster_pmu_driver = {
842
842
.name = "ARCv3-cluster-PMU" ,
843
843
.of_match_table = of_match_ptr (arc_cluster_pmu_match ),
844
844
},
845
- .probe = arc_cluster_pmu_device_probe ,
845
+ .probe = arc_cluster_pmu_device_probe ,
846
846
};
847
847
848
848
module_platform_driver (arc_cluster_pmu_driver );
0 commit comments