1*1cf66feeSJonathan Doman#!/bin/sh 294c94bfbSJonathan Doman 394c94bfbSJonathan Doman# Utility to print all SST data present on D-Bus. 494c94bfbSJonathan Doman# Simply searches for all objects implementing known interfaces and prints out 594c94bfbSJonathan Doman# the property values on those interfaces. 694c94bfbSJonathan Doman 7703a1856SJonathan Domanset -e 8703a1856SJonathan Doman 994c94bfbSJonathan DomanBUSCTL='busctl' 1094c94bfbSJonathan DomanXYZ='xyz.openbmc_project' 1194c94bfbSJonathan DomanCPU_INTF="$XYZ.Control.Processor.CurrentOperatingConfig" 1294c94bfbSJonathan DomanCONFIG_INTF="$XYZ.Inventory.Item.Cpu.OperatingConfig" 1394c94bfbSJonathan Doman 14*1cf66feeSJonathan Domantrim_quotes() { 1594c94bfbSJonathan Doman trim_obj=${1%\"} 1694c94bfbSJonathan Doman trim_obj=${trim_obj#\"} 173e6be2eeSPatrick Williams echo "$trim_obj" 1894c94bfbSJonathan Doman} 1994c94bfbSJonathan Doman 20*1cf66feeSJonathan Domanobject_mapper_call() { 21*1cf66feeSJonathan Doman $BUSCTL call $XYZ.ObjectMapper /xyz/openbmc_project/object_mapper \ 22*1cf66feeSJonathan Doman $XYZ.ObjectMapper "$@" 23*1cf66feeSJonathan Doman} 24*1cf66feeSJonathan Doman 25*1cf66feeSJonathan Domanget_sub_tree_paths() { 26*1cf66feeSJonathan Doman resp=$(object_mapper_call GetSubTreePaths sias "$1" 0 "$2" "$3" \ 2794c94bfbSJonathan Doman | cut -d' ' -f3-) 2894c94bfbSJonathan Doman for obj in $resp 2994c94bfbSJonathan Doman do 303e6be2eeSPatrick Williams trim_quotes "$obj" 3194c94bfbSJonathan Doman done 3294c94bfbSJonathan Doman} 3394c94bfbSJonathan Doman 34*1cf66feeSJonathan Domanget_service_from_object() { 35*1cf66feeSJonathan Doman trim_quotes "$(object_mapper_call GetObject sas "$1" "$2" "$3" \ 363e6be2eeSPatrick Williams | cut -d' ' -f3)" 3794c94bfbSJonathan Doman} 3894c94bfbSJonathan Doman 39*1cf66feeSJonathan Domanget_property_names() { 4094c94bfbSJonathan Doman service=$1 4194c94bfbSJonathan Doman object=$2 4294c94bfbSJonathan Doman intf=$3 433e6be2eeSPatrick Williams $BUSCTL introspect "$service" "$object" "$intf" \ 4494c94bfbSJonathan Doman | awk '/property/ {print substr($1, 2)}' 4594c94bfbSJonathan Doman} 4694c94bfbSJonathan Doman 47*1cf66feeSJonathan Domanget_property() { 4894c94bfbSJonathan Doman service=$1 4994c94bfbSJonathan Doman object=$2 5094c94bfbSJonathan Doman intf=$3 5194c94bfbSJonathan Doman prop=$4 523e6be2eeSPatrick Williams $BUSCTL get-property "$service" "$object" "$intf" "$prop" 5394c94bfbSJonathan Doman} 5494c94bfbSJonathan Doman 55*1cf66feeSJonathan Domanset_property() { 56703a1856SJonathan Doman service=$1 57703a1856SJonathan Doman object=$2 58703a1856SJonathan Doman intf=$3 59703a1856SJonathan Doman prop=$4 60703a1856SJonathan Doman signature=$5 61703a1856SJonathan Doman value=$6 623e6be2eeSPatrick Williams $BUSCTL set-property "$service" "$object" "$intf" "$prop" \ 633e6be2eeSPatrick Williams "$signature" "$value" 64703a1856SJonathan Doman} 6594c94bfbSJonathan Doman 66*1cf66feeSJonathan Domanshow() { 6794c94bfbSJonathan Doman cpu_paths=$(get_sub_tree_paths "/" 1 "$CPU_INTF") 6894c94bfbSJonathan Doman for cpu_path in $cpu_paths 6994c94bfbSJonathan Doman do 703e6be2eeSPatrick Williams service=$(get_service_from_object "$cpu_path" 1 "$CPU_INTF") 7194c94bfbSJonathan Doman echo "Found SST on $cpu_path on $service" 723e6be2eeSPatrick Williams for prop in $(get_property_names "$service" "$cpu_path" "$CPU_INTF") 7394c94bfbSJonathan Doman do 743e6be2eeSPatrick Williams echo " $prop: $(get_property "$service" "$cpu_path" "$CPU_INTF" "$prop")" 7594c94bfbSJonathan Doman done 7694c94bfbSJonathan Doman 7794c94bfbSJonathan Doman profiles=$(get_sub_tree_paths "$cpu_path" 1 "$CONFIG_INTF") 7894c94bfbSJonathan Doman for profile in $profiles 7994c94bfbSJonathan Doman do 8094c94bfbSJonathan Doman echo 8194c94bfbSJonathan Doman echo " Found Profile $profile" 823e6be2eeSPatrick Williams for prop in $(get_property_names "$service" "$profile" "$CONFIG_INTF") 8394c94bfbSJonathan Doman do 843e6be2eeSPatrick Williams echo " $prop: $(get_property "$service" "$profile" "$CONFIG_INTF" "$prop")" 8594c94bfbSJonathan Doman done 8694c94bfbSJonathan Doman done 8794c94bfbSJonathan Doman done 88703a1856SJonathan Doman} 89703a1856SJonathan Doman 90*1cf66feeSJonathan Domanset_cpu_prop() { 91703a1856SJonathan Doman cpu_basename=$1 92703a1856SJonathan Doman prop=$2 93703a1856SJonathan Doman signature=$3 94703a1856SJonathan Doman value=$4 95703a1856SJonathan Doman 96703a1856SJonathan Doman cpu_paths=$(get_sub_tree_paths "/" 1 "$CPU_INTF") 97703a1856SJonathan Doman for cpu_path in $cpu_paths 98703a1856SJonathan Doman do 99*1cf66feeSJonathan Doman case $cpu_path in 100*1cf66feeSJonathan Doman */$cpu_basename) ;; 101*1cf66feeSJonathan Doman *) continue ;; 102*1cf66feeSJonathan Doman esac 103703a1856SJonathan Doman 104*1cf66feeSJonathan Doman if [ "$prop" = "AppliedConfig" ] 105703a1856SJonathan Doman then 106703a1856SJonathan Doman value=$cpu_path/$value 107703a1856SJonathan Doman fi 108703a1856SJonathan Doman 1093e6be2eeSPatrick Williams service=$(get_service_from_object "$cpu_path" 1 "$CPU_INTF") 1103e6be2eeSPatrick Williams set_property "$service" "$cpu_path" "$CPU_INTF" "$prop" "$signature" "$value" 111703a1856SJonathan Doman return 0 112703a1856SJonathan Doman done 113703a1856SJonathan Doman 114703a1856SJonathan Doman echo "$cpu_basename not found" 115703a1856SJonathan Doman return 1 116703a1856SJonathan Doman} 117703a1856SJonathan Doman 118*1cf66feeSJonathan Domanif [ "${DEBUG:=0}" -eq 1 ] 119703a1856SJonathan Domanthen 120703a1856SJonathan Doman set -x 121703a1856SJonathan Domanfi 122703a1856SJonathan Doman 123703a1856SJonathan Domanaction=${1:-show} 124703a1856SJonathan Doman 125703a1856SJonathan Domancase "$action" in 126703a1856SJonathan Doman show) show ;; 1273e6be2eeSPatrick Williams set-config) set_cpu_prop "$2" AppliedConfig o "$3" ;; 1283e6be2eeSPatrick Williams set-bf) set_cpu_prop "$2" BaseSpeedPriorityEnabled b "$3" ;; 129703a1856SJonathan Doman *) 130703a1856SJonathan Doman echo "Usage:" 131703a1856SJonathan Doman echo "$0 (show|set-config|set-bf) [ARGS...]" 132703a1856SJonathan Doman echo "" 133703a1856SJonathan Doman echo "show (Default action) - show info" 134703a1856SJonathan Doman echo "set-config cpuN configM - Set applied operating config for cpuN to configM" 135703a1856SJonathan Doman echo "set-bf cpuN val - Set SST-BF enablement for cpuN to val (boolean)" 136703a1856SJonathan Doman ;; 137703a1856SJonathan Domanesac 138