loader: add gpu vmin and vmax patch

This commit is contained in:
souldbminersmwc
2025-09-29 20:00:50 -04:00
parent 6056b4a424
commit 50ad977e4a
24 changed files with 262 additions and 84 deletions

View File

@@ -65,6 +65,11 @@ def populate():
voltages_e = [0] + list(range(700, 1100 + 1, 5)) # 0 first for Disabled
processed_voltages_e = ["Disabled" if v == 0 else f"{v} mV" for v in voltages_e]
processed_voltages_default = ["Default" if v == 0 else f"{v} mV" for v in voltages]
voltages_vmin = [0] + list(range(480, 650 + 1, 5)) # 0 first for Disabled
processed_voltages_vmin = ["Disabled" if v == 0 else f"{v} mV" for v in voltages_vmin]
voltages_vmin_e = [0] + list(range(700, 850 + 1, 5)) # 0 first for Disabled
processed_voltages_vmin_e = ["Disabled" if v == 0 else f"{v} mV" for v in voltages_vmin_e]
freqs_khz = [
76800, 153600, 230400, 307200, 384000, 460800, 537600, 614400, 691200, 768000,
844800, 921600, 998400, 1075200, 1152000, 1228800, 1267200, 1305600, 1344000, 1382400, 1420800,
@@ -72,7 +77,7 @@ def populate():
]
freqs_khz_e = [
76800, 153600, 230400, 307200, 384000, 460800, 537600, 614400, 691200, 768000,
844800, 921600, 998400, 1075200, 1152000
844800, 921600, 998400, 1075200 #, 1152000, 1228800 # Disabled by default as these freqs can cause board damage
]
freqs_mhz = [
76.8, 153.6, 230.4, 307.2, 384.0, 460.8, 537.6, 614.4, 691.2, 768.0,
@@ -119,20 +124,28 @@ def populate():
small=True,
tag="volt_info"
)
# dpg.add_combo(
# items=processed_voltages,
# default_value="Disabled",
# label="Gpu vMin",
# callback=k.grab_kip_storage_values_no_mult,
# tag="g_vmin"
# )
# dpg.add_combo(
# items=processed_voltages,
# default_value="Disabled",
# label="Gpu vMax",
# callback=k.grab_kip_storage_values_no_mult,
# tag="g_vmax"
# )
dpg.add_combo(
items=processed_voltages_vmin_e,
default_value="Disabled",
label="Erista GPU vMin",
callback=k.grab_kip_storage_values_no_mult,
tag="eristaGpuVmin"
)
dpg.add_combo(
items=processed_voltages_vmin,
default_value="Disabled",
label="Mariko GPU vMin",
callback=k.grab_kip_storage_values_no_mult,
tag="marikoGpuVmin"
)
dpg.add_combo(
items=processed_voltages,
default_value="Disabled",
label="Mariko GPU vMax",
callback=k.grab_kip_storage_values_no_mult,
tag="marikoGpuVmax"
)
dpg.add_separator(label="Undervolt")

View File

@@ -82,8 +82,13 @@ variables = [
("g_volt_e_921600", "u32"),
("g_volt_e_998400", "u32"),
("g_volt_e_1075200", "u32"),
("g_volt_e_1152000", "u32"),
# ("g_volt_e_1152000", "u32"),
# ("g_volt_e_1228800", "u32"),
("marikoCpuVmin", "u32"),
("eristaGpuVmin", "u32"),
("marikoGpuVmin", "u32"),
("marikoGpuVmax", "u32"),
]
fmt_map = {
@@ -141,11 +146,14 @@ def load_all_vars():
for e_freq in [
"76800", "153600", "230400", "307200", "384000", "460800", "537600",
"614400", "691200", "768000", "844800", "921600", "998400", "1075200",
"1152000"
"614400", "691200", "768000", "844800", "921600", "998400", "1075200"# ,
# "1152000", "1228800"
]:
c.load_entry_object(f"g_volt_e_{e_freq}", 3)
c.load_entry_object("marikoCpuVmin", 3)
c.load_entry_object("eristaGpuVmin", 3)
c.load_entry_object("marikoGpuVmin", 3)
c.load_entry_object("marikoGpuVmax", 3)
def freq_to_label(freq):
if freq > 1382400:
@@ -240,7 +248,7 @@ def write_kip():
if not d.autosave:
c.show_popup("Success", "KIP saved successfully!")
def read_kip(filename, debug=True):
def read_kip(filename):
MAGIC = b"CUST"
struct_fmt = make_struct_format(variables)
struct_size = struct.calcsize(struct_fmt)
@@ -254,21 +262,20 @@ def read_kip(filename, debug=True):
values = struct.unpack(struct_fmt, raw)
for (attr_name, _), val in zip(variables, values):
setattr(d, attr_name, val)
if debug:
print("=== debug KIP layout ===")
offset = 0
for (attr_name, t) in variables:
code = fmt_map[t]
align = 8 if code == "d" else 4
padding = (-offset) % align
if padding:
offset += padding
size = struct.calcsize(code)
raw_bytes = raw[offset:offset + size]
val = getattr(d, attr_name)
print(f"{attr_name:<20} | type={t:<6} | offset={offset:<4} | size={size:<2} | raw=0x{raw_bytes.hex()} | val={val}")
offset += size
print("========================")
print("=== value layout ===")
offset = 0
for (attr_name, t) in variables:
code = fmt_map[t]
align = 8 if code == "d" else 4
padding = (-offset) % align
if padding:
offset += padding
size = struct.calcsize(code)
raw_bytes = raw[offset:offset + size]
val = getattr(d, attr_name)
print(f"{attr_name:<20} | type={t:<6} | offset={offset:<4} | size={size:<2} | raw=0x{raw_bytes.hex()} | val={val}")
offset += size
print("========================")
dpg.set_value("gpu_sched", g.check_gpu_sched())
dpg.show_item("gpu_tab")
dpg.show_item("cpu_tab")

View File

@@ -90,7 +90,9 @@ with dpg.texture_registry(show=False):
with dpg.file_dialog(directory_selector=False, show=False, tag="file_dialog", width=500, height=300, modal=True, callback=k.store):
dpg.add_file_extension(".kip")
def refresh_drives():
setattr(ins, "drive_list", ins.get_drives())
dpg.configure_item("drive_select", items=ins.drive_list)
with dpg.window(label="Configurator", width=400, height=300,id="main_window"):
with dpg.tab_bar():
with dpg.tab(label="File"):
@@ -102,9 +104,11 @@ with dpg.window(label="Configurator", width=400, height=300,id="main_window"):
callback=lambda: webbrowser.open("https://github.com/souldbminersmwc/Horizon-OC")
)
dpg.add_separator(label="Installation")
dpg.add_button(label="Refresh Drive List", callback=refresh_drives)
dpg.add_combo(
items=ins.drive_list,
default_value="Select a drive!",
tag="drive_select",
callback=ins.check_atmosphere
)
dpg.add_checkbox(label="Autosave", default_value=false, callback=ins.autosave_toggle)

View File

@@ -183,7 +183,7 @@ def set_psm_value(sender, app_data):
value = next((x["value"] for x in PSM_OPTIONS if x["name"] == app_data), None)
if value:
ini.set_ini_values(str(ini_path), "psm", {"current_psm_mA": value})
common.show_popup("Success", f"PSM set to {app_data}")
common.show_popup("Success", f"Charge Limit set to {app_data}")
def remove_tc_entries():
ini_path = get_ini_path()
@@ -337,7 +337,7 @@ def populate():
dpg.add_image("coolerhd", width=20, height=20)
def set_white_tiger_clocks(app_data):
# cooler aah clocks
# 1400mv emc max
# 1375mv cpu max
# 750mv vdd2 mariko max