Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save GloriousEggroll/214dddb91288a83bfb47da9ed08d9f04 to your computer and use it in GitHub Desktop.
Save GloriousEggroll/214dddb91288a83bfb47da9ed08d9f04 to your computer and use it in GitHub Desktop.
From c3014c9bd771d5624230ebf464ba20816b9b2479 Mon Sep 17 00:00:00 2001
From: GloriousEggroll <gloriouseggroll@gmail.com>
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