@@ -108,11 +108,11 @@ void gpe_24x7(ipc_msg_t* cmd, void* arg)
108
108
* [48:63] - Reserved
109
109
**/
110
110
uint64_t VERSION = 0 ;
111
- static uint64_t ver_major = 0x1 ;
111
+ static uint64_t ver_major = 0x2 ;
112
112
static uint64_t ver_minor = 0x0 ;
113
113
static uint64_t ver_bugfix = 0x0 ;
114
- static uint64_t ver_day = 0x27 ; // Day: 27
115
- static uint64_t ver_month = 0x04 ; // Month: 04
114
+ static uint64_t ver_day = 0x31 ; // Day: 27
115
+ static uint64_t ver_month = 0x05 ; // Month: 04
116
116
static uint64_t ver_year = 0x2018 ; // Year:2018
117
117
118
118
VERSION |= (ver_major << 60 );
@@ -479,6 +479,7 @@ void gpe_24x7(ipc_msg_t* cmd, void* arg)
479
479
**/
480
480
void configure_pmu (uint8_t state , uint64_t speed )
481
481
{//write the configuration SCOMs for all pmus.
482
+ uint64_t temp ;
482
483
int i ,start = (state - 1 ) * 16 ,end = state * 16 ;
483
484
static volatile uint64_t * L_conf_last = (uint64_t * ) (DBG_CONF_OFFSET | PBA_ENABLE );
484
485
static volatile uint64_t * L_DBG_0 = (uint64_t * ) (DBG_0 | PBA_ENABLE );
@@ -572,13 +573,35 @@ void configure_pmu(uint8_t state, uint64_t speed)
572
573
//1.for speeds till 8ms- 8 bit prescale
573
574
if ((speed == CNTL_SPEED_1MS )|| (speed == CNTL_SPEED_2MS )|| (speed == CNTL_SPEED_4MS )|| (speed == CNTL_SPEED_8MS ))
574
575
{
575
- putscom_abs (G_PMU_CONFIGS_8 [i ][0 ], G_PMU_CONFIGS_8 [i ][1 ]);
576
+ // Fix for defect SW430218 - 24x7 to touch only XTS Config2 bits [0:47]
577
+ if ( G_PMU_CONFIGS_8 [i ][0 ] == 0x5011645 )
578
+ {
579
+ getscom_abs (G_PMU_CONFIGS_8 [i ][0 ], & temp );
580
+ temp &= (0xFFFF );
581
+ temp |= G_PMU_CONFIGS_8 [i ][1 ];
582
+ putscom_abs (G_PMU_CONFIGS_8 [i ][0 ], temp );
583
+ }
584
+ else
585
+ {
586
+ putscom_abs (G_PMU_CONFIGS_8 [i ][0 ], G_PMU_CONFIGS_8 [i ][1 ]);
587
+ }
576
588
* L_conf_last = (uint64_t )i ;
577
589
}
578
590
//2.for all speeds above 8 ms till 2s - 16bit prescale
579
591
else
580
592
{
581
- putscom_abs (G_PMU_CONFIGS_16 [i ][0 ], G_PMU_CONFIGS_16 [i ][1 ]);
593
+ // Fix for defect SW430218 - 24x7 to touch only XTS Config2 bits [0:47]
594
+ if ( G_PMU_CONFIGS_16 [i ][0 ] == 0x5011645 )
595
+ {
596
+ getscom_abs (G_PMU_CONFIGS_16 [i ][0 ], & temp );
597
+ temp &= (0xFFFF );
598
+ temp |= G_PMU_CONFIGS_16 [i ][1 ];
599
+ putscom_abs (G_PMU_CONFIGS_16 [i ][0 ], temp );
600
+ }
601
+ else
602
+ {
603
+ putscom_abs (G_PMU_CONFIGS_16 [i ][0 ], G_PMU_CONFIGS_16 [i ][1 ]);
604
+ }
582
605
* L_conf_last = (uint64_t )i ;
583
606
}
584
607
}
@@ -594,6 +617,7 @@ void post_pmu_events(int grp)
594
617
static int L_phb_events = 0 ;
595
618
static volatile uint64_t * L_DBG_GRP = (uint64_t * ) (DBG_GRP_OFFSET | PBA_ENABLE );
596
619
static volatile uint64_t * L_DBG_UNIT = (uint64_t * ) (DBG_UNIT_OFFSET | PBA_ENABLE );
620
+ static bool L_X_A_LINKS_flag = false;
597
621
//static volatile uint64_t* L_DBG_4 = (uint64_t*) (DBG_4 | PBA_ENABLE);
598
622
//static volatile uint64_t* L_DBG_5 = (uint64_t*) (DBG_5 | PBA_ENABLE);
599
623
//static volatile uint64_t* L_DBG_6 = (uint64_t*) (DBG_6 | PBA_ENABLE);
@@ -658,7 +682,11 @@ void post_pmu_events(int grp)
658
682
post_addr = (uint64_t * ) (POST_OFFSET_DBG1T | PBA_ENABLE );
659
683
* post_addr = INC_UPD_COUNT ;
660
684
break ;
661
- case G2 ://XLINKS and NX. Read scoms based on availability.
685
+ case G2 ://XLINKS,NX and ALINKS. Read scoms based on availability.
686
+ if (L_X_A_LINKS_flag ) //Here do xlink-[0:2] and nx
687
+ {
688
+ L_X_A_LINKS_flag = false;
689
+
662
690
* L_DBG_GRP = 2 ;
663
691
post_addr = (uint64_t * ) (POST_OFFSET_G2H | PBA_ENABLE );
664
692
putscom_abs (PBASLVCTL3_C0040030 , PBASLV_SET_ATOMIC );
@@ -742,6 +770,89 @@ void post_pmu_events(int grp)
742
770
}
743
771
post_addr = (uint64_t * ) (POST_OFFSET_G2T | PBA_ENABLE );
744
772
* post_addr = INC_UPD_COUNT ;
773
+ }
774
+ else //Here do alink [0:3]
775
+ {
776
+ L_X_A_LINKS_flag = true;
777
+
778
+ if ((G_CUR_UAV & MASK_ALNK0 ) > 0 )
779
+ {
780
+ putscom_abs (PBASLVCTL3_C0040030 , PBASLV_SET_DMA );
781
+ * L_DBG_UNIT = 1 ;
782
+ post_addr = (uint64_t * ) (POST_OFFSET_G2_A0 | PBA_ENABLE );
783
+ putscom_abs (PBASLVCTL3_C0040030 , PBASLV_SET_ATOMIC );
784
+ getscom_abs (G_PMULETS_2_2a [0 ], & u3 .pmulet );
785
+ for (j = 0 ; j < 4 ; j ++ )
786
+ {
787
+ * post_addr = (uint64_t )u3 .ev .e [j ];
788
+ post_addr ++ ;
789
+ }
790
+ getscom_abs (G_PMULETS_2_2a [1 ], & u3 .pmulet );
791
+ for (j = 0 ; j < 4 ; j ++ )
792
+ {
793
+ * post_addr = (uint64_t )u3 .ev .e [j ];
794
+ post_addr ++ ;
795
+ }
796
+ }
797
+ if ((G_CUR_UAV & MASK_ALNK1 ) > 0 )
798
+ {
799
+ putscom_abs (PBASLVCTL3_C0040030 , PBASLV_SET_DMA );
800
+ * L_DBG_UNIT = 1 ;
801
+ post_addr = (uint64_t * ) (POST_OFFSET_G2_A1 | PBA_ENABLE );
802
+ putscom_abs (PBASLVCTL3_C0040030 , PBASLV_SET_ATOMIC );
803
+ getscom_abs (G_PMULETS_2_2b [0 ], & u3 .pmulet );
804
+ for (j = 0 ; j < 4 ; j ++ )
805
+ {
806
+ * post_addr = (uint64_t )u3 .ev .e [j ];
807
+ post_addr ++ ;
808
+ }
809
+ getscom_abs (G_PMULETS_2_2b [1 ], & u3 .pmulet );
810
+ for (j = 0 ; j < 4 ; j ++ )
811
+ {
812
+ * post_addr = (uint64_t )u3 .ev .e [j ];
813
+ post_addr ++ ;
814
+ }
815
+ }
816
+
817
+ if ((G_CUR_UAV & MASK_ALNK2 ) > 0 )
818
+ {
819
+ putscom_abs (PBASLVCTL3_C0040030 , PBASLV_SET_DMA );
820
+ * L_DBG_UNIT = 1 ;
821
+ post_addr = (uint64_t * ) (POST_OFFSET_G2_A2 | PBA_ENABLE );
822
+ putscom_abs (PBASLVCTL3_C0040030 , PBASLV_SET_ATOMIC );
823
+ getscom_abs (G_PMULETS_2_2c [0 ], & u3 .pmulet );
824
+ for (j = 0 ; j < 4 ; j ++ )
825
+ {
826
+ * post_addr = (uint64_t )u3 .ev .e [j ];
827
+ post_addr ++ ;
828
+ }
829
+ getscom_abs (G_PMULETS_2_2c [1 ], & u3 .pmulet );
830
+ for (j = 0 ; j < 4 ; j ++ )
831
+ {
832
+ * post_addr = (uint64_t )u3 .ev .e [j ];
833
+ post_addr ++ ;
834
+ }
835
+ }
836
+ if ((G_CUR_UAV & MASK_ALNK3 ) > 0 )
837
+ {
838
+ putscom_abs (PBASLVCTL3_C0040030 , PBASLV_SET_DMA );
839
+ * L_DBG_UNIT = 1 ;
840
+ post_addr = (uint64_t * ) (POST_OFFSET_G2_A3 | PBA_ENABLE );
841
+ putscom_abs (PBASLVCTL3_C0040030 , PBASLV_SET_ATOMIC );
842
+ getscom_abs (G_PMULETS_2_2d [0 ], & u3 .pmulet );
843
+ for (j = 0 ; j < 4 ; j ++ )
844
+ {
845
+ * post_addr = (uint64_t )u3 .ev .e [j ];
846
+ post_addr ++ ;
847
+ }
848
+ getscom_abs (G_PMULETS_2_2d [1 ], & u3 .pmulet );
849
+ for (j = 0 ; j < 4 ; j ++ )
850
+ {
851
+ * post_addr = (uint64_t )u3 .ev .e [j ];
852
+ post_addr ++ ;
853
+ }
854
+ }
855
+ }
745
856
break ;
746
857
case G3 ://NVLINKS -NTL,ATS,XTS
747
858
* L_DBG_GRP = 3 ;
0 commit comments