Skip to content

Commit 0023886

Browse files
author
Tzung-Bi Shih
committed
platform/chrome: cros_ec_proto: add Kunit tests for check_features
cros_ec_check_features() gets EC features if it hasn't had cache, and checks whether the given EC_FEATURE_* is supported or not. Add Kunit tests for cros_ec_check_features(). Signed-off-by: Tzung-Bi Shih <tzungbi@kernel.org> Reviewed-by: Guenter Roeck <groeck@chromium.org> Link: https://lore.kernel.org/r/20220622041040.202737-6-tzungbi@kernel.org
1 parent 7cb1eb8 commit 0023886

1 file changed

Lines changed: 77 additions & 0 deletions

File tree

drivers/platform/chrome/cros_ec_proto_test.c

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2367,6 +2367,81 @@ static void cros_ec_proto_test_get_host_event_normal(struct kunit *test)
23672367
KUNIT_EXPECT_EQ(test, ret, EC_HOST_EVENT_MASK(EC_HOST_EVENT_RTC));
23682368
}
23692369

2370+
static void cros_ec_proto_test_check_features_cached(struct kunit *test)
2371+
{
2372+
int ret, i;
2373+
struct cros_ec_dev ec;
2374+
2375+
ec.features.flags[0] = EC_FEATURE_MASK_0(EC_FEATURE_FINGERPRINT);
2376+
ec.features.flags[1] = EC_FEATURE_MASK_0(EC_FEATURE_SCP);
2377+
2378+
for (i = 0; i < EC_FEATURE_TYPEC_MUX_REQUIRE_AP_ACK; ++i) {
2379+
ret = cros_ec_check_features(&ec, i);
2380+
switch (i) {
2381+
case EC_FEATURE_FINGERPRINT:
2382+
case EC_FEATURE_SCP:
2383+
KUNIT_EXPECT_TRUE(test, ret);
2384+
break;
2385+
default:
2386+
KUNIT_EXPECT_FALSE(test, ret);
2387+
break;
2388+
}
2389+
}
2390+
}
2391+
2392+
static void cros_ec_proto_test_check_features_not_cached(struct kunit *test)
2393+
{
2394+
struct cros_ec_proto_test_priv *priv = test->priv;
2395+
struct cros_ec_device *ec_dev = &priv->ec_dev;
2396+
struct ec_xfer_mock *mock;
2397+
int ret, i;
2398+
struct cros_ec_dev ec;
2399+
2400+
ec_dev->max_request = 0xff;
2401+
ec_dev->max_response = 0xee;
2402+
ec.ec_dev = ec_dev;
2403+
ec.dev = ec_dev->dev;
2404+
ec.cmd_offset = 0;
2405+
ec.features.flags[0] = -1;
2406+
ec.features.flags[1] = -1;
2407+
2408+
/* For EC_CMD_GET_FEATURES. */
2409+
{
2410+
struct ec_response_get_features *data;
2411+
2412+
mock = cros_kunit_ec_xfer_mock_add(test, sizeof(*data));
2413+
KUNIT_ASSERT_PTR_NE(test, mock, NULL);
2414+
2415+
data = (struct ec_response_get_features *)mock->o_data;
2416+
data->flags[0] = EC_FEATURE_MASK_0(EC_FEATURE_FINGERPRINT);
2417+
data->flags[1] = EC_FEATURE_MASK_0(EC_FEATURE_SCP);
2418+
}
2419+
2420+
for (i = 0; i < EC_FEATURE_TYPEC_MUX_REQUIRE_AP_ACK; ++i) {
2421+
ret = cros_ec_check_features(&ec, i);
2422+
switch (i) {
2423+
case EC_FEATURE_FINGERPRINT:
2424+
case EC_FEATURE_SCP:
2425+
KUNIT_EXPECT_TRUE(test, ret);
2426+
break;
2427+
default:
2428+
KUNIT_EXPECT_FALSE(test, ret);
2429+
break;
2430+
}
2431+
}
2432+
2433+
/* For EC_CMD_GET_FEATURES. */
2434+
{
2435+
mock = cros_kunit_ec_xfer_mock_next();
2436+
KUNIT_EXPECT_PTR_NE(test, mock, NULL);
2437+
2438+
KUNIT_EXPECT_EQ(test, mock->msg.version, 0);
2439+
KUNIT_EXPECT_EQ(test, mock->msg.command, EC_CMD_GET_FEATURES);
2440+
KUNIT_EXPECT_EQ(test, mock->msg.insize, sizeof(struct ec_response_get_features));
2441+
KUNIT_EXPECT_EQ(test, mock->msg.outsize, 0);
2442+
}
2443+
}
2444+
23702445
static void cros_ec_proto_test_release(struct device *dev)
23712446
{
23722447
}
@@ -2460,6 +2535,8 @@ static struct kunit_case cros_ec_proto_test_cases[] = {
24602535
KUNIT_CASE(cros_ec_proto_test_get_host_event_not_host_event),
24612536
KUNIT_CASE(cros_ec_proto_test_get_host_event_wrong_event_size),
24622537
KUNIT_CASE(cros_ec_proto_test_get_host_event_normal),
2538+
KUNIT_CASE(cros_ec_proto_test_check_features_cached),
2539+
KUNIT_CASE(cros_ec_proto_test_check_features_not_cached),
24632540
{}
24642541
};
24652542

0 commit comments

Comments
 (0)