diff options
author | Jeff McGee <jeff.mcgee@intel.com> | 2014-01-21 17:14:31 -0600 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2014-01-27 23:37:50 +0100 |
commit | 4e3b661b480b0a43d9cf45afaf0cae835cb66dcc (patch) | |
tree | 9b3e42ac850d29afcd3feddde066a929c0b32d05 | |
parent | 22533b1eb038dbf4d3dc79945b81cefc4aac64be (diff) |
pm_rps: Expand on min and max config testing
Add a function that methodically varies min and max to exercise
several valid and invalid combinations. Allow the caller to
define what is to be checked between each step.
Signed-off-by: Jeff McGee <jeff.mcgee@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r-- | tests/pm_rps.c | 106 |
1 files changed, 77 insertions, 29 deletions
diff --git a/tests/pm_rps.c b/tests/pm_rps.c index f7f119c0..e5cbfd1a 100644 --- a/tests/pm_rps.c +++ b/tests/pm_rps.c @@ -134,6 +134,81 @@ static void dumpit(void) #define dump() if (verbose) dumpit() #define log(...) if (verbose) printf(__VA_ARGS__) +static void min_max_config(void (*check)(void)) +{ + int fmid = (frpn + frp0) / 2; + + log("Check original min and max...\n"); + check(); + + log("Set min=RPn and max=RP0...\n"); + writeval(stuff[MIN].filp, frpn); + writeval(stuff[MAX].filp, frp0); + check(); + + log("Increase min to midpoint...\n"); + writeval(stuff[MIN].filp, fmid); + check(); + + log("Increase min to RP0...\n"); + writeval(stuff[MIN].filp, frp0); + check(); + + log("Increase min above RP0 (invalid)...\n"); + writeval_inval(stuff[MIN].filp, frp0 + 1000); + check(); + + log("Decrease max to RPn (invalid)...\n"); + writeval_inval(stuff[MAX].filp, frpn); + check(); + + log("Decrease min to midpoint...\n"); + writeval(stuff[MIN].filp, fmid); + check(); + + log("Decrease min to RPn...\n"); + writeval(stuff[MIN].filp, frpn); + check(); + + log("Decrease min below RPn (invalid)...\n"); + writeval_inval(stuff[MIN].filp, 0); + check(); + + log("Decrease max to midpoint...\n"); + writeval(stuff[MAX].filp, fmid); + check(); + + log("Decrease max to RPn...\n"); + writeval(stuff[MAX].filp, frpn); + check(); + + log("Decrease max below RPn (invalid)...\n"); + writeval_inval(stuff[MAX].filp, 0); + check(); + + log("Increase min to RP0 (invalid)...\n"); + writeval_inval(stuff[MIN].filp, frp0); + check(); + + log("Increase max to midpoint...\n"); + writeval(stuff[MAX].filp, fmid); + check(); + + log("Increase max to RP0...\n"); + writeval(stuff[MAX].filp, frp0); + check(); + + log("Increase max above RP0 (invalid)...\n"); + writeval_inval(stuff[MAX].filp, frp0 + 1000); + check(); +} + +static void idle_check(void) +{ + dump(); + checkit(); +} + static void pm_rps_exit_handler(int sig) { if (origmin > fmax) { @@ -210,35 +285,8 @@ int main(int argc, char **argv) igt_install_exit_handler(pm_rps_exit_handler); } - igt_subtest("min-max-config-at-idle") { - log("Original min = %d\nOriginal max = %d\n", origmin, origmax); - - dump(); - - checkit(); - setfreq(origmin); - dump(); - igt_assert(fcur == fmin); - setfreq(origmax); - dump(); - igt_assert(fcur == fmax); - checkit(); - - /* And some errors */ - writeval_inval(stuff[MIN].filp, frpn - 1); - writeval_inval(stuff[MAX].filp, frp0 + 1000); - checkit(); - - writeval_inval(stuff[MIN].filp, fmax + 1000); - writeval_inval(stuff[MAX].filp, fmin - 1); - checkit(); - - writeval_inval(stuff[MIN].filp, 0x11111110); - writeval_inval(stuff[MAX].filp, 0); - - writeval(stuff[MIN].filp, origmin); - writeval(stuff[MAX].filp, origmax); - } + igt_subtest("min-max-config-at-idle") + min_max_config(idle_check); igt_exit(); } |