mirror of
https://gitlab.com/ryzen-controller-team/ryzen-controller.git
synced 2024-12-22 18:13:28 +07:00
wip: See #33 Refactor ryzenadj option management.
This commit is contained in:
parent
068aeff384
commit
2a374f7302
131
index.html
131
index.html
@ -30,136 +30,9 @@
|
|||||||
</ul>
|
</ul>
|
||||||
<ul class="uk-switcher uk-margin-remove" uk-height-viewport="expand: true" style="position:relative;">
|
<ul class="uk-switcher uk-margin-remove" uk-height-viewport="expand: true" style="position:relative;">
|
||||||
|
|
||||||
<li class="uk-margin-top uk-margin-bottom uk-container" id="controller-tab">
|
<li class="uk-margin-top uk-margin-bottom uk-container" id="controller-tab"></li>
|
||||||
<h3><label><input class="uk-checkbox uk-margin-small-right" type="checkbox" id="apply_stapm_time_ms"><span class="option-label"></span></label></h3>
|
|
||||||
<div class="uk-grid-small" uk-grid>
|
|
||||||
<div class="uk-width-1-6">
|
|
||||||
<input class="uk-input " type="number" id="stapm_time_ms" repeat="stapm_time_ms_range">
|
|
||||||
</div>
|
|
||||||
<div class="uk-width-expand">
|
|
||||||
<input class="uk-range" type="range" repeat="stapm_time_ms" id="stapm_time_ms_range">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<h3><label><input class="uk-checkbox uk-margin-small-right" type="checkbox" id="apply_stapm_limit_w"><span class="option-label"></span></label></h3>
|
|
||||||
<div class="uk-grid-small" uk-grid>
|
|
||||||
<div class="uk-width-1-6">
|
|
||||||
<input class="uk-input" type="number" id="stapm_limit_w" repeat="stapm_limit_w_range">
|
|
||||||
</div>
|
|
||||||
<div class="uk-width-expand">
|
|
||||||
<input class="uk-range" type="range" repeat="stapm_limit_w" id="stapm_limit_w_range">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<h3><label><input class="uk-checkbox uk-margin-small-right" type="checkbox" id="apply_ppt_fast_limit_w"><span class="option-label"></span></label></h3>
|
|
||||||
<div class="uk-grid-small" uk-grid>
|
|
||||||
<div class="uk-width-1-6">
|
|
||||||
<input class="uk-input" type="number" id="ppt_fast_limit_w" repeat="ppt_fast_limit_w_range">
|
|
||||||
</div>
|
|
||||||
<div class="uk-width-expand">
|
|
||||||
<input class="uk-range" type="range" repeat="ppt_fast_limit_w" id="ppt_fast_limit_w_range">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<h3><label><input class="uk-checkbox uk-margin-small-right" type="checkbox" id="apply_ppt_slow_limit_w"><span class="option-label"></span></label></h3>
|
|
||||||
<div class="uk-grid-small" uk-grid>
|
|
||||||
<div class="uk-width-1-6">
|
|
||||||
<input class="uk-input" type="number" id="ppt_slow_limit_w" repeat="ppt_slow_limit_w_range">
|
|
||||||
</div>
|
|
||||||
<div class="uk-width-expand">
|
|
||||||
<input class="uk-range" type="range" repeat="ppt_slow_limit_w" id="ppt_slow_limit_w_range">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<h3><label><input class="uk-checkbox uk-margin-small-right" type="checkbox" id="apply_temperature_limit_c"><span class="option-label"></span></label></h3>
|
|
||||||
<div class="uk-grid-small" uk-grid>
|
|
||||||
<div class="uk-width-1-6">
|
|
||||||
<input class="uk-input" type="number" id="temperature_limit_c" repeat="temperature_limit_c_range">
|
|
||||||
</div>
|
|
||||||
<div class="uk-width-expand">
|
|
||||||
<input class="uk-range" type="range" repeat="temperature_limit_c" id="temperature_limit_c_range">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<h3><label><input class="uk-checkbox uk-margin-small-right" type="checkbox" id="apply_vrm_current_m_a"><span class="option-label"></span></label></h3>
|
|
||||||
<div class="uk-grid-small" uk-grid>
|
|
||||||
<div class="uk-width-1-6">
|
|
||||||
<input class="uk-input" type="number" id="vrm_current_m_a" repeat="vrm_current_m_a_range">
|
|
||||||
</div>
|
|
||||||
<div class="uk-width-expand">
|
|
||||||
<input class="uk-range" type="range" repeat="vrm_current_m_a" id="vrm_current_m_a_range">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<h3><label><input class="uk-checkbox uk-margin-small-right" type="checkbox" id="apply_min_fclk_frequency"><span class="option-label"></span></label></h3>
|
|
||||||
<div class="uk-grid-small" uk-grid>
|
|
||||||
<div class="uk-width-1-6">
|
|
||||||
<input class="uk-input" type="number" step="10" id="min_fclk_frequency" repeat="min_fclk_frequency_range">
|
|
||||||
</div>
|
|
||||||
<div class="uk-width-expand">
|
|
||||||
<input class="uk-range" type="range" step="10" repeat="min_fclk_frequency" id="min_fclk_frequency_range">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<h3><label><input class="uk-checkbox uk-margin-small-right" type="checkbox" id="apply_max_fclk_frequency"><span class="option-label"></span></label></h3>
|
|
||||||
<div class="uk-grid-small" uk-grid>
|
|
||||||
<div class="uk-width-1-6">
|
|
||||||
<input class="uk-input" type="number" step="10" id="max_fclk_frequency" repeat="max_fclk_frequency_range">
|
|
||||||
</div>
|
|
||||||
<div class="uk-width-expand">
|
|
||||||
<input class="uk-range" type="range" step="10" repeat="max_fclk_frequency" id="max_fclk_frequency_range">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<p class="uk-margin">
|
|
||||||
<button class="uk-button uk-button-primary" onClick="applyRyzenSettings()">Apply</button>
|
|
||||||
<button class="uk-button uk-button-secondary" uk-toggle="target: #modal-new-preset">Save to preset</button>
|
|
||||||
</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li class="uk-margin-top uk-margin-bottom uk-container" id="experimental-tab">
|
<li class="uk-margin-top uk-margin-bottom uk-container" id="experimental-tab"></li>
|
||||||
<h3><label><input class="uk-checkbox uk-margin-small-right" type="checkbox" id="apply_psi0_current_limit"><span class="option-label"></span></label></h3>
|
|
||||||
<div class="uk-grid-small" uk-grid>
|
|
||||||
<div class="uk-width-1-6">
|
|
||||||
<input class="uk-input" type="number" id="psi0_current_limit" repeat="psi0_current_limit_range">
|
|
||||||
</div>
|
|
||||||
<div class="uk-width-expand">
|
|
||||||
<input class="uk-range" type="range" repeat="psi0_current_limit" id="psi0_current_limit_range">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<h3><label><input class="uk-checkbox uk-margin-small-right" type="checkbox" id="apply_min_gfxclk_frequency"><span class="option-label"></span></label></h3>
|
|
||||||
<div class="uk-grid-small" uk-grid>
|
|
||||||
<div class="uk-width-1-6">
|
|
||||||
<input class="uk-input" type="number" id="min_gfxclk_frequency" repeat="min_gfxclk_frequency_range">
|
|
||||||
</div>
|
|
||||||
<div class="uk-width-expand">
|
|
||||||
<input class="uk-range" type="range" repeat="min_gfxclk_frequency" id="min_gfxclk_frequency_range">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<h3><label><input class="uk-checkbox uk-margin-small-right" type="checkbox" id="apply_max_gfxclk_frequency"><span class="option-label"></span></label></h3>
|
|
||||||
<div class="uk-grid-small" uk-grid>
|
|
||||||
<div class="uk-width-1-6">
|
|
||||||
<input class="uk-input" type="number" id="max_gfxclk_frequency" repeat="max_gfxclk_frequency_range">
|
|
||||||
</div>
|
|
||||||
<div class="uk-width-expand">
|
|
||||||
<input class="uk-range" type="range" repeat="max_gfxclk_frequency" id="max_gfxclk_frequency_range">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<h3><label><input class="uk-checkbox uk-margin-small-right" type="checkbox" id="apply_min_socclk_frequency"><span class="option-label"></span></label></h3>
|
|
||||||
<div class="uk-grid-small" uk-grid>
|
|
||||||
<div class="uk-width-1-6">
|
|
||||||
<input class="uk-input" type="number" step="100" id="min_socclk_frequency" repeat="min_socclk_frequency_range">
|
|
||||||
</div>
|
|
||||||
<div class="uk-width-expand">
|
|
||||||
<input class="uk-range" type="range" step="100" repeat="min_socclk_frequency" id="min_socclk_frequency_range">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<h3><label><input class="uk-checkbox uk-margin-small-right" type="checkbox" id="apply_max_socclk_frequency"><span class="option-label"></span></label></h3>
|
|
||||||
<div class="uk-grid-small" uk-grid>
|
|
||||||
<div class="uk-width-1-6">
|
|
||||||
<input class="uk-input" type="number" step="100" id="max_socclk_frequency" repeat="max_socclk_frequency_range">
|
|
||||||
</div>
|
|
||||||
<div class="uk-width-expand">
|
|
||||||
<input class="uk-range" type="range" step="100" repeat="max_socclk_frequency" id="max_socclk_frequency_range">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<p class="uk-margin">
|
|
||||||
<button class="uk-button uk-button-primary" onClick="applyRyzenSettings()">Apply</button>
|
|
||||||
<button class="uk-button uk-button-secondary" uk-toggle="target: #modal-new-preset">Save to preset</button>
|
|
||||||
</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li class="uk-margin-top uk-margin-bottom uk-container">
|
<li class="uk-margin-top uk-margin-bottom uk-container">
|
||||||
<div id="presetTab"></div>
|
<div id="presetTab"></div>
|
||||||
|
53
js/app.js
53
js/app.js
@ -3,8 +3,8 @@ ready(function(){
|
|||||||
const fixPath = require('fix-path');
|
const fixPath = require('fix-path');
|
||||||
document.isStarting = true;
|
document.isStarting = true;
|
||||||
fixPath();
|
fixPath();
|
||||||
|
displayOptions();
|
||||||
preFillSettings();
|
preFillSettings();
|
||||||
displayOptionData();
|
|
||||||
loadLatestUsedSettings();
|
loadLatestUsedSettings();
|
||||||
registerRepeaterForAllInput();
|
registerRepeaterForAllInput();
|
||||||
registerEventListenerForSettingsInput();
|
registerEventListenerForSettingsInput();
|
||||||
@ -39,41 +39,32 @@ function applyRyzenSettings() {
|
|||||||
const child = require('child_process').execFile;
|
const child = require('child_process').execFile;
|
||||||
const executablePath = getRyzenAdjExecutablePath();
|
const executablePath = getRyzenAdjExecutablePath();
|
||||||
|
|
||||||
|
const options_data = require('./js/options_data.json');
|
||||||
|
const ryzenAdjConvert = {
|
||||||
|
"toHex": function (value) { return '0x' + decimalToHexString(value * 1000); },
|
||||||
|
"toThousand": function (value) { return value * 1000; },
|
||||||
|
"roundTen": function (value) { return parseInt(value / 10) * 10; },
|
||||||
|
};
|
||||||
|
|
||||||
|
// Create a string to be used for CLI.
|
||||||
var parameters = [];
|
var parameters = [];
|
||||||
for (const option in settings) {
|
for (const option in settings) {
|
||||||
if (settings.hasOwnProperty(option)) {
|
if (settings.hasOwnProperty(option)) {
|
||||||
let value = settings[option];
|
let value = settings[option];
|
||||||
|
let option_name = false;
|
||||||
switch (option) {
|
try {
|
||||||
case "--stapm-limit=":
|
option_name = Object.keys(options_data).filter(function(cur_option_name){
|
||||||
case "--fast-limit=":
|
return options_data[cur_option_name].ryzenadj_arg === option;
|
||||||
case "--slow-limit=":
|
})[0];
|
||||||
case "--stapm-time=":
|
} catch (error) {
|
||||||
value = value * 1000;
|
notification('danger', `Unknown option "${option}".`);
|
||||||
break;
|
appendLog(`applyRyzenSettings(): ${error}`);
|
||||||
|
}
|
||||||
case "--tctl-temp=":
|
if (options_data[option_name].ryzenadj_value_convert) {
|
||||||
case "--max-fclk-frequency=":
|
value = ryzenAdjConvert[
|
||||||
case "--min-fclk-frequency=":
|
options_data[option_name].ryzenadj_value_convert
|
||||||
value = value;
|
](value);
|
||||||
break;
|
|
||||||
|
|
||||||
case "--max-gfxclk=":
|
|
||||||
case "--min-gfxclk=":
|
|
||||||
case "--max-socclk-frequency=":
|
|
||||||
case "--min-socclk-frequency=":
|
|
||||||
value = parseInt(value / 10) * 10;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "--psi0-current=":
|
|
||||||
case "--vrmmax-current=":
|
|
||||||
value = '0x' + decimalToHexString(value * 1000);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
parameters.push('' + option + value);
|
parameters.push('' + option + value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
125
js/methods.js
125
js/methods.js
@ -1,3 +1,74 @@
|
|||||||
|
/**
|
||||||
|
* Will load options_data.json and display them into index.html.
|
||||||
|
*/
|
||||||
|
function displayOptions(){
|
||||||
|
const options_data = require('./js/options_data.json');
|
||||||
|
var tabs = {};
|
||||||
|
for (const option_name in options_data) {
|
||||||
|
if (!options_data.hasOwnProperty(option_name)) {
|
||||||
|
appendLog(`Error while loading ${option_name} option.`);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
let option_data = options_data[option_name];
|
||||||
|
if (!option_data.hasOwnProperty('tab')) {
|
||||||
|
appendLog(`Error while loading ${option_name} tab property.`);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
let option_tab = option_data['tab'];
|
||||||
|
let tab = document.querySelector(`#${option_tab}-tab`);
|
||||||
|
if (!tab) {
|
||||||
|
appendLog(`Error while loading ${option_tab} tab.`);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
tabs[option_tab] = true;
|
||||||
|
tab.innerHTML += `
|
||||||
|
<h3 id="${option_name}-label" uk-tooltip="${option_data.description}"><label>
|
||||||
|
<input class="uk-checkbox uk-margin-small-right" type="checkbox" id="apply_${option_name}"/>
|
||||||
|
<span class="option-label">${option_data.label}</span>
|
||||||
|
</label></h3>
|
||||||
|
<div class="uk-grid-small" uk-grid>
|
||||||
|
<div class="uk-width-1-6">
|
||||||
|
<input
|
||||||
|
class="uk-input"
|
||||||
|
type="number"
|
||||||
|
id="${option_name}"
|
||||||
|
repeat="${option_name}_range"
|
||||||
|
min="${option_data.min}"
|
||||||
|
max="${option_data.max}"
|
||||||
|
step="${option_data.step}"
|
||||||
|
value="${option_data.default}"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="uk-width-expand">
|
||||||
|
<input
|
||||||
|
class="uk-range"
|
||||||
|
type="range"
|
||||||
|
repeat="${option_name}"
|
||||||
|
id="${option_name}_range"
|
||||||
|
min="${option_data.min}"
|
||||||
|
max="${option_data.max}"
|
||||||
|
step="${option_data.step}"
|
||||||
|
value="${option_data.default}"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
UIkit.tooltip(document.querySelector(`#${option_name}-label`));
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const tab_name in tabs) {
|
||||||
|
if (tabs.hasOwnProperty(tab_name)) {
|
||||||
|
const tab = document.querySelector(`#${tab_name}-tab`);
|
||||||
|
tab.innerHTML += `
|
||||||
|
<p class="uk-margin">
|
||||||
|
<button class="uk-button uk-button-primary" onClick="applyRyzenSettings()">Apply</button>
|
||||||
|
<button class="uk-button uk-button-secondary" uk-toggle="target: #modal-new-preset">Save to preset</button>
|
||||||
|
</p>
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Will create a nodes from an html string.
|
* Will create a nodes from an html string.
|
||||||
* @param {string} str An html string
|
* @param {string} str An html string
|
||||||
@ -350,35 +421,6 @@ function reApplyPeriodically(seconds) {
|
|||||||
document.reapplyLoop = setInterval(applyRyzenSettings, seconds * 1000);
|
document.reapplyLoop = setInterval(applyRyzenSettings, seconds * 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Display tooltip on each options.
|
|
||||||
*/
|
|
||||||
function displayOptionData() {
|
|
||||||
const options_data = require('./js/options_data.json');
|
|
||||||
for (const option in options_data) {
|
|
||||||
if (options_data.hasOwnProperty(option)) {
|
|
||||||
const label = options_data[option].label;
|
|
||||||
const description = options_data[option].description;
|
|
||||||
const min = options_data[option].min;
|
|
||||||
const max = options_data[option].max;
|
|
||||||
const default_value = options_data[option].default;
|
|
||||||
|
|
||||||
const title_container = document.getElementById(option).parentElement.parentElement.previousElementSibling;
|
|
||||||
const title = title_container.getElementsByClassName('option-label');
|
|
||||||
const inputs = title_container.nextElementSibling.getElementsByTagName('input');
|
|
||||||
title_container.setAttribute('uk-tooltip', description);
|
|
||||||
UIkit.tooltip(title_container);
|
|
||||||
title[0].innerHTML = label;
|
|
||||||
|
|
||||||
for (const input of inputs) {
|
|
||||||
input.setAttribute('min', min);
|
|
||||||
input.setAttribute('max', max);
|
|
||||||
input.value = default_value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Will recreate shortcut on launch ... no other solution for now :(
|
* Will recreate shortcut on launch ... no other solution for now :(
|
||||||
*/
|
*/
|
||||||
@ -412,28 +454,15 @@ function recreateShortcut() {
|
|||||||
*/
|
*/
|
||||||
function getCurrentSettings(keyType) {
|
function getCurrentSettings(keyType) {
|
||||||
if (keyType === "ryzenadjArgs") {
|
if (keyType === "ryzenadjArgs") {
|
||||||
const optionToId = {
|
|
||||||
"--psi0-current=": 'psi0_current_limit',
|
|
||||||
"--stapm-time=": 'stapm_time_ms',
|
|
||||||
"--stapm-limit=": 'stapm_limit_w',
|
|
||||||
"--fast-limit=": 'ppt_fast_limit_w',
|
|
||||||
"--slow-limit=": 'ppt_slow_limit_w',
|
|
||||||
"--tctl-temp=": 'temperature_limit_c',
|
|
||||||
"--vrmmax-current=": 'vrm_current_m_a',
|
|
||||||
"--min-fclk-frequency=": 'min_fclk_frequency',
|
|
||||||
"--max-fclk-frequency=": 'max_fclk_frequency',
|
|
||||||
"--min-gfxclk=": 'min_gfxclk_frequency',
|
|
||||||
"--max-gfxclk=": 'max_gfxclk_frequency',
|
|
||||||
"--min-socclk-frequency=": 'min_socclk_frequency',
|
|
||||||
"--max-socclk-frequency=": 'max_socclk_frequency',
|
|
||||||
};
|
|
||||||
|
|
||||||
|
const options_data = require('./js/options_data.json');
|
||||||
var settingsToBeUsed = {};
|
var settingsToBeUsed = {};
|
||||||
for (const option in optionToId) {
|
for (const elementId in options_data) {
|
||||||
if (optionToId.hasOwnProperty(option)) {
|
if (options_data.hasOwnProperty(elementId)) {
|
||||||
const elementId = optionToId[option];
|
const optionData = options_data[elementId];
|
||||||
|
const ryzenadjArg = optionData.ryzenadj_arg;
|
||||||
if (document.getElementById('apply_' + elementId).checked) {
|
if (document.getElementById('apply_' + elementId).checked) {
|
||||||
settingsToBeUsed[option] = document.getElementById(elementId).value;
|
settingsToBeUsed[ryzenadjArg] = document.getElementById(elementId).value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,93 +1,145 @@
|
|||||||
{
|
{
|
||||||
"psi0_current_limit": {
|
|
||||||
"description": "The limit of current we let the motherboard deliver to the PSI0.",
|
|
||||||
"label": "PSI0 Current Limit (mA)",
|
|
||||||
"min": "20",
|
|
||||||
"max": "100",
|
|
||||||
"default": "20"
|
|
||||||
},
|
|
||||||
"stapm_time_ms": {
|
"stapm_time_ms": {
|
||||||
"description": "Skin Temperature Aware Power Management. This will define the boost period to be used.",
|
"description": "Skin Temperature Aware Power Management. This will define the boost period to be used.",
|
||||||
"label": "STAPM Constant Time (Sec.)",
|
"label": "STAPM Constant Time (Sec.)",
|
||||||
|
"tab": "controller",
|
||||||
"min": "1",
|
"min": "1",
|
||||||
"max": "3600",
|
"max": "3600",
|
||||||
"default": "900"
|
"step": "1",
|
||||||
|
"default": "900",
|
||||||
|
"ryzenadj_arg": "--stapm-time=",
|
||||||
|
"ryzenadj_value_convert": "toThousand"
|
||||||
},
|
},
|
||||||
"stapm_limit_w": {
|
"stapm_limit_w": {
|
||||||
"description": "Skin Temperature Aware Power Management. This will define the socket power package limit which is used to manage the device boost period.",
|
"description": "Skin Temperature Aware Power Management. This will define the socket power package limit which is used to manage the device boost period.",
|
||||||
"label": "STAPM Limit (W)",
|
"label": "STAPM Limit (W)",
|
||||||
|
"tab": "controller",
|
||||||
"min": "5",
|
"min": "5",
|
||||||
"max": "60",
|
"max": "60",
|
||||||
"default": "20"
|
"step": "1",
|
||||||
|
"default": "20",
|
||||||
|
"ryzenadj_arg": "--stapm-limit=",
|
||||||
|
"ryzenadj_value_convert": "toThousand"
|
||||||
},
|
},
|
||||||
"ppt_fast_limit_w": {
|
"ppt_fast_limit_w": {
|
||||||
"description": "The amount of power the CPU can draw while boost levels on.",
|
"description": "The amount of power the CPU can draw while boost levels on.",
|
||||||
"label": "PPT Fast Limit (W)",
|
"label": "PPT Fast Limit (W)",
|
||||||
|
"tab": "controller",
|
||||||
"min": "5",
|
"min": "5",
|
||||||
"max": "60",
|
"max": "60",
|
||||||
"default": "25"
|
"step": "1",
|
||||||
|
"default": "25",
|
||||||
|
"ryzenadj_arg": "--fast-limit=",
|
||||||
|
"ryzenadj_value_convert": "toThousand"
|
||||||
},
|
},
|
||||||
"ppt_slow_limit_w": {
|
"ppt_slow_limit_w": {
|
||||||
"description": "The amount of power the CPU can draw while boost levels off.",
|
"description": "The amount of power the CPU can draw while boost levels off.",
|
||||||
"label": "PPT Slow Limit (W)",
|
"label": "PPT Slow Limit (W)",
|
||||||
|
"tab": "controller",
|
||||||
"min": "5",
|
"min": "5",
|
||||||
"max": "60",
|
"max": "60",
|
||||||
"default": "10"
|
"step": "1",
|
||||||
|
"default": "10",
|
||||||
|
"ryzenadj_arg": "--slow-limit=",
|
||||||
|
"ryzenadj_value_convert": "toThousand"
|
||||||
},
|
},
|
||||||
"temperature_limit_c": {
|
"temperature_limit_c": {
|
||||||
"description": "The temperature the CPU can reach before boost levels off.",
|
"description": "The temperature the CPU can reach before boost levels off.",
|
||||||
"label": "Temperature Limit (°C)",
|
"label": "Temperature Limit (°C)",
|
||||||
|
"tab": "controller",
|
||||||
"min": "50",
|
"min": "50",
|
||||||
"max": "100",
|
"max": "100",
|
||||||
"default": "75"
|
"step": "1",
|
||||||
|
"default": "75",
|
||||||
|
"ryzenadj_arg": "--tctl-temp=",
|
||||||
|
"ryzenadj_value_convert": false
|
||||||
},
|
},
|
||||||
"vrm_current_m_a": {
|
"vrm_current_m_a": {
|
||||||
"description": "The limit of current we let the motherboard deliver to the CPU.",
|
"description": "The limit of current we let the motherboard deliver to the CPU.",
|
||||||
"label": "VRM Current (A)",
|
"label": "VRM Current (A)",
|
||||||
|
"tab": "controller",
|
||||||
"min": "20",
|
"min": "20",
|
||||||
"max": "75",
|
"max": "75",
|
||||||
"default": "30"
|
"step": "1",
|
||||||
},
|
"default": "30",
|
||||||
"max_fclk_frequency": {
|
"ryzenadj_arg": "--vrmmax-current=",
|
||||||
"description": "Fabric is AMD's marketing term for the bus connection that connects processor dies (GPU/CPU). This define the bus's max. clock limit.",
|
"ryzenadj_value_convert": "toHex"
|
||||||
"label": "Maximum transmission frequency (Mhz)",
|
|
||||||
"min": "800",
|
|
||||||
"max": "1600",
|
|
||||||
"default": "1200"
|
|
||||||
},
|
},
|
||||||
"min_fclk_frequency": {
|
"min_fclk_frequency": {
|
||||||
"description": "Fabric is AMD's marketing term for the bus connection that connects processor dies (GPU/CPU). This define the bus's min. clock limit.",
|
"description": "Fabric is AMD's marketing term for the bus connection that connects processor dies (GPU/CPU). This define the bus's min. clock limit.",
|
||||||
"label": "Minimum transmission frequency (Mhz)",
|
"label": "Minimum transmission frequency (Mhz)",
|
||||||
|
"tab": "controller",
|
||||||
"min": "800",
|
"min": "800",
|
||||||
"max": "1600",
|
"max": "1600",
|
||||||
"default": "800"
|
"step": "1",
|
||||||
|
"default": "800",
|
||||||
|
"ryzenadj_arg": "--min-fclk-frequency=",
|
||||||
|
"ryzenadj_value_convert": false
|
||||||
},
|
},
|
||||||
"max_gfxclk_frequency": {
|
"max_fclk_frequency": {
|
||||||
"description": "The maximum clock speed the integrated GPU is allowed to run at.",
|
"description": "Fabric is AMD's marketing term for the bus connection that connects processor dies (GPU/CPU). This define the bus's max. clock limit.",
|
||||||
"label": "Maximum GFX Clock Frequency (Mhz)",
|
"label": "Maximum transmission frequency (Mhz)",
|
||||||
"min": "400",
|
"tab": "controller",
|
||||||
"max": "1300",
|
"min": "800",
|
||||||
"default": "1100"
|
"max": "1600",
|
||||||
|
"step": "1",
|
||||||
|
"default": "1200",
|
||||||
|
"ryzenadj_arg": "--max-fclk-frequency=",
|
||||||
|
"ryzenadj_value_convert": false
|
||||||
|
},
|
||||||
|
"psi0_current_limit": {
|
||||||
|
"description": "The limit of current we let the motherboard deliver to the PSI0.",
|
||||||
|
"label": "PSI0 Current Limit (mA)",
|
||||||
|
"tab": "experimental",
|
||||||
|
"min": "20",
|
||||||
|
"max": "100",
|
||||||
|
"step": "1",
|
||||||
|
"default": "20",
|
||||||
|
"ryzenadj_arg": "--psi0-current=",
|
||||||
|
"ryzenadj_value_convert": "toHex"
|
||||||
},
|
},
|
||||||
"min_gfxclk_frequency": {
|
"min_gfxclk_frequency": {
|
||||||
"description": "The minimum clock speed the integrated GPU is allowed to run at.",
|
"description": "The minimum clock speed the integrated GPU is allowed to run at.",
|
||||||
"label": "Minimum GFX Clock Frequency (Mhz)",
|
"label": "Minimum GFX Clock Frequency (Mhz)",
|
||||||
|
"tab": "experimental",
|
||||||
"min": "400",
|
"min": "400",
|
||||||
"max": "1300",
|
"max": "1300",
|
||||||
"default": "400"
|
"step": "1",
|
||||||
|
"default": "400",
|
||||||
|
"ryzenadj_arg": "--min-gfxclk=",
|
||||||
|
"ryzenadj_value_convert": "roundTen"
|
||||||
},
|
},
|
||||||
"max_socclk_frequency": {
|
"max_gfxclk_frequency": {
|
||||||
"description": "The maximum clock speed the CPU is allowed to run at.",
|
"description": "The maximum clock speed the integrated GPU is allowed to run at.",
|
||||||
"label": "Maximum SOC Clock Frequency (Mhz)",
|
"label": "Maximum GFX Clock Frequency (Mhz)",
|
||||||
"min": "200",
|
"tab": "experimental",
|
||||||
"max": "750",
|
"min": "400",
|
||||||
"default": "600"
|
"max": "1300",
|
||||||
|
"step": "1",
|
||||||
|
"default": "1100",
|
||||||
|
"ryzenadj_arg": "--max-gfxclk=",
|
||||||
|
"ryzenadj_value_convert": "roundTen"
|
||||||
},
|
},
|
||||||
"min_socclk_frequency": {
|
"min_socclk_frequency": {
|
||||||
"description": "The minimum clock speed the CPU is allowed to run at.",
|
"description": "The minimum clock speed the CPU is allowed to run at.",
|
||||||
"label": "Minimum SOC Clock Frequency (Mhz)",
|
"label": "Minimum SOC Clock Frequency (Mhz)",
|
||||||
|
"tab": "experimental",
|
||||||
"min": "200",
|
"min": "200",
|
||||||
"max": "750",
|
"max": "750",
|
||||||
"default": "200"
|
"step": "1",
|
||||||
|
"default": "200",
|
||||||
|
"ryzenadj_arg": "--min-socclk-frequency=",
|
||||||
|
"ryzenadj_value_convert": "roundTen"
|
||||||
|
},
|
||||||
|
"max_socclk_frequency": {
|
||||||
|
"description": "The maximum clock speed the CPU is allowed to run at.",
|
||||||
|
"label": "Maximum SOC Clock Frequency (Mhz)",
|
||||||
|
"tab": "experimental",
|
||||||
|
"min": "200",
|
||||||
|
"max": "750",
|
||||||
|
"step": "1",
|
||||||
|
"default": "600",
|
||||||
|
"ryzenadj_arg": "--max-socclk-frequency=",
|
||||||
|
"ryzenadj_value_convert": "roundTen"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
29
package-lock.json
generated
29
package-lock.json
generated
@ -35,7 +35,8 @@
|
|||||||
"abbrev": {
|
"abbrev": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
|
||||||
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
|
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"ajv": {
|
"ajv": {
|
||||||
"version": "6.10.0",
|
"version": "6.10.0",
|
||||||
@ -249,7 +250,8 @@
|
|||||||
"ansi-regex": {
|
"ansi-regex": {
|
||||||
"version": "4.1.0",
|
"version": "4.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
|
||||||
"integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
|
"integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"is-fullwidth-code-point": {
|
"is-fullwidth-code-point": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
@ -272,6 +274,7 @@
|
|||||||
"version": "5.2.0",
|
"version": "5.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
|
||||||
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
|
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
|
||||||
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"ansi-regex": "^4.1.0"
|
"ansi-regex": "^4.1.0"
|
||||||
}
|
}
|
||||||
@ -864,7 +867,8 @@
|
|||||||
"emoji-regex": {
|
"emoji-regex": {
|
||||||
"version": "7.0.3",
|
"version": "7.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
|
||||||
"integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="
|
"integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"end-of-stream": {
|
"end-of-stream": {
|
||||||
"version": "1.4.1",
|
"version": "1.4.1",
|
||||||
@ -1343,7 +1347,8 @@
|
|||||||
"is-promise": {
|
"is-promise": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz",
|
||||||
"integrity": "sha1-MVc3YcBX4zwukaq56W2gjO++duU="
|
"integrity": "sha1-MVc3YcBX4zwukaq56W2gjO++duU=",
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"is-stream": {
|
"is-stream": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
@ -1428,6 +1433,7 @@
|
|||||||
"version": "1.3.1",
|
"version": "1.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
|
||||||
"integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=",
|
"integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=",
|
||||||
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"graceful-fs": "^4.1.9"
|
"graceful-fs": "^4.1.9"
|
||||||
}
|
}
|
||||||
@ -1467,12 +1473,14 @@
|
|||||||
"lodash": {
|
"lodash": {
|
||||||
"version": "4.17.11",
|
"version": "4.17.11",
|
||||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
|
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
|
||||||
"integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg=="
|
"integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"lodash._reinterpolate": {
|
"lodash._reinterpolate": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
|
||||||
"integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0="
|
"integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=",
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"lodash.get": {
|
"lodash.get": {
|
||||||
"version": "4.4.2",
|
"version": "4.4.2",
|
||||||
@ -2102,6 +2110,7 @@
|
|||||||
"version": "2.6.3",
|
"version": "2.6.3",
|
||||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
|
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
|
||||||
"integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
|
"integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
|
||||||
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"glob": "^7.1.3"
|
"glob": "^7.1.3"
|
||||||
}
|
}
|
||||||
@ -2140,6 +2149,7 @@
|
|||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
|
||||||
"integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
|
"integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
|
||||||
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"shebang-regex": "^1.0.0"
|
"shebang-regex": "^1.0.0"
|
||||||
}
|
}
|
||||||
@ -2147,7 +2157,8 @@
|
|||||||
"shebang-regex": {
|
"shebang-regex": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
|
||||||
"integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM="
|
"integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"shell-env": {
|
"shell-env": {
|
||||||
"version": "0.3.0",
|
"version": "0.3.0",
|
||||||
@ -2570,7 +2581,8 @@
|
|||||||
"ansi-regex": {
|
"ansi-regex": {
|
||||||
"version": "4.1.0",
|
"version": "4.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
|
||||||
"integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
|
"integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"is-fullwidth-code-point": {
|
"is-fullwidth-code-point": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
@ -2593,6 +2605,7 @@
|
|||||||
"version": "5.2.0",
|
"version": "5.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
|
||||||
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
|
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
|
||||||
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"ansi-regex": "^4.1.0"
|
"ansi-regex": "^4.1.0"
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user