aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Medhurst <tixy@linaro.org>2015-12-22 10:36:33 +0000
committerAmit Daniel Kachhap <amit.kachhap@arm.com>2018-07-10 15:40:33 +0530
commit9dc5984e0eb9b84c359cb181ac02d7ff1b0f4c27 (patch)
tree9f16095afa28b85f434e2df5af4936bd698155e5
parent6b49336359f1b60daa1b60bd5030344665b542d6 (diff)
firmware: arm_scpi_test: Add tstress tests targeted at just the PMIC
Signed-off-by: Jon Medhurst <tixy@linaro.org>
-rw-r--r--drivers/firmware/arm_scpi_test.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/drivers/firmware/arm_scpi_test.c b/drivers/firmware/arm_scpi_test.c
index 2348928a0e88..80763e4d74a5 100644
--- a/drivers/firmware/arm_scpi_test.c
+++ b/drivers/firmware/arm_scpi_test.c
@@ -66,6 +66,8 @@ static struct mutex pd_lock[MAX_POWER_DOMAINS];
static int test_flags;
+static int sensor_pmic = -1;
+
static u32 random_seed;
@@ -166,6 +168,8 @@ static void init_sensors(void)
pr_err("FAILED bad name\n");
pr_info("sensor[%d] value is %llu\n", id, get_sensor(id));
+ if (strstr(name, "PMIC"))
+ sensor_pmic = id;
}
}
@@ -249,7 +253,33 @@ static void init_dvfs(void)
num_pd = pd;
}
+static int stress_pmic(void *data)
+{
+ int sensor, pd, opp;
+
+ while (!kthread_should_stop()) {
+ sensor = sensor_pmic;
+ pd = random(num_pd);
+ opp = random(num_opps[pd]);
+ switch (random(3)) {
+ case 0:
+ if (sensor >= 0) {
+ get_sensor(sensor);
+ break;
+ }
+ /* If no sensor, do DFVS... */
+ case 1:
+ set_dvfs(pd, opp);
+ break;
+ default:
+ msleep(random(20));
+ break;
+ }
+ }
+
+ return 0;
+}
static int stress_all(void *data)
{
@@ -348,6 +378,12 @@ static struct test tests[] = {
stress_all, FLAG_SERIAL_PD, MAX_TEST_THREADS, 60},
{"Stress All, no concurrent DVFS",
stress_all, FLAG_SERIAL_DVFS, MAX_TEST_THREADS, 60},
+ {"Stress PMIC, concurrent DVFS",
+ stress_pmic, 0, MAX_TEST_THREADS, 60},
+ {"Stress PMIC, concurrent DVFS on different PDs",
+ stress_pmic, FLAG_SERIAL_PD, MAX_TEST_THREADS, 60},
+ {"Stress PMIC, no concurrent DVFS",
+ stress_pmic, FLAG_SERIAL_DVFS, MAX_TEST_THREADS, 60},
{}
};