Created
October 3, 2023 17:40
-
-
Save GloriousEggroll/214dddb91288a83bfb47da9ed08d9f04 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From c3014c9bd771d5624230ebf464ba20816b9b2479 Mon Sep 17 00:00:00 2001 | |
From: GloriousEggroll <[email protected]> | |
Date: Sat, 8 Jul 2023 04:07:16 -0600 | |
Subject: [PATCH] Don't impose limits on gpu voltage,cpu voltage,screen | |
brightness,backlight if the device is in charging mode | |
--- | |
.../steamos-polkit-helpers/steamos-priv-write | 52 +++++++++++-------- | |
1 file changed, 30 insertions(+), 22 deletions(-) | |
diff --git usr/bin/steamos-polkit-helpers/steamos-priv-write usr/bin/steamos-polkit-helpers/steamos-priv-write | |
index 907133b..f57e2a4 100755 | |
--- usr/bin/steamos-polkit-helpers/steamos-priv-write | |
+++ usr/bin/steamos-polkit-helpers/steamos-priv-write | |
@@ -25,34 +25,42 @@ function DeclineWrite() | |
exit 1 | |
} | |
-echo "checking: $WRITE_PATH" | systemd-cat -t p-steamos-priv-write -p warning | |
-if [[ "$WRITE_PATH" == /sys/class/backlight/*/brightness ]]; then | |
- CommitWrite | |
-fi | |
+HASBAT=$(upower -e | grep 'BAT') | |
+CHARGING="$(upower -i $(upower -e | grep 'BAT') | grep state | grep charging)" | |
+DEVICES="$(lspci | cut -c8- | grep -i -E '(vga|display|3d)' | grep -vi 'non-vga' | wc -l)" | |
+if [[ ! -z $HASBAT ]] && [[ $DEVICES < 2 ]] && [[ -z $CHARGING ]] ; then | |
-if [[ "$WRITE_PATH" == /sys/class/drm/card*/device/power_dpm_force_performance_level ]]; then | |
- CommitWrite | |
-fi | |
+ echo "checking: $WRITE_PATH" | systemd-cat -t p-steamos-priv-write -p warning | |
+ if [[ "$WRITE_PATH" == /sys/class/backlight/*/brightness ]]; then | |
+ CommitWrite | |
+ fi | |
-if [[ "$WRITE_PATH" == /sys/class/drm/card*/device/pp_od_clk_voltage ]]; then | |
- CommitWrite | |
-fi | |
+ if [[ "$WRITE_PATH" == /sys/class/drm/card*/device/power_dpm_force_performance_level ]]; then | |
+ CommitWrite | |
+ fi | |
-if [[ "$WRITE_PATH" == /sys/class/hwmon/hwmon*/power*_cap ]]; then | |
- CommitWrite | |
-fi | |
+ if [[ "$WRITE_PATH" == /sys/class/drm/card*/device/pp_od_clk_voltage ]]; then | |
+ CommitWrite | |
+ fi | |
-if [[ "$WRITE_PATH" == /sys/devices/platform/*/*/*/iio:device*/in_illuminance_integration_time ]]; then | |
- CommitWrite | |
-fi | |
+ if [[ "$WRITE_PATH" == /sys/class/hwmon/hwmon*/power*_cap ]]; then | |
+ CommitWrite | |
+ fi | |
-if [[ "$WRITE_PATH" == /sys/devices/*/*/*/*/hwmon/hwmon*/led_brightness ]]; then | |
- CommitWrite | |
-fi | |
+ if [[ "$WRITE_PATH" == /sys/devices/platform/*/*/*/iio:device*/in_illuminance_integration_time ]]; then | |
+ CommitWrite | |
+ fi | |
+ | |
+ if [[ "$WRITE_PATH" == /sys/devices/*/*/*/*/hwmon/hwmon*/led_brightness ]]; then | |
+ CommitWrite | |
+ fi | |
+ | |
+ if [[ "$WRITE_PATH" == /sys/devices/*/*/*/*/hwmon/hwmon*/content_adaptive_brightness ]]; then | |
+ CommitWrite | |
+ fi | |
+ | |
+ DeclineWrite | |
-if [[ "$WRITE_PATH" == /sys/devices/*/*/*/*/hwmon/hwmon*/content_adaptive_brightness ]]; then | |
- CommitWrite | |
fi | |
-DeclineWrite | |
-- | |
2.41.0 | |
diff --git usr/bin/steamos-polkit-helpers/steamos-priv-write usr/bin/steamos-polkit-helpers/steamos-priv-write | |
index f57e2a4..c812f6c 100755 | |
--- usr/bin/steamos-polkit-helpers/steamos-priv-write | |
+++ usr/bin/steamos-polkit-helpers/steamos-priv-write | |
@@ -10,6 +10,84 @@ fi | |
WRITE_PATH="$1" | |
WRITE_VALUE="$2" | |
+DECK="" | |
+ZSERIES="" | |
+ | |
+#HXSERIES6="" | |
+#HSERIES6="" | |
+#HSSERIES6="" | |
+USERIES6="" | |
+ | |
+#HXSERIES7="" | |
+#HSERIES7="" | |
+#HSSERIES7="" | |
+USERIES7="" | |
+USERIES7LP="" | |
+ | |
+# 15w Steam Deck | |
+if [[ -n $(lscpu | grep 'Model name' | grep -v 'BIOS' | grep 'AMD Custom' | grep '0405 ') ]]; then | |
+ DECK=$(lscpu | grep 'Model name' | grep -v 'BIOS' | grep 'AMD Custom' | grep '0405 ') | |
+fi | |
+ | |
+# 9-30w Z series | |
+if [[ -n $(lscpu | grep 'Model name' | grep -v 'BIOS' | grep 'Z1 ') ]]; then | |
+ ZSERIES=$(lscpu | grep 'Model name' | grep -v 'BIOS' | grep 'Z1 ') | |
+fi | |
+ | |
+# 6000 series 45w HX | |
+#if [[ -n $(lscpu | grep 'Model name' | grep -v 'BIOS' | grep 'AMD Ryzen' | grep ' 6' | grep -v '6 ' | grep 'HX ') ]]; then | |
+# HXSERIES6=$(lscpu | grep 'Model name' | grep -v 'BIOS' | grep 'AMD Ryzen' | grep ' 6' | grep -v '6 ' | grep 'HX ') | |
+#fi | |
+ | |
+# 6000 series 45w H | |
+#if [[ -n $(lscpu | grep 'Model name' | grep -v 'BIOS' | grep 'AMD Ryzen' | grep ' 6' | grep -v '6 ' | grep 'H ') ]]; then | |
+# HSERIES6=$(lscpu | grep 'Model name' | grep -v 'BIOS' | grep 'AMD Ryzen' | grep ' 6' | grep -v '6 ' | grep 'H ') | |
+#fi | |
+ | |
+# 6000 series 35w HS | |
+#if [[ -n $(lscpu | grep 'Model name' | grep -v 'BIOS' | grep 'AMD Ryzen' | grep ' 6' | grep -v '6 ' | grep 'HS ') ]]; then | |
+# HSSERIES6=$(lscpu | grep 'Model name' | grep -v 'BIOS' | grep 'AMD Ryzen' | grep ' 6' | grep -v '6 ' | grep 'HS ') | |
+#fi | |
+ | |
+# 6000 series 15-30w U -- controlled by temperature | |
+if [[ -n $(lscpu | grep 'Model name' | grep -v 'BIOS' | grep 'AMD Ryzen' | grep ' 6' | grep -v '6 ' | grep 'U ') ]]; then | |
+ USERIES6=$(lscpu | grep 'Model name' | grep -v 'BIOS' | grep 'AMD Ryzen' | grep ' 6' | grep -v '6 ' | grep 'U ') | |
+fi | |
+ | |
+# 7000 series 55-75w HX | |
+#if [[ -n $(lscpu | grep 'Model name' | grep -v 'BIOS' | grep 'AMD Ryzen' | grep ' 7' | grep -v '7 ' | grep 'HX ') ]]; then | |
+# HXSERIES7=$(lscpu | grep 'Model name' | grep -v 'BIOS' | grep 'AMD Ryzen' | grep ' 7' | grep -v '7 ' | grep 'HX ') | |
+#fi | |
+ | |
+# 7000 series 35-54w H | |
+#if [[ -n $(lscpu | grep 'Model name' | grep -v 'BIOS' | grep 'AMD Ryzen' | grep ' 7' | grep -v '7 ' | grep 'H ') ]]; then | |
+# HSERIES7=$(lscpu | grep 'Model name' | grep -v 'BIOS' | grep 'AMD Ryzen' | grep ' 7' | grep -v '7 ' | grep 'H ') | |
+#fi | |
+ | |
+# 7000 series 35-54w HS | |
+#if [[ -n $(lscpu | grep 'Model name' | grep -v 'BIOS' | grep 'AMD Ryzen' | grep ' 7' | grep -v '7 ' | grep 'HS ') ]]; then | |
+# HSSERIES7=$(lscpu | grep 'Model name' | grep -v 'BIOS' | grep 'AMD Ryzen' | grep ' 7' | grep -v '7 ' | grep 'HS ') | |
+#fi | |
+ | |
+# 7000 series 15-30w U -- controlled by temperature | |
+if [[ -n $(lscpu | grep 'Model name' | grep -v 'BIOS' | grep 'AMD Ryzen' | grep ' 7' | grep -v '7 ' | grep 'U ' | grep -v 'PRO' | grep -v '7520' | grep -v '7320') ]]; then | |
+ USERIES7=$(lscpu | grep 'Model name' | grep -v 'BIOS' | grep 'AMD Ryzen' | grep ' 7' | grep -v '7 ' | grep 'U ') | |
+fi | |
+ | |
+# 7000 series 15w PRO/7520/7320 U | |
+if [[ -n $(lscpu | grep 'Model name' | grep -v 'BIOS' | grep 'AMD Ryzen' | grep ' 7' | grep -v '7 ' | grep 'U ') ]]; then | |
+ USERIES7LP=$(lscpu | grep 'Model name' | grep -v 'BIOS' | grep 'AMD Ryzen' | grep ' 7' | grep -v '7 ' | grep 'U ') | |
+fi | |
+ | |
+# TODO - add gpu detection entries for: | |
+# 780M | |
+# 760M | |
+# 740M | |
+# 680M | |
+# 660M | |
+# 610M | |
+# Vega (PRO only) | |
+ | |
function CommitWrite() | |
{ | |
echo "commit: $WRITE_VALUE -> $WRITE_PATH" | systemd-cat -t p-steamos-priv-write -p warning | |
@@ -18,6 +96,7 @@ function CommitWrite() | |
exit 0 | |
} | |
+ | |
function DeclineWrite() | |
{ | |
echo "decline: $WRITE_VALUE -> $WRITE_PATH" | systemd-cat -t p-steamos-priv-write -p err | |
@@ -25,42 +104,202 @@ function DeclineWrite() | |
exit 1 | |
} | |
-HASBAT=$(upower -e | grep 'BAT') | |
-CHARGING="$(upower -i $(upower -e | grep 'BAT') | grep state | grep charging)" | |
-DEVICES="$(lspci | cut -c8- | grep -i -E '(vga|display|3d)' | grep -vi 'non-vga' | wc -l)" | |
-if [[ ! -z $HASBAT ]] && [[ $DEVICES < 2 ]] && [[ -z $CHARGING ]] ; then | |
+if [[ "$WRITE_PATH" == /sys/class/backlight/*/brightness ]]; then | |
+ CommitWrite | |
+fi | |
+ | |
+if [[ "$WRITE_PATH" == /sys/class/drm/card*/device/power_dpm_force_performance_level ]]; then | |
+ | |
+ # if device does not have a battery don't apply any power changes | |
+ if [[ -z $(upower -i "$(upower -e | grep 'BAT')" | grep -E "percentage" | awk '{print $2}' | sed 's/\%//g') ]]; then | |
+ exit 0 | |
+ fi | |
+ | |
+ for i in $(ls /sys/class/drm/): | |
+ do | |
+ WRITE_PATH="/sys/class/drm/$i/device/power_dpm_force_performance_level" | |
+ CommitWrite | |
+ done | |
+fi | |
+ | |
+ | |
+if [[ "$WRITE_PATH" == /sys/class/drm/card*/device/pp_od_clk_voltage ]]; then | |
- echo "checking: $WRITE_PATH" | systemd-cat -t p-steamos-priv-write -p warning | |
- if [[ "$WRITE_PATH" == /sys/class/backlight/*/brightness ]]; then | |
- CommitWrite | |
- fi | |
+ # if device does not have a battery don't apply any power changes | |
+ if [[ -z $(upower -i "$(upower -e | grep 'BAT')" | grep -E "percentage" | awk '{print $2}' | sed 's/\%//g') ]]; then | |
+ exit 0 | |
+ fi | |
- if [[ "$WRITE_PATH" == /sys/class/drm/card*/device/power_dpm_force_performance_level ]]; then | |
- CommitWrite | |
- fi | |
+ for i in $(ls /sys/class/drm/): | |
+ do | |
+ WRITE_PATH="/sys/class/drm/$i/device/pp_od_clk_voltage" | |
- if [[ "$WRITE_PATH" == /sys/class/drm/card*/device/pp_od_clk_voltage ]]; then | |
- CommitWrite | |
- fi | |
+ # TODO - remap reclock entries for: | |
+ # 780M: 2700, 2800 (7940H,7940HS) | |
+ # 760M: 2600 | |
+ # 740M: 2500 | |
+ # 680M: 2200, 2400 (6900HX,6980HX) | |
+ # 660M: 1800, 1900 (7535HS,7535U) | |
+ # 610M: 1900, 2200 (7945HX,7845HX,7745HX,7645HX) | |
+ # Vega (PRO only): 1800, 2000 (7730U,7530U) | |
- if [[ "$WRITE_PATH" == /sys/class/hwmon/hwmon*/power*_cap ]]; then | |
- CommitWrite | |
- fi | |
+ # GPU Reclocking example | |
+ # TODO: change this to GPU model based | |
+ if [[ -n $USERIES6 ]]; then | |
+ WRITE_VALUE=$(echo "$WRITE_VALUE" | sed -e 's/ 1600/ 2200/g') | |
+ WRITE_VALUE=$(echo "$WRITE_VALUE" | sed -e 's/ 1500/ 2000/g') | |
+ WRITE_VALUE=$(echo "$WRITE_VALUE" | sed -e 's/ 1400/ 1800/g') | |
+ WRITE_VALUE=$(echo "$WRITE_VALUE" | sed -e 's/ 1300/ 1600/g') | |
+ WRITE_VALUE=$(echo "$WRITE_VALUE" | sed -e 's/ 1200/ 1400/g') | |
+ WRITE_VALUE=$(echo "$WRITE_VALUE" | sed -e 's/ 1100/ 1300/g') | |
+ WRITE_VALUE=$(echo "$WRITE_VALUE" | sed -e 's/ 1000/ 1200/g') | |
+ WRITE_VALUE=$(echo "$WRITE_VALUE" | sed -e 's/ 900/ 1100/g') | |
+ WRITE_VALUE=$(echo "$WRITE_VALUE" | sed -e 's/ 800/ 1000/g') | |
+ WRITE_VALUE=$(echo "$WRITE_VALUE" | sed -e 's/ 700/ 900/g') | |
+ WRITE_VALUE=$(echo "$WRITE_VALUE" | sed -e 's/ 600/ 800/g') | |
+ WRITE_VALUE=$(echo "$WRITE_VALUE" | sed -e 's/ 500/ 700/g') | |
+ WRITE_VALUE=$(echo "$WRITE_VALUE" | sed -e 's/ 400/ 600/g') | |
+ WRITE_VALUE=$(echo "$WRITE_VALUE" | sed -e 's/ 300/ 400/g') | |
+ WRITE_VALUE=$(echo "$WRITE_VALUE" | sed -e 's/ 200/ 200/g') | |
+ echo "$WRITE_VALUE" >> ~/.power | |
+ fi | |
+ CommitWrite | |
+ done | |
+fi | |
- if [[ "$WRITE_PATH" == /sys/devices/platform/*/*/*/iio:device*/in_illuminance_integration_time ]]; then | |
- CommitWrite | |
- fi | |
+if [[ "$WRITE_PATH" == /sys/class/hwmon/hwmon*/power*_cap ]]; then | |
- if [[ "$WRITE_PATH" == /sys/devices/*/*/*/*/hwmon/hwmon*/led_brightness ]]; then | |
- CommitWrite | |
- fi | |
+ # if device does not have a battery don't apply any power changes | |
+ if [[ -z $(upower -i "$(upower -e | grep 'BAT')" | grep -E "percentage" | awk '{print $2}' | sed 's/\%//g') ]]; then | |
+ exit 0 | |
+ fi | |
- if [[ "$WRITE_PATH" == /sys/devices/*/*/*/*/hwmon/hwmon*/content_adaptive_brightness ]]; then | |
- CommitWrite | |
- fi | |
+ # Deck and U series low-power/PRO have same 15w tdp | |
+ if [[ -n $DECK ]] || [[ -n $USERIES7LP ]]; then | |
+ CommitWrite | |
+ fi | |
- DeclineWrite | |
+ # TODO - remap TDP entries for: | |
+ # HXSERIES6,HSERIES6: 45w | |
+ # HSSERIES6: 35w | |
+ # HXSERIES7: 55-75w | |
+ # HSERIES7, HSSERIES7: 35-54w | |
+ # 6000 and 7000 U series have same 15-30w tdp, handled by adjusting temperature instead | |
+ | |
+ # TDP adjust example based on temperature | |
+ if [[ -n $USERIES6 ]] || [[ -n $USERIES7 ]]; then | |
+ if [[ "$WRITE_VALUE" == "15000000" ]]; then | |
+ ryzenadj -f 90 | |
+ fi | |
+ if [[ "$WRITE_VALUE" == "14000000" ]]; then | |
+ ryzenadj -f 86 | |
+ fi | |
+ if [[ "$WRITE_VALUE" == "13000000" ]]; then | |
+ ryzenadj -f 82 | |
+ fi | |
+ if [[ "$WRITE_VALUE" == "12000000" ]]; then | |
+ ryzenadj -f 78 | |
+ fi | |
+ if [[ "$WRITE_VALUE" == "11000000" ]]; then | |
+ ryzenadj -f 74 | |
+ fi | |
+ if [[ "$WRITE_VALUE" == "10000000" ]]; then | |
+ ryzenadj -f 70 | |
+ fi | |
+ if [[ "$WRITE_VALUE" == "9000000" ]]; then | |
+ ryzenadj -f 66 | |
+ fi | |
+ if [[ "$WRITE_VALUE" == "8000000" ]]; then | |
+ ryzenadj -f 62 | |
+ fi | |
+ if [[ "$WRITE_VALUE" == "7000000" ]]; then | |
+ ryzenadj -f 58 | |
+ fi | |
+ if [[ "$WRITE_VALUE" == "6000000" ]]; then | |
+ ryzenadj -f 54 | |
+ fi | |
+ if [[ "$WRITE_VALUE" == "5000000" ]]; then | |
+ ryzenadj -f 50 | |
+ fi | |
+ if [[ "$WRITE_VALUE" == "4000000" ]]; then | |
+ ryzenadj -f 46 | |
+ fi | |
+ if [[ "$WRITE_VALUE" == "3000000" ]]; then | |
+ ryzenadj -f 42 | |
+ fi | |
+ exit 0 | |
+ fi | |
+ | |
+ # TDP adjust example based on TDP | |
+ if [[ -n $ZSERIES ]]; then | |
+ if [[ "$WRITE_VALUE" == "15000000" ]]; then | |
+ WRITE_VALUE="35000000" | |
+ CommitWrite | |
+ fi | |
+ if [[ "$WRITE_VALUE" == "14000000" ]]; then | |
+ WRITE_VALUE="33000000" | |
+ CommitWrite | |
+ fi | |
+ if [[ "$WRITE_VALUE" == "13000000" ]]; then | |
+ WRITE_VALUE="31000000" | |
+ CommitWrite | |
+ fi | |
+ if [[ "$WRITE_VALUE" == "12000000" ]]; then | |
+ WRITE_VALUE="29000000" | |
+ CommitWrite | |
+ fi | |
+ if [[ "$WRITE_VALUE" == "11000000" ]]; then | |
+ WRITE_VALUE="27000000" | |
+ CommitWrite | |
+ fi | |
+ if [[ "$WRITE_VALUE" == "10000000" ]]; then | |
+ WRITE_VALUE="25000000" | |
+ CommitWrite | |
+ fi | |
+ if [[ "$WRITE_VALUE" == "9000000" ]]; then | |
+ WRITE_VALUE="23000000" | |
+ CommitWrite | |
+ fi | |
+ if [[ "$WRITE_VALUE" == "8000000" ]]; then | |
+ WRITE_VALUE="21000000" | |
+ CommitWrite | |
+ fi | |
+ if [[ "$WRITE_VALUE" == "7000000" ]]; then | |
+ WRITE_VALUE="19000000" | |
+ CommitWrite | |
+ fi | |
+ if [[ "$WRITE_VALUE" == "6000000" ]]; then | |
+ WRITE_VALUE="17000000" | |
+ CommitWrite | |
+ fi | |
+ if [[ "$WRITE_VALUE" == "5000000" ]]; then | |
+ WRITE_VALUE="15000000" | |
+ CommitWrite | |
+ fi | |
+ if [[ "$WRITE_VALUE" == "4000000" ]]; then | |
+ WRITE_VALUE="12000000" | |
+ CommitWrite | |
+ fi | |
+ if [[ "$WRITE_VALUE" == "3000000" ]]; then | |
+ WRITE_VALUE="10000000" | |
+ CommitWrite | |
+ fi | |
+ fi | |
fi | |
+if [[ "$WRITE_PATH" == /sys/devices/platform/*/*/*/iio:device*/in_illuminance_integration_time ]]; then | |
+ CommitWrite | |
+fi | |
+ | |
+if [[ "$WRITE_PATH" == /sys/devices/*/*/*/*/hwmon/hwmon*/led_brightness ]]; then | |
+ CommitWrite | |
+fi | |
+ | |
+if [[ "$WRITE_PATH" == /sys/devices/*/*/*/*/hwmon/hwmon*/content_adaptive_brightness ]]; then | |
+ CommitWrite | |
+fi | |
+ | |
+DeclineWrite | |
+ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment