#!/bin/bash

CPUFREQ="$1"
RAMFREQ="$2"

VALID_RAM_FREQS=("400000" "500000" "600000" "700000" "800000")

usage() {
  echo "usage: $0 <cpu_freq> <ram_freq>"
  echo "  <cpu_freq> must be one of:"
  cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
  echo "  <ram_freq> must be one of: ${VALID_RAM_FREQS[*]}"
  exit 1
}

if [ -z "$CPUFREQ" ] || [ -z "$RAMFREQ" ]; then
  echo "error: missing arguments"
  usage
fi

if ! grep -qw "$CPUFREQ" /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies; then
  echo "error: invalid cpu frequency: $CPUFREQ"
  usage
fi

RAM_OK=false
for f in "${VALID_RAM_FREQS[@]}"; do
  if [ "$f" == "$RAMFREQ" ]; then
    RAM_OK=true
    break
  fi
done

if [ "$RAM_OK" = false ]; then
  echo "error: invalid ram frequency: $RAMFREQ"
  usage
fi

# apply settings
echo "$CPUFREQ" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
echo disabled > /sys/kernel/debug/msm_otg/bus_voting 
echo 0 > /sys/kernel/debug/msm-bus-dbg/shell-client/update_request
echo 1 > /sys/kernel/debug/msm-bus-dbg/shell-client/mas
echo 512 > /sys/kernel/debug/msm-bus-dbg/shell-client/slv
echo 0 > /sys/kernel/debug/msm-bus-dbg/shell-client/ab
echo active clk2 0 1 max "$RAMFREQ" > /sys/kernel/debug/rpm_send_msg/message
echo 1 > /sys/kernel/debug/msm-bus-dbg/shell-client/update_request

echo "set successfully"
