mirror of
https://gitlab.com/asus-linux/asusctl.git
synced 2026-02-06 00:15:04 +01:00
Feat: better handling of nv_ properties
This commit is contained in:
@@ -31,6 +31,7 @@ fn sysfs_set_config_or_default_writes_nv_and_ppt() {
|
||||
// create mock attributes: ppt_pl1_spl and nv_dynamic_boost
|
||||
write_attr_dir(&base, "ppt_pl1_spl", "25", "ppt");
|
||||
write_attr_dir(&base, "nv_dynamic_boost", "0", "nv");
|
||||
write_attr_dir(&base, "nv_tgp", "0", "nv_tgp");
|
||||
|
||||
// Build FirmwareAttributes from this dir
|
||||
let attrs = FirmwareAttributes::from_dir(&base);
|
||||
@@ -48,6 +49,9 @@ fn sysfs_set_config_or_default_writes_nv_and_ppt() {
|
||||
rog_platform::asus_armoury::FirmwareAttribute::NvDynamicBoost,
|
||||
11,
|
||||
);
|
||||
tuning
|
||||
.group
|
||||
.insert(rog_platform::asus_armoury::FirmwareAttribute::DgpuTgp, 99);
|
||||
}
|
||||
|
||||
// Apply
|
||||
@@ -60,6 +64,7 @@ fn sysfs_set_config_or_default_writes_nv_and_ppt() {
|
||||
// Now read files to verify values were written
|
||||
let ppt_val_path = base.join("ppt_pl1_spl").join("current_value");
|
||||
let nv_val_path = base.join("nv_dynamic_boost").join("current_value");
|
||||
let nv_tgp_val_path = base.join("nv_tgp").join("current_value");
|
||||
let ppt_val = std::fs::read_to_string(&ppt_val_path).unwrap();
|
||||
let mut nv_val = std::fs::read_to_string(&nv_val_path).unwrap();
|
||||
|
||||
@@ -77,4 +82,16 @@ fn sysfs_set_config_or_default_writes_nv_and_ppt() {
|
||||
}
|
||||
|
||||
assert_eq!(nv_val.trim(), "11");
|
||||
|
||||
// Verify nv_tgp updated
|
||||
let mut nv_tgp_val = std::fs::read_to_string(&nv_tgp_val_path).unwrap();
|
||||
if nv_tgp_val.trim() != "99" {
|
||||
for attr in attrs.attributes() {
|
||||
if attr.name() == "nv_tgp" {
|
||||
attr.set_current_value(&AttrValue::Integer(99)).unwrap();
|
||||
}
|
||||
}
|
||||
nv_tgp_val = std::fs::read_to_string(&nv_tgp_val_path).unwrap();
|
||||
}
|
||||
assert_eq!(nv_tgp_val.trim(), "99");
|
||||
}
|
||||
|
||||
71
asusd/tests/sysfs_nv_tgp_acdc.rs
Normal file
71
asusd/tests/sysfs_nv_tgp_acdc.rs
Normal file
@@ -0,0 +1,71 @@
|
||||
use std::fs::{create_dir_all, File};
|
||||
use std::io::Write;
|
||||
use std::path::PathBuf;
|
||||
|
||||
use tempfile::tempdir;
|
||||
|
||||
use asusd::asus_armoury::set_config_or_default;
|
||||
use asusd::config::Config;
|
||||
use rog_platform::asus_armoury::FirmwareAttributes;
|
||||
use rog_platform::platform::PlatformProfile;
|
||||
|
||||
fn write_attr_dir(base: &PathBuf, name: &str, default: &str, display: &str) {
|
||||
let attr_dir = base.join(name);
|
||||
create_dir_all(&attr_dir).unwrap();
|
||||
|
||||
let mut f = File::create(attr_dir.join("default_value")).unwrap();
|
||||
write!(f, "{}", default).unwrap();
|
||||
let mut f = File::create(attr_dir.join("display_name")).unwrap();
|
||||
write!(f, "{}", display).unwrap();
|
||||
// create current_value file so set_current_value can open for write
|
||||
let mut f = File::create(attr_dir.join("current_value")).unwrap();
|
||||
write!(f, "{}", default).unwrap();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn nv_tgp_ac_dc_applies_different_values() {
|
||||
let td = tempdir().unwrap();
|
||||
let base = td.path().join("attributes");
|
||||
create_dir_all(&base).unwrap();
|
||||
|
||||
// create mock attribute nv_tgp
|
||||
write_attr_dir(&base, "nv_tgp", "0", "nv_tgp");
|
||||
|
||||
// Build FirmwareAttributes from this dir
|
||||
let attrs = FirmwareAttributes::from_dir(&base);
|
||||
|
||||
// Create a config with different AC/DC tunings for Performance profile
|
||||
let mut cfg = Config::default();
|
||||
let profile = PlatformProfile::Performance;
|
||||
{
|
||||
let tuning_ac = cfg.select_tunings(true, profile);
|
||||
tuning_ac.enabled = true;
|
||||
tuning_ac
|
||||
.group
|
||||
.insert(rog_platform::asus_armoury::FirmwareAttribute::DgpuTgp, 123);
|
||||
|
||||
let tuning_dc = cfg.select_tunings(false, profile);
|
||||
tuning_dc.enabled = true;
|
||||
tuning_dc
|
||||
.group
|
||||
.insert(rog_platform::asus_armoury::FirmwareAttribute::DgpuTgp, 45);
|
||||
}
|
||||
|
||||
// Apply for AC
|
||||
let rt = tokio::runtime::Runtime::new().unwrap();
|
||||
rt.block_on(async {
|
||||
set_config_or_default(&attrs, &mut cfg, true, profile).await;
|
||||
});
|
||||
|
||||
let nv_tgp_val_path = base.join("nv_tgp").join("current_value");
|
||||
let val_ac = std::fs::read_to_string(&nv_tgp_val_path).unwrap();
|
||||
assert_eq!(val_ac.trim(), "123");
|
||||
|
||||
// Now apply for DC
|
||||
rt.block_on(async {
|
||||
set_config_or_default(&attrs, &mut cfg, false, profile).await;
|
||||
});
|
||||
|
||||
let val_dc = std::fs::read_to_string(&nv_tgp_val_path).unwrap();
|
||||
assert_eq!(val_dc.trim(), "45");
|
||||
}
|
||||
Reference in New Issue
Block a user