1313
1414#include "cmucal.h"
1515#include "fvmap.h"
16- #include "gpu_dvfs_overrides.h"
1716#include "ra.h"
1817#include "vclk.h"
1918
@@ -27,41 +26,6 @@ static int init_margin_table[MAX_MARGIN_ID];
2726static int volt_offset_percent = 0 ;
2827static int percent_margin_table [MAX_MARGIN_ID ];
2928
30- #define G3D_MANUAL_RATE (_mhz , _uv ) {.rate = (_mhz) * 1000U, .volt = (_uv)}
31-
32- static const struct rate_volt g3d_manual_ratevolt [] = {
33- G3D_MANUAL_RATE (1222 , 900000 ),
34- G3D_MANUAL_RATE (1066 , 875000 ),
35- G3D_MANUAL_RATE (962 , 850000 ),
36- G3D_MANUAL_RATE (845 , 825000 ),
37- G3D_MANUAL_RATE (754 , 800000 ),
38- G3D_MANUAL_RATE (702 , 775000 ),
39- G3D_MANUAL_RATE (650 , 750000 ),
40- G3D_MANUAL_RATE (572 , 725000 ),
41- G3D_MANUAL_RATE (433 , 700000 ),
42- G3D_MANUAL_RATE (377 , 675000 ),
43- G3D_MANUAL_RATE (325 , 650000 ),
44- G3D_MANUAL_RATE (260 , 625000 ),
45- G3D_MANUAL_RATE (200 , 600000 ),
46- G3D_MANUAL_RATE (156 , 575000 ),
47- G3D_MANUAL_RATE (100 , 550000 ),
48- };
49-
50- static size_t
51- fvmap_ratevolt_capacity (const volatile struct fvmap_header * header ) {
52- size_t capacity = header -> num_of_lv ;
53-
54- if (header -> o_tables > header -> o_ratevolt ) {
55- size_t ratevolt_capacity =
56- (header -> o_tables - header -> o_ratevolt ) / sizeof (struct rate_volt );
57-
58- if (ratevolt_capacity && ratevolt_capacity < capacity )
59- capacity = ratevolt_capacity ;
60- }
61-
62- return capacity ;
63- }
64-
6529static size_t
6630fvmap_calculate_initial_usage (const volatile struct fvmap_header * header ,
6731 int num_of_vclks ) {
@@ -86,35 +50,6 @@ fvmap_calculate_initial_usage(const volatile struct fvmap_header *header,
8650 return ALIGN (max_offset , sizeof (u32 ));
8751}
8852
89- static void fvmap_apply_gpu_manual_table (volatile struct fvmap_header * header ,
90- struct rate_volt_header * rate_table ,
91- struct vclk * vclk ) {
92- size_t manual_count = ARRAY_SIZE (g3d_manual_ratevolt );
93- size_t capacity = fvmap_ratevolt_capacity (header );
94- size_t idx ;
95-
96- if (capacity < manual_count ) {
97- pr_warn (" G3D manual table truncated to %zu entries (capacity %zu)\n" ,
98- capacity , manual_count );
99- manual_count = capacity ;
100- }
101-
102- if (!manual_count )
103- return ;
104-
105- memcpy (rate_table -> table , g3d_manual_ratevolt ,
106- manual_count * sizeof (struct rate_volt ));
107- header -> num_of_lv = manual_count ;
108-
109- if (vclk && vclk -> lut && vclk -> num_rates < manual_count )
110- vclk -> num_rates = manual_count ;
111-
112- if (vclk && vclk -> lut ) {
113- for (idx = 0 ; idx < manual_count && idx < vclk -> num_rates ; idx ++ )
114- vclk -> lut [idx ].rate = g3d_manual_ratevolt [idx ].rate ;
115- }
116- }
117-
11853static int __init get_mif_volt (char * str ) {
11954 int volt ;
12055
@@ -516,60 +451,11 @@ static void fvmap_copy_from_sram(void __iomem *map_base,
516451
517452 fw_lv = header [i ].num_of_lv ;
518453
519- if (!strcmp (vclk -> name , "dvfs_g3d" )) {
520- size_t manual_lv = ARRAY_SIZE (g3d_manual_ratevolt );
521- size_t capacity = fvmap_ratevolt_capacity (& header [i ]);
522-
523- if (manual_lv > capacity ) {
524- size_t ratevolt_bytes = manual_lv * sizeof (struct rate_volt );
525- size_t table_bytes = manual_lv * fvmap_header [i ].num_of_members ;
526- size_t new_ratevolt_offset =
527- ALIGN (next_free_offset , sizeof (struct rate_volt ));
528- size_t new_tables_offset =
529- ALIGN (new_ratevolt_offset + ratevolt_bytes , sizeof (u32 ));
530- size_t new_end = new_tables_offset + table_bytes ;
531-
532- if (new_end > FVMAP_SIZE ) {
533- pr_err (" G3D: unable to extend manual table, "
534- "need %zu bytes, limit %lu – truncating\n" ,
535- new_end , FVMAP_SIZE );
536- manual_lv = capacity ;
537- } else {
538- pr_info (" G3D: relocating rate/volt tables to 0x%zx "
539- "to fit %zu entries\n" ,
540- new_ratevolt_offset , manual_lv );
541- fvmap_header [i ].o_ratevolt = new_ratevolt_offset ;
542- fvmap_header [i ].o_tables = new_tables_offset ;
543- next_free_offset = new_end ;
544- capacity = manual_lv ;
545- }
546- }
547-
548- if (manual_lv > capacity ) {
549- pr_warn (" G3D: manual table has %zu entries, "
550- "FW/capacity only %zu – truncating!\n" ,
551- manual_lv , capacity );
552- manual_lv = capacity ;
553- }
554-
555- pr_info (" G3D: using %zu levels from manual table "
556- "(FW advertised %u)\n" ,
557- manual_lv , fw_lv );
558-
559- fvmap_header [i ].num_of_lv = manual_lv ;
560- }
561-
562454 pr_info ("dvfs_type : %s - id : %x\n" , vclk -> name ,
563455 fvmap_header [i ].dvfs_type );
564456 pr_info (" num_of_lv : %d\n" , fvmap_header [i ].num_of_lv );
565457 pr_info (" num_of_members : %d\n" , fvmap_header [i ].num_of_members );
566458
567- if (!strcmp (vclk -> name , "dvfs_g3d" )) {
568- pr_info (" G3D init level : %d\n" , fvmap_header [i ].init_lv );
569- pr_info (" G3D volt_offset_percent : %d\n" , volt_offset_percent );
570- pr_info (" Using manual G3D rate/volt table\n" );
571- }
572-
573459 old = sram_base + header [i ].o_ratevolt ;
574460 new = map_base + fvmap_header [i ].o_ratevolt ;
575461
@@ -618,10 +504,6 @@ static void fvmap_copy_from_sram(void __iomem *map_base,
618504 new -> table [j ].volt , volt_offset_percent );
619505 }
620506
621- if (!strcmp (vclk -> name , "dvfs_g3d" )) {
622- fvmap_apply_gpu_manual_table (& fvmap_header [i ], new , vclk );
623- }
624-
625507 for (j = 0 ; j < fvmap_header [i ].num_of_lv ; j ++ ) {
626508 pr_info (" lv : [%7d], volt = %d uV (%d %%) \n" , new -> table [j ].rate ,
627509 new -> table [j ].volt , volt_offset_percent );
@@ -644,18 +526,6 @@ static void fvmap_copy_from_sram(void __iomem *map_base,
644526 }
645527 }
646528
647- if (!strcmp (vclk -> name , "dvfs_g3d" )) {
648- size_t manual_lv = fvmap_header [i ].num_of_lv ;
649-
650- if (manual_lv > fw_lv && fw_lv ) {
651- size_t stride = fvmap_header [i ].num_of_members ;
652-
653- for (j = fw_lv ; j < manual_lv ; j ++ ) {
654- memcpy (& new_param -> val [stride * j ],
655- & new_param -> val [stride * (fw_lv - 1 )], stride );
656- }
657- }
658- }
659529 }
660530}
661531
0 commit comments