#=============================================================================
# Copyright (c) 2023 Qualcomm Technologies, Inc.
# All Rights Reserved.
# Confidential and Proprietary - Qualcomm Technologies, Inc.
#=============================================================================

get_num_logical_cores_in_physical_cluster()
{
	i=0
	logical_cores=(0 0 0 0 0 0)
	if [ -f /sys/devices/system/cpu/cpu0/topology/cluster_id ] ; then
		physical_cluster="cluster_id"
	else
		physical_cluster="physical_package_id"
	fi
	for i in `ls -d /sys/devices/system/cpu/cpufreq/policy[0-9]*`
	do
		if [ -e $i ] ; then
			num_cores=$(cat $i/related_cpus | wc -w)
			first_cpu=$(echo "$i" | sed 's/[^0-9]*//g')
			cluster_id=$(cat /sys/devices/system/cpu/cpu$first_cpu/topology/$physical_cluster)
			logical_cores[cluster_id]=$num_cores
		fi
	done
	cpu_topology=""
	j=0
	physical_cluster_count=$1
	while [[ $j -lt $physical_cluster_count ]]; do
		cpu_topology+=${logical_cores[$j]}
		if [ $j -lt $physical_cluster_count-1 ]; then
			cpu_topology+="_"
		fi
		j=$((j+1))
	done
	echo $cpu_topology
}

#Implementing this mechanism to jump to powersave governor if the script is not running
#as it would be an indication for devs for debug purposes.
fallback_setting()
{
	governor="powersave"
	for i in `ls -d /sys/devices/system/cpu/cpufreq/policy[0-9]*`
	do
		if [ -f $i/scaling_governor ] ; then
			echo $governor > $i/scaling_governor
		fi
	done
}

variant=$(get_num_logical_cores_in_physical_cluster "$1")
echo "CPU topology: ${variant}"
case "$variant" in
	"3_4_1")
	/vendor/bin/sh /vendor/bin/init.kernel.post_boot-kalama_default_3_4_1.sh
	;;
	"3_2_1")
	/vendor/bin/sh /vendor/bin/init.kernel.post_boot-kalama_3_2_1.sh
	;;
	"3_4_0")
	/vendor/bin/sh /vendor/bin/init.kernel.post_boot-kalama_3_4_0.sh
	;;
	*)
	echo "***WARNING***: Postboot script not present for the variant ${variant}"
	fallback_setting
	;;
esac

# Moto added, yangbq2
product_specific=`getprop ro.vendor.product.device`
case "$product_specific" in
	"rtwo")
		if [ $rev == "1.0" ] || [ $rev == "1.1" ]; then
			echo "no specific config for 1.0 or 1.1"
		else
			# configure settings for silver cluster
			echo 1017600 > /sys/devices/system/cpu/cpufreq/policy0/walt/hispeed_freq
			echo 787200 > /sys/devices/system/cpu/cpufreq/policy0/walt/rtg_boost_freq
			# configure settings for gold cluster
			echo 1401600 > /sys/devices/system/cpu/cpufreq/policy3/walt/hispeed_freq
			echo 614400 > /sys/devices/system/cpu/cpufreq/policy3/walt/rtg_boost_freq
			# configure settings for prime cluster
			echo 1593600 > /sys/devices/system/cpu/cpufreq/policy7/walt/hispeed_freq
		fi
	;;
	*)
		echo "no specific config for $product_specific"
	;;
esac
# Moto end
