@@ -304,7 +304,7 @@ class AGXHWDataA(ConstructClass):
304304 "pad_654" / Int32ul ,
305305 "pwr_filter_a_neg" / Float32l ,
306306 "pad_65c" / Int32ul ,
307- "pwr_filter_a_neg " / Float32l ,
307+ "pwr_filter_a " / Float32l ,
308308 "pad_664" / Int32ul ,
309309 "pwr_integral_gain" / Float32l ,
310310 "pad_66c" / Int32ul ,
@@ -340,7 +340,7 @@ class AGXHWDataA(ConstructClass):
340340 "pad_6ec" / Int32ul ,
341341 "ppm_ki_dt" / Float32l ,
342342 "pad_6f4" / Int32ul ,
343- "pwr_integral_min_clamp " / Int32ul ,
343+ "pwr_integral_min_clamp_2 " / Int32ul ,
344344 "unk_6fc" / Float32l ,
345345 "ppm_kp" / Float32l ,
346346 "pad_704" / Int32ul ,
@@ -395,13 +395,13 @@ class AGXHWDataA(ConstructClass):
395395 "boost_state_unk_k" / Float32l ,
396396
397397 "base_pstate_scaled_2" / Dec (Int32ul ),
398- "max_pstate_scaled_2 " / Dec (Int32ul ),
398+ "max_pstate_scaled_5 " / Dec (Int32ul ),
399399 "base_pstate_scaled_3" / Dec (Int32ul ),
400400
401401 "pad_7b8" / Int32ul ,
402402
403403 "perf_cur_utilization" / Float32l ,
404- "perf_tgt_utilization " / Int32ul ,
404+ "perf_tgt_utilization_2 " / Int32ul ,
405405
406406 "pad_7c4" / HexDump (Bytes (0x18 )),
407407
@@ -413,17 +413,17 @@ class AGXHWDataA(ConstructClass):
413413 "unk_7e8" / HexDump (Bytes (0x14 )),
414414
415415 "unk_7fc" / Float32l ,
416- "pwr_min_duty_cycle " / Float32l ,
417- "max_pstate_scaled_3 " / Float32l ,
416+ "pwr_min_duty_cycle_2 " / Float32l ,
417+ "max_pstate_scaled_6 " / Float32l ,
418418 "max_freq_mhz" / Int32ul ,
419419 "pad_80c" / Int32ul ,
420420 "unk_810" / Int32ul ,
421421 "pad_814" / Int32ul ,
422- "pwr_min_duty_cycle_2 " / Int32ul ,
422+ "pwr_min_duty_cycle_3 " / Int32ul ,
423423 "unk_81c" / Int32ul ,
424424 "pad_820" / Int32ul ,
425425 "min_pstate_scaled_4" / Float32l ,
426- "max_pstate_scaled_4 " / Dec (Int32ul ),
426+ "max_pstate_scaled_7 " / Dec (Int32ul ),
427427 "unk_82c" / Int32ul ,
428428 "unk_alpha_neg" / Float32l ,
429429 "unk_alpha" / Float32l ,
@@ -449,17 +449,17 @@ class AGXHWDataA(ConstructClass):
449449 "fast_die0_kp" / Float32l ,
450450 "pad_8b0" / Int32ul ,
451451 "unk_8b4" / Int32ul ,
452- "unk_8b8 " / Int32ul ,
453- "max_pstate_scaled_5 " / Dec (Int32ul ),
454- "max_pstate_scaled_6 " / Dec (Int32ul ),
455- "unk_8c4 " / Int32ul ,
452+ "pwr_min_duty_cycle_4 " / Int32ul ,
453+ "max_pstate_scaled_8 " / Dec (Int32ul ),
454+ "max_pstate_scaled_9 " / Dec (Int32ul ),
455+ "fast_die0_prop_tgt_delta " / Int32ul ,
456456 "unk_8c8" / Int32ul ,
457457 "unk_8cc" / Int32ul ,
458458 "pad_8d0" / HexDump (Bytes (0x14 )),
459459 Ver ("13.0 beta4" , "unk_8e4_0" / HexDump (Bytes (0x10 ))),
460460 "unk_8e4" / Int32ul ,
461461 "unk_8e8" / Int32ul ,
462- "max_pstate_scaled_7 " / Dec (Int32ul ),
462+ "max_pstate_scaled_10 " / Dec (Int32ul ),
463463 "unk_8f0" / Int32ul ,
464464 "unk_8f4" / Int32ul ,
465465 "pad_8f8" / Int32ul ,
@@ -468,7 +468,7 @@ class AGXHWDataA(ConstructClass):
468468 "unk_924" / Array (8 , Array (8 , Float32l )),
469469 "unk_a24" / Array (8 , Array (8 , Float32l )),
470470 "unk_b24" / HexDump (Bytes (0x70 )),
471- "max_pstate_scaled_8 " / Dec (Int32ul ),
471+ "max_pstate_scaled_11 " / Dec (Int32ul ),
472472 "freq_with_off" / Int32ul ,
473473 "unk_b9c" / Int32ul ,
474474 "unk_ba0" / Int64ul ,
@@ -484,19 +484,19 @@ class AGXHWDataA(ConstructClass):
484484 "max_power_6" / Int32ul ,
485485 "unk_c40" / Int32ul ,
486486 "unk_c44" / Float32l ,
487- "avg_power_filter_a_neg " / Float32l ,
488- "avg_power_filter_a " / Float32l ,
489- "avg_power_filter_tc_x4 " / Dec (Int32ul ),
490- "avg_power_filter_tc_xperiod " / Dec (Int32ul ),
487+ "avg_power_target_filter_a_neg " / Float32l ,
488+ "avg_power_target_filter_a " / Float32l ,
489+ "avg_power_target_filter_tc_x4 " / Dec (Int32ul ),
490+ "avg_power_target_filter_tc_xperiod " / Dec (Int32ul ),
491491 Ver ("13.0 beta4" , "base_clock_mhz" / Int32ul ),
492492 Ver ("13.0 beta4" , "unk_c58_4" / Int32ul ),
493493 "power_zones" / Array (5 , PowerZone ),
494- "power_filter_tc_periods_x4 " / Dec (Int32ul ),
494+ "avg_power_filter_tc_periods_x4 " / Dec (Int32ul ),
495495 "unk_cfc" / Int32ul ,
496496 "unk_d00" / Int32ul ,
497- "power_filter_a_neg " / Float32l ,
497+ "avg_power_filter_a_neg " / Float32l ,
498498 "unk_d08" / Int32ul ,
499- "power_filter_a " / Float32l ,
499+ "avg_power_filter_a " / Float32l ,
500500 "unk_d10" / Int32ul ,
501501 "avg_power_ki_dt" / Float32l ,
502502 "unk_d18" / Int32ul ,
@@ -505,9 +505,9 @@ class AGXHWDataA(ConstructClass):
505505 "avg_power_kp" / Float32l ,
506506 "unk_d28" / Int32ul ,
507507 "unk_d2c" / Int32ul ,
508- "unk_d30 " / Int32ul ,
509- "max_pstate_scaled_9 " / Int32ul ,
510- "max_pstate_scaled_10 " / Int32ul ,
508+ "avg_power_min_duty_cycle " / Int32ul ,
509+ "max_pstate_scaled_12 " / Int32ul ,
510+ "max_pstate_scaled_13 " / Int32ul ,
511511 "unk_d3c" / Int32ul ,
512512 "max_power_7" / Float32l ,
513513 "max_power_8" / Int32ul ,
@@ -517,7 +517,7 @@ class AGXHWDataA(ConstructClass):
517517 Ver ("13.0 beta4" , "base_clock_mhz_2" / Int32ul ),
518518 Ver ("13.0 beta4" , "unk_d54_4" / HexDump (Bytes (0xc ))),
519519 "unk_d54" / HexDump (Bytes (0x10 )),
520- "max_pstate_scaled_11 " / Int32ul ,
520+ "max_pstate_scaled_14 " / Int32ul ,
521521 "unk_d68" / Bytes (0x24 ),
522522
523523 "t8103_data" / AGXHWDataT8103 ,
@@ -645,7 +645,7 @@ def __init__(self, sgx, chip_info):
645645 self .pad_6ec = 0
646646 self .ppm_ki_dt = sgx .gpu_ppm_ki * (period_ms / 1000 )
647647 self .pad_6f4 = 0
648- self .pwr_integral_min_clamp = sgx .gpu_pwr_integral_min_clamp
648+ self .pwr_integral_min_clamp_2 = sgx .gpu_pwr_integral_min_clamp
649649 if Ver .check ("13.0 beta4" ) or chip_info .chip_id != 0x8103 :
650650 self .unk_6fc = 65536.0
651651 else :
@@ -699,29 +699,29 @@ def __init__(self, sgx, chip_info):
699699 boost_states = max_state - base_state
700700 self .boost_state_unk_k = boost_states / 0.95
701701 self .base_pstate_scaled_2 = 100 * sgx .getprop ("gpu-perf-base-pstate" , 3 )
702- self .max_pstate_scaled_2 = self .max_pstate_scaled
702+ self .max_pstate_scaled_5 = self .max_pstate_scaled
703703 self .base_pstate_scaled_3 = 100 * sgx .getprop ("gpu-perf-base-pstate" , 3 )
704704 self .pad_7b8 = 0x0
705705 self .perf_cur_utilization = 0.0
706- self .perf_tgt_utilization = sgx .gpu_perf_tgt_utilization
706+ self .perf_tgt_utilization_2 = sgx .gpu_perf_tgt_utilization
707707 self .pad_7c4 = bytes (0x18 )
708708 self .unk_7dc = 0x0
709709 self .unk_7e0_0 = bytes (0x10 )
710710 self .base_pstate_scaled_4 = 100 * sgx .getprop ("gpu-perf-base-pstate" , 3 )
711711 self .pad_7e4 = 0x0
712712 self .unk_7e8 = bytes (0x14 )
713713 self .unk_7fc = 65536.0
714- self .pwr_min_duty_cycle = sgx .gpu_pwr_min_duty_cycle
715- self .max_pstate_scaled_3 = self .max_pstate_scaled
716- self .max_freq_mhz = sgx .perf_states [sgx .gpu_num_perf_states ].freq
714+ self .pwr_min_duty_cycle_2 = sgx .gpu_pwr_min_duty_cycle
715+ self .max_pstate_scaled_6 = self .max_pstate_scaled
716+ self .max_freq_mhz = sgx .perf_states [sgx .gpu_num_perf_states ].freq // 1000000
717717 self .pad_80c = 0x0
718718 self .unk_810 = 0x0
719719 self .pad_814 = 0x0
720- self .pwr_min_duty_cycle_2 = sgx .gpu_pwr_min_duty_cycle
720+ self .pwr_min_duty_cycle_3 = sgx .gpu_pwr_min_duty_cycle
721721 self .unk_81c = 0x0
722722 self .pad_820 = 0x0
723723 self .min_pstate_scaled_4 = 100.0
724- self .max_pstate_scaled_4 = self .max_pstate_scaled
724+ self .max_pstate_scaled_7 = self .max_pstate_scaled
725725 self .unk_82c = 0x0
726726 self .unk_alpha_neg = 0.8
727727 self .unk_alpha = 1 - self .unk_alpha_neg
@@ -749,17 +749,17 @@ def __init__(self, sgx, chip_info):
749749 self .fast_die0_kp = sgx .gpu_fast_die0_proportional_gain
750750 self .pad_8b0 = 0x0
751751 self .unk_8b4 = 0x0
752- self .unk_8b8 = sgx .gpu_pwr_min_duty_cycle
753- self .max_pstate_scaled_5 = self .max_pstate_scaled
754- self .max_pstate_scaled_6 = self .max_pstate_scaled
755- self .unk_8c4 = 100 * sgx .getprop ("gpu-fast-die0-prop-tgt-delta" , 0 )
752+ self .pwr_min_duty_cycle_4 = sgx .gpu_pwr_min_duty_cycle
753+ self .max_pstate_scaled_8 = self .max_pstate_scaled
754+ self .max_pstate_scaled_9 = self .max_pstate_scaled
755+ self .fast_die0_prop_tgt_delta = 100 * sgx .getprop ("gpu-fast-die0-prop-tgt-delta" , 0 )
756756 self .unk_8c8 = 0
757757 self .unk_8cc = chip_info .unk_8cc
758758 self .pad_8d0 = bytes (0x14 )
759759 self .unk_8e4_0 = bytes (0x10 )
760760 self .unk_8e4 = 0
761761 self .unk_8e8 = 0
762- self .max_pstate_scaled_7 = self .max_pstate_scaled
762+ self .max_pstate_scaled_10 = self .max_pstate_scaled
763763 self .unk_8f0 = 0
764764 self .unk_8f4 = 0
765765 self .pad_8f8 = 0
@@ -768,7 +768,7 @@ def __init__(self, sgx, chip_info):
768768 self .unk_924 = chip_info .unk_924
769769 self .unk_a24 = chip_info .unk_924
770770 self .unk_b24 = bytes (0x70 )
771- self .max_pstate_scaled_8 = self .max_pstate_scaled
771+ self .max_pstate_scaled_11 = self .max_pstate_scaled
772772 self .freq_with_off = 0x0
773773 self .unk_b9c = 0
774774 self .unk_ba0 = 0
@@ -797,21 +797,21 @@ def __init__(self, sgx, chip_info):
797797 self .max_power_6 = chip_info .max_power
798798 self .unk_c40 = 0
799799 self .unk_c44 = 0.0
800- self .avg_power_filter_a_neg = 1 - 1 / sgx .gpu_avg_power_target_filter_tc
801- self .avg_power_filter_a = 1 / sgx .gpu_avg_power_target_filter_tc
802- self .avg_power_filter_tc_x4 = 4 * sgx .gpu_avg_power_target_filter_tc
803- self .avg_power_filter_tc_xperiod = period_ms * sgx .gpu_avg_power_target_filter_tc
800+ self .avg_power_target_filter_a_neg = 1 - 1 / sgx .gpu_avg_power_target_filter_tc
801+ self .avg_power_target_filter_a = 1 / sgx .gpu_avg_power_target_filter_tc
802+ self .avg_power_target_filter_tc_x4 = 4 * sgx .gpu_avg_power_target_filter_tc
803+ self .avg_power_target_filter_tc_xperiod = period_ms * sgx .gpu_avg_power_target_filter_tc
804804 self .base_clock_mhz = base_clock_mhz
805805 self .unk_c58_4 = 0
806806
807807 # Note: integer rounding
808- power_filter_tc_periods = sgx .gpu_avg_power_filter_tc_ms // period_ms
809- self .power_filter_tc_periods_x4 = power_filter_tc_periods * 4
808+ avg_power_filter_tc_periods = sgx .gpu_avg_power_filter_tc_ms // period_ms
809+ self .avg_power_filter_tc_periods_x4 = avg_power_filter_tc_periods * 4
810810 self .unk_cfc = 0
811811 self .unk_d00 = 0
812- self .power_filter_a_neg = 1 - 1 / power_filter_tc_periods
812+ self .avg_power_filter_a_neg = 1 - 1 / avg_power_filter_tc_periods
813813 self .unk_d08 = 0
814- self .power_filter_a = 1 - self .power_filter_a_neg
814+ self .avg_power_filter_a = 1 - self .avg_power_filter_a_neg
815815 self .unk_d10 = 0
816816 self .avg_power_ki_dt = sgx .gpu_avg_power_ki_only * (period_ms / 1000 )
817817 self .unk_d18 = 0
@@ -820,9 +820,9 @@ def __init__(self, sgx, chip_info):
820820 self .avg_power_kp = sgx .gpu_avg_power_kp
821821 self .unk_d28 = 0
822822 self .unk_d2c = 0
823- self .unk_d30 = sgx .gpu_avg_power_min_duty_cycle
824- self .max_pstate_scaled_9 = self .max_pstate_scaled
825- self .max_pstate_scaled_10 = self .max_pstate_scaled
823+ self .avg_power_min_duty_cycle = sgx .gpu_avg_power_min_duty_cycle
824+ self .max_pstate_scaled_12 = self .max_pstate_scaled
825+ self .max_pstate_scaled_13 = self .max_pstate_scaled
826826 self .unk_d3c = 0
827827 self .max_power_7 = chip_info .max_power
828828 self .max_power_8 = chip_info .max_power
@@ -832,7 +832,7 @@ def __init__(self, sgx, chip_info):
832832 self .base_clock_mhz_2 = base_clock_mhz
833833 self .unk_d54_4 = bytes (0xc )
834834 self .unk_d54 = bytes (0x10 )
835- self .max_pstate_scaled_11 = self .max_pstate_scaled
835+ self .max_pstate_scaled_14 = self .max_pstate_scaled
836836 self .unk_d68 = bytes (0x24 )
837837
838838 self .t8103_data = AGXHWDataT8103 (chip_info )
@@ -869,14 +869,6 @@ def __init__(self, sgx, chip_info):
869869 self .unk_3ce0_0 = 0
870870
871871
872- "unk_3ce0" / Int32ul ,
873- "unk_3ce4" / Int32ul ,
874- "unk_3ce8" / Int32ul ,
875- "unk_3cec" / Int32ul ,
876- "unk_3cf0" / Int32ul ,
877- "unk_3cf4" / Array (8 , Float32l ),
878- "unk_3d14" / Array (8 , Float32l ),
879- "unk_3d34" / HexDump (Bytes (0x38 )),
880872 self .unk_3ce0 = 0
881873 self .unk_3ce4 = 0
882874 self .unk_3ce8 = 1
@@ -959,7 +951,7 @@ class AGXHWDataB(ConstructClass):
959951 "unk_484" / Int32ul ,
960952 "unk_488" / Int32ul ,
961953 "unk_48c" / Int32ul ,
962- "unk_490 " / Int32ul ,
954+ "base_clock_khz " / Int32ul ,
963955 "power_sample_period" / Int32ul ,
964956 "pad_498" / ZPadding (4 ),
965957
@@ -1007,7 +999,7 @@ class AGXHWDataB(ConstructClass):
1007999 "unk_534" / Int32ul ,
10081000 "unk_538" / Int32ul ,
10091001 Ver ("13.0 beta4" , "unk_53c_0" / Int32ul ),
1010- "num_cores " / Int32ul ,
1002+ "num_frags " / Int32ul ,
10111003 "unk_540" / Int32ul ,
10121004 "unk_544" / Int32ul ,
10131005 "unk_548" / Int32ul ,
@@ -1017,7 +1009,7 @@ class AGXHWDataB(ConstructClass):
10171009 "gpu_region_base" / Int64ul ,
10181010 "unk_560" / Int32ul ,
10191011 "unk_564" / Int32ul ,
1020- "num_cores_2 " / Int32ul ,
1012+ "num_cores " / Int32ul ,
10211013 "max_pstate" / Int32ul ,
10221014 Ver ("..13.0 beta4" , "num_pstates" / Int32ul ),
10231015 "frequencies" / Array (16 , Dec (Int32ul )),
@@ -1041,7 +1033,8 @@ class AGXHWDataB(ConstructClass):
10411033 "unk_ae4" / Array (4 , Int32ul ),
10421034 "pad_af4" / ZPadding (4 ),
10431035 "unk_af8" / Int32ul ,
1044- "pad_afc" / ZPadding (8 ),
1036+ "unk_afc" / Int32ul ,
1037+ "unk_b00" / Int32ul ,
10451038 "unk_b04" / Int32ul ,
10461039 "unk_b08" / Int32ul ,
10471040 "unk_b0c" / Int32ul ,
@@ -1181,7 +1174,7 @@ def __init__(self, sgx, chip_info):
11811174 self .unk_484 = 0x1
11821175 self .unk_488 = 0x0
11831176 self .unk_48c = 0x1
1184- self .unk_490 = 24000
1177+ self .base_clock_khz = 24000
11851178 self .power_sample_period = sgx .gpu_power_sample_period
11861179 self .unk_49c = 0x1
11871180 self .unk_4a0 = 0x1
@@ -1219,7 +1212,7 @@ def __init__(self, sgx, chip_info):
12191212 self .unk_534 = chip_info .hwdb_534
12201213 self .unk_538 = 0x0
12211214 self .unk_53c_0 = 0
1222- self .num_cores = chip_info .num_cores
1215+ self .num_frags = chip_info .num_cores
12231216 self .unk_540 = 0x0
12241217 self .unk_544 = 0x0
12251218 self .unk_548 = 0x0
@@ -1229,7 +1222,7 @@ def __init__(self, sgx, chip_info):
12291222 self .gpu_region_base = sgx .gpu_region_base
12301223 self .unk_560 = chip_info .hwdb_560
12311224 self .unk_564 = chip_info .hwdb_564
1232- self .num_cores_2 = chip_info .num_cores
1225+ self .num_cores = chip_info .num_cores
12331226 self .max_pstate = sgx .gpu_num_perf_states
12341227 self .num_pstates = sgx .gpu_num_perf_states + 1
12351228
@@ -1252,6 +1245,8 @@ def __init__(self, sgx, chip_info):
12521245 else :
12531246 self .unk_ae4 = [0x0 , 0xf , 0x3f , 0x3f ]
12541247 self .unk_af8 = 0x0
1248+ self .unk_afc = 0x0
1249+ self .unk_b00 = 0x0
12551250 self .unk_b04 = 0x0
12561251 self .unk_b08 = 0x0
12571252 self .unk_b0c = 0x0
0 commit comments