xref: /OK3568_Linux_fs/kernel/tools/power/cpupower/cpupower-completion.sh (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun# -*- shell-script -*-
2*4882a593Smuzhiyun# bash completion script for cpupower
3*4882a593Smuzhiyun# Taken from git.git's completion script.
4*4882a593Smuzhiyun
5*4882a593Smuzhiyun_cpupower_commands="frequency-info frequency-set idle-info idle-set set info monitor"
6*4882a593Smuzhiyun
7*4882a593Smuzhiyun_frequency_info ()
8*4882a593Smuzhiyun{
9*4882a593Smuzhiyun	local flags="-f -w -l -d -p -g -a -s -y -o -m -n --freq --hwfreq --hwlimits --driver --policy --governors --related-cpus --affected-cpus --stats --latency --proc --human --no-rounding"
10*4882a593Smuzhiyun	local prev="${COMP_WORDS[COMP_CWORD-1]}"
11*4882a593Smuzhiyun	local cur="${COMP_WORDS[COMP_CWORD]}"
12*4882a593Smuzhiyun	case "$prev" in
13*4882a593Smuzhiyun		frequency-info) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;;
14*4882a593Smuzhiyun	esac
15*4882a593Smuzhiyun}
16*4882a593Smuzhiyun
17*4882a593Smuzhiyun_frequency_set ()
18*4882a593Smuzhiyun{
19*4882a593Smuzhiyun	local flags="-f -g --freq --governor -d --min -u --max -r --related"
20*4882a593Smuzhiyun	local prev="${COMP_WORDS[COMP_CWORD-1]}"
21*4882a593Smuzhiyun	local cur="${COMP_WORDS[COMP_CWORD]}"
22*4882a593Smuzhiyun	case "$prev" in
23*4882a593Smuzhiyun		-f| --freq | -d | --min | -u | --max)
24*4882a593Smuzhiyun		if [ -d /sys/devices/system/cpu/cpufreq/ ] ; then
25*4882a593Smuzhiyun			COMPREPLY=($(compgen -W '$(cat $(ls -d /sys/devices/system/cpu/cpufreq/policy* | head -1)/scaling_available_frequencies)' -- "$cur"))
26*4882a593Smuzhiyun		fi ;;
27*4882a593Smuzhiyun		-g| --governor)
28*4882a593Smuzhiyun		if [ -d /sys/devices/system/cpu/cpufreq/ ] ; then
29*4882a593Smuzhiyun			COMPREPLY=($(compgen -W '$(cat $(ls -d /sys/devices/system/cpu/cpufreq/policy* | head -1)/scaling_available_governors)' -- "$cur"))
30*4882a593Smuzhiyun		fi;;
31*4882a593Smuzhiyun		frequency-set) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;;
32*4882a593Smuzhiyun	esac
33*4882a593Smuzhiyun}
34*4882a593Smuzhiyun
35*4882a593Smuzhiyun_idle_info()
36*4882a593Smuzhiyun{
37*4882a593Smuzhiyun	local flags="-f --silent"
38*4882a593Smuzhiyun	local prev="${COMP_WORDS[COMP_CWORD-1]}"
39*4882a593Smuzhiyun	local cur="${COMP_WORDS[COMP_CWORD]}"
40*4882a593Smuzhiyun	case "$prev" in
41*4882a593Smuzhiyun		idle-info) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;;
42*4882a593Smuzhiyun	esac
43*4882a593Smuzhiyun}
44*4882a593Smuzhiyun
45*4882a593Smuzhiyun_idle_set()
46*4882a593Smuzhiyun{
47*4882a593Smuzhiyun	local flags="-d --disable -e --enable -D --disable-by-latency -E --enable-all"
48*4882a593Smuzhiyun	local prev="${COMP_WORDS[COMP_CWORD-1]}"
49*4882a593Smuzhiyun	local cur="${COMP_WORDS[COMP_CWORD]}"
50*4882a593Smuzhiyun	case "$prev" in
51*4882a593Smuzhiyun		idle-set) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;;
52*4882a593Smuzhiyun	esac
53*4882a593Smuzhiyun}
54*4882a593Smuzhiyun
55*4882a593Smuzhiyun_set()
56*4882a593Smuzhiyun{
57*4882a593Smuzhiyun	local flags="--perf-bias, -b"
58*4882a593Smuzhiyun	local prev="${COMP_WORDS[COMP_CWORD-1]}"
59*4882a593Smuzhiyun	local cur="${COMP_WORDS[COMP_CWORD]}"
60*4882a593Smuzhiyun	case "$prev" in
61*4882a593Smuzhiyun		set) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;;
62*4882a593Smuzhiyun	esac
63*4882a593Smuzhiyun}
64*4882a593Smuzhiyun
65*4882a593Smuzhiyun_monitor()
66*4882a593Smuzhiyun{
67*4882a593Smuzhiyun	local flags="-l -m -i -c -v"
68*4882a593Smuzhiyun	local prev="${COMP_WORDS[COMP_CWORD-1]}"
69*4882a593Smuzhiyun	local cur="${COMP_WORDS[COMP_CWORD]}"
70*4882a593Smuzhiyun	case "$prev" in
71*4882a593Smuzhiyun		monitor) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;;
72*4882a593Smuzhiyun	esac
73*4882a593Smuzhiyun}
74*4882a593Smuzhiyun
75*4882a593Smuzhiyun_taskset()
76*4882a593Smuzhiyun{
77*4882a593Smuzhiyun	local prev_to_prev="${COMP_WORDS[COMP_CWORD-2]}"
78*4882a593Smuzhiyun	local prev="${COMP_WORDS[COMP_CWORD-1]}"
79*4882a593Smuzhiyun	local cur="${COMP_WORDS[COMP_CWORD]}"
80*4882a593Smuzhiyun	case "$prev_to_prev" in
81*4882a593Smuzhiyun		-c|--cpu) COMPREPLY=($(compgen -W "$_cpupower_commands" -- "$cur")) ;;
82*4882a593Smuzhiyun	esac
83*4882a593Smuzhiyun	case "$prev" in
84*4882a593Smuzhiyun		frequency-info) _frequency_info ;;
85*4882a593Smuzhiyun		frequency-set) _frequency_set ;;
86*4882a593Smuzhiyun		idle-info) _idle_info ;;
87*4882a593Smuzhiyun		idle-set) _idle_set ;;
88*4882a593Smuzhiyun		set) _set ;;
89*4882a593Smuzhiyun		monitor) _monitor ;;
90*4882a593Smuzhiyun	esac
91*4882a593Smuzhiyun
92*4882a593Smuzhiyun}
93*4882a593Smuzhiyun
94*4882a593Smuzhiyun_cpupower ()
95*4882a593Smuzhiyun{
96*4882a593Smuzhiyun	local i
97*4882a593Smuzhiyun	local c=1
98*4882a593Smuzhiyun	local command
99*4882a593Smuzhiyun
100*4882a593Smuzhiyun	while test $c -lt $COMP_CWORD; do
101*4882a593Smuzhiyun		if test $c == 1; then
102*4882a593Smuzhiyun			command="${COMP_WORDS[c]}"
103*4882a593Smuzhiyun		fi
104*4882a593Smuzhiyun		c=$((++c))
105*4882a593Smuzhiyun	done
106*4882a593Smuzhiyun
107*4882a593Smuzhiyun	# Complete name of subcommand if the user has not finished typing it yet.
108*4882a593Smuzhiyun	if test $c -eq $COMP_CWORD -a -z "$command"; then
109*4882a593Smuzhiyun		COMPREPLY=($(compgen -W "help -v --version -c --cpu $_cpupower_commands" -- "${COMP_WORDS[COMP_CWORD]}"))
110*4882a593Smuzhiyun		return
111*4882a593Smuzhiyun	fi
112*4882a593Smuzhiyun
113*4882a593Smuzhiyun	# Complete arguments to subcommands.
114*4882a593Smuzhiyun	case "$command" in
115*4882a593Smuzhiyun		-v|--version) return ;;
116*4882a593Smuzhiyun		-c|--cpu) _taskset ;;
117*4882a593Smuzhiyun		help) COMPREPLY=($(compgen -W "$_cpupower_commands" -- "${COMP_WORDS[COMP_CWORD]}")) ;;
118*4882a593Smuzhiyun		frequency-info) _frequency_info ;;
119*4882a593Smuzhiyun		frequency-set) _frequency_set ;;
120*4882a593Smuzhiyun		idle-info) _idle_info ;;
121*4882a593Smuzhiyun		idle-set) _idle_set ;;
122*4882a593Smuzhiyun		set) _set ;;
123*4882a593Smuzhiyun		monitor) _monitor ;;
124*4882a593Smuzhiyun	esac
125*4882a593Smuzhiyun}
126*4882a593Smuzhiyun
127*4882a593Smuzhiyuncomplete -o bashdefault -o default -F _cpupower cpupower 2>/dev/null \
128*4882a593Smuzhiyun    || complete -o default -F _cpupower cpupower
129