0001
0002
0003
0004
0005 #include <kunit/test.h>
0006 #include <linux/pm_qos.h>
0007
0008
0009 static void freq_qos_test_min(struct kunit *test)
0010 {
0011 struct freq_constraints qos;
0012 struct freq_qos_request req1, req2;
0013 int ret;
0014
0015 freq_constraints_init(&qos);
0016 memset(&req1, 0, sizeof(req1));
0017 memset(&req2, 0, sizeof(req2));
0018
0019 ret = freq_qos_add_request(&qos, &req1, FREQ_QOS_MIN, 1000);
0020 KUNIT_EXPECT_EQ(test, ret, 1);
0021 ret = freq_qos_add_request(&qos, &req2, FREQ_QOS_MIN, 2000);
0022 KUNIT_EXPECT_EQ(test, ret, 1);
0023
0024 KUNIT_EXPECT_EQ(test, freq_qos_read_value(&qos, FREQ_QOS_MIN), 2000);
0025
0026 ret = freq_qos_remove_request(&req2);
0027 KUNIT_EXPECT_EQ(test, ret, 1);
0028 KUNIT_EXPECT_EQ(test, freq_qos_read_value(&qos, FREQ_QOS_MIN), 1000);
0029
0030 ret = freq_qos_remove_request(&req1);
0031 KUNIT_EXPECT_EQ(test, ret, 1);
0032 KUNIT_EXPECT_EQ(test, freq_qos_read_value(&qos, FREQ_QOS_MIN),
0033 FREQ_QOS_MIN_DEFAULT_VALUE);
0034 }
0035
0036
0037 static void freq_qos_test_maxdef(struct kunit *test)
0038 {
0039 struct freq_constraints qos;
0040 struct freq_qos_request req1, req2;
0041 int ret;
0042
0043 freq_constraints_init(&qos);
0044 memset(&req1, 0, sizeof(req1));
0045 memset(&req2, 0, sizeof(req2));
0046 KUNIT_EXPECT_EQ(test, freq_qos_read_value(&qos, FREQ_QOS_MAX),
0047 FREQ_QOS_MAX_DEFAULT_VALUE);
0048
0049 ret = freq_qos_add_request(&qos, &req1, FREQ_QOS_MAX,
0050 FREQ_QOS_MAX_DEFAULT_VALUE);
0051 KUNIT_EXPECT_EQ(test, ret, 0);
0052 ret = freq_qos_add_request(&qos, &req2, FREQ_QOS_MAX,
0053 FREQ_QOS_MAX_DEFAULT_VALUE);
0054 KUNIT_EXPECT_EQ(test, ret, 0);
0055
0056
0057 ret = freq_qos_update_request(&req1, 1000);
0058 KUNIT_EXPECT_EQ(test, ret, 1);
0059 KUNIT_EXPECT_EQ(test, freq_qos_read_value(&qos, FREQ_QOS_MAX), 1000);
0060
0061
0062 ret = freq_qos_update_request(&req2, 2000);
0063 KUNIT_EXPECT_EQ(test, ret, 0);
0064 KUNIT_EXPECT_EQ(test, freq_qos_read_value(&qos, FREQ_QOS_MAX), 1000);
0065
0066
0067 ret = freq_qos_remove_request(&req1);
0068 KUNIT_EXPECT_EQ(test, ret, 1);
0069 KUNIT_EXPECT_EQ(test, freq_qos_read_value(&qos, FREQ_QOS_MAX), 2000);
0070 }
0071
0072
0073
0074
0075
0076
0077
0078 static void freq_qos_test_readd(struct kunit *test)
0079 {
0080 struct freq_constraints qos;
0081 struct freq_qos_request req;
0082 int ret;
0083
0084 freq_constraints_init(&qos);
0085 memset(&req, 0, sizeof(req));
0086 KUNIT_EXPECT_EQ(test, freq_qos_read_value(&qos, FREQ_QOS_MIN),
0087 FREQ_QOS_MIN_DEFAULT_VALUE);
0088
0089
0090 ret = freq_qos_add_request(&qos, &req, FREQ_QOS_MIN, 1000);
0091 KUNIT_EXPECT_EQ(test, ret, 1);
0092 KUNIT_EXPECT_EQ(test, freq_qos_read_value(&qos, FREQ_QOS_MIN), 1000);
0093
0094
0095 ret = freq_qos_remove_request(&req);
0096 KUNIT_EXPECT_EQ(test, ret, 1);
0097 KUNIT_EXPECT_EQ(test, freq_qos_read_value(&qos, FREQ_QOS_MIN),
0098 FREQ_QOS_MIN_DEFAULT_VALUE);
0099
0100
0101 ret = freq_qos_add_request(&qos, &req, FREQ_QOS_MIN, 2000);
0102 KUNIT_EXPECT_EQ(test, ret, 1);
0103 KUNIT_EXPECT_EQ(test, freq_qos_read_value(&qos, FREQ_QOS_MIN), 2000);
0104 }
0105
0106 static struct kunit_case pm_qos_test_cases[] = {
0107 KUNIT_CASE(freq_qos_test_min),
0108 KUNIT_CASE(freq_qos_test_maxdef),
0109 KUNIT_CASE(freq_qos_test_readd),
0110 {},
0111 };
0112
0113 static struct kunit_suite pm_qos_test_module = {
0114 .name = "qos-kunit-test",
0115 .test_cases = pm_qos_test_cases,
0116 };
0117 kunit_test_suites(&pm_qos_test_module);