From af4431b9efaff1dfa9c1e4a985c7e70d1d82b847 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Leonardo=20Eug=C3=AAnio?= <lelgenio@disroot.org>
Date: Fri, 17 Jan 2025 20:29:22 -0300
Subject: [PATCH] amdgpu: update fan controller

---
 scripts/amd-fan-control | 27 +++++++++++++++++++--------
 1 file changed, 19 insertions(+), 8 deletions(-)

diff --git a/scripts/amd-fan-control b/scripts/amd-fan-control
index 641c5cf..1f4c3e7 100755
--- a/scripts/amd-fan-control
+++ b/scripts/amd-fan-control
@@ -18,7 +18,7 @@ bail() {
     exit 1
 }
 
-if ! [ -d $HWMON ]; then
+if ! [ -d "$HWMON" ]; then
     bail "Invalid HWMON"
 fi
 
@@ -28,20 +28,31 @@ if ! [ -f $TEMP_INPUT ]; then
     bail "Invalid TEMP_INPUT"
 fi
 
-MIN="$2"
-MAX="$3"
+TEMP_MIN="$2"
+TEMP_MAX="$3"
+
+if [ -z "$TEMP_MIN" ];then
+  bail "No minimum temperature provided"
+fi
+
+if [ -z "$TEMP_MAX" ];then
+  bail "No maximum temperature provided"
+fi
+
+PWM_MIN=0
+PWM_MAX=255
 
 echo "Running..." >&2
 while true; do
     TEMPERATURE_RAW=$(cat "$TEMP_INPUT")
     TEMPERATURE="$(( $TEMPERATURE_RAW / 1000 ))"
     # Remap from a number between 60_000..90_000 to 0..255
-    PWM=$(( ($TEMPERATURE - $MIN) * 255 / ($MAX - $MIN) ))
+    PWM=$(( ($TEMPERATURE - $TEMP_MIN) * $PWM_MAX / ($TEMP_MAX - $TEMP_MIN) ))
 
-    if [ "$PWM" -gt 255 ]; then
-        PWM=255
-    elif [ "$PWM" -lt 0 ]; then
-        PWM=0
+    if [ "$PWM" -gt $PWM_MAX ]; then
+        PWM=$PWM_MAX
+    elif [ "$PWM" -lt $PWM_MIN ]; then
+        PWM=$PWM_MIN
     fi
 
     echo 1 > "$HWMON/pwm1_enable"