tests: suspend/resume: Increase number of processed frames
[renesas/vsp-tests.git] / tests / vsp-unit-test-0020.sh
1 #!/bin/sh
2
3 #
4 # Test power-management suspend/resume whilst pipelines are active
5 #
6 # Utilise the basic RPF->WPF packing test case as a measure that the hardware
7 # is operable while we perform test suspend and resume, and verify that it is
8 # still successful even with a suspend resume cycle in the middle of the test.
9 #
10
11 . ./vsp-lib.sh
12
13 features="rpf.0 wpf.0"
14
15 # These can be extracted from /sys/power/pm_test
16 suspend_modes="freezer devices platform processors core"
17
18 # This extended function performs the same as it's non-extended name-sake, but
19 # runs the pipeline for a configurable number of frames.
20 test_extended_wpf_packing() {
21         local format=$1
22         local num_frames=$2
23
24         pipe_configure rpf-wpf 0 0
25         format_configure rpf-wpf 0 0 ARGB32 1024x768 $format
26
27         vsp_runner rpf.0 --count=$num_frames &
28         vsp_runner wpf.0 --count=$num_frames --skip=$((num_frames-3))
29
30         local result=$(compare_frames)
31         [ x$result == xpass ] && return 0 || return 1
32 }
33
34 test_hw_pipe() {
35         # Run the pipeline for 1000 frames. The suspend action should occur in
36         # the middle.
37         test_extended_wpf_packing RGB24 1000
38 }
39
40 test_suspend_resume() {
41         local result
42         local test_pid
43
44         test_start "Testing active pipeline suspend/resume in suspend:$mode"
45
46         # Verify the test is available
47         grep -q $mode /sys/power/pm_test
48         if [ $? != 0 ]; then
49                 test_complete skip
50                 return
51         fi
52
53         # Set the hardware running in parallel while we suspend
54         test_hw_pipe &
55         test_pid=$!
56
57         # Make sure the pipeline has time to start
58         sleep 1
59
60         # Set the test mode
61         echo $mode > /sys/power/pm_test
62
63         # Commence suspend
64         # The pm_test framework will automatically resume after 5 seconds
65         echo mem > /sys/power/state
66
67         # Wait for the pipeline to complete
68         wait $test_pid
69         result=$?
70
71         if [ $result == 0 ]; then
72                 test_complete pass
73         else
74                 test_complete fail
75         fi
76 }
77
78 test_main() {
79         local mode
80
81         # Check for pm-suspend test option
82         if [ ! -e /sys/power/pm_test ] ; then
83                 echo "$0: suspend/resume testing requires CONFIG_PM_DEBUG"
84                 return
85         fi;
86
87         for mode in $suspend_modes ; do
88                 test_suspend_resume $mode
89         done;
90 }
91
92 test_init $0 "$features"
93 test_run