Message ID | 20220622041040.202737-5-tzungbi@kernel.org (mailing list archive) |
---|---|
State | Accepted |
Commit | 7cb1eb82642becd668665689c6eac2a639a81e1b |
Headers | show |
Series | platform/chrome: cros_ec_proto: add Kunit tests | expand |
On Tue, Jun 21, 2022 at 9:11 PM Tzung-Bi Shih <tzungbi@kernel.org> wrote: > > cros_ec_get_host_event() performs some sanity checks, parses > `ec_dev->event_data.data.host_event`, and returns bitmap of > EC_HOST_EVENT_*. > > Add Kunit tests for cros_ec_get_host_event(). > > Signed-off-by: Tzung-Bi Shih <tzungbi@kernel.org> Reviewed-by: Guenter Roeck <groeck@chromium.org> > --- > drivers/platform/chrome/cros_ec_proto_test.c | 59 ++++++++++++++++++++ > 1 file changed, 59 insertions(+) > > diff --git a/drivers/platform/chrome/cros_ec_proto_test.c b/drivers/platform/chrome/cros_ec_proto_test.c > index 64c4b79f7a0c..dce9fa3b9c8d 100644 > --- a/drivers/platform/chrome/cros_ec_proto_test.c > +++ b/drivers/platform/chrome/cros_ec_proto_test.c > @@ -2312,6 +2312,61 @@ static void cros_ec_proto_test_get_next_event_mkbp_event_host_event_masked(struc > } > } > > +static void cros_ec_proto_test_get_host_event_no_mkbp_event(struct kunit *test) > +{ > + struct cros_ec_proto_test_priv *priv = test->priv; > + struct cros_ec_device *ec_dev = &priv->ec_dev; > + int ret; > + > + ec_dev->mkbp_event_supported = 0; > + > + ret = cros_ec_get_host_event(ec_dev); > + KUNIT_EXPECT_EQ(test, ret, 0); > +} > + > +static void cros_ec_proto_test_get_host_event_not_host_event(struct kunit *test) > +{ > + struct cros_ec_proto_test_priv *priv = test->priv; > + struct cros_ec_device *ec_dev = &priv->ec_dev; > + int ret; > + > + ec_dev->mkbp_event_supported = 1; > + ec_dev->event_data.event_type = EC_MKBP_EVENT_FINGERPRINT; > + > + ret = cros_ec_get_host_event(ec_dev); > + KUNIT_EXPECT_EQ(test, ret, 0); > +} > + > +static void cros_ec_proto_test_get_host_event_wrong_event_size(struct kunit *test) > +{ > + struct cros_ec_proto_test_priv *priv = test->priv; > + struct cros_ec_device *ec_dev = &priv->ec_dev; > + int ret; > + > + ec_dev->mkbp_event_supported = 1; > + ec_dev->event_data.event_type = EC_MKBP_EVENT_HOST_EVENT; > + ec_dev->event_size = 0xff; > + > + ret = cros_ec_get_host_event(ec_dev); > + KUNIT_EXPECT_EQ(test, ret, 0); > +} > + > +static void cros_ec_proto_test_get_host_event_normal(struct kunit *test) > +{ > + struct cros_ec_proto_test_priv *priv = test->priv; > + struct cros_ec_device *ec_dev = &priv->ec_dev; > + int ret; > + > + ec_dev->mkbp_event_supported = 1; > + ec_dev->event_data.event_type = EC_MKBP_EVENT_HOST_EVENT; > + ec_dev->event_size = sizeof(ec_dev->event_data.data.host_event); > + put_unaligned_le32(EC_HOST_EVENT_MASK(EC_HOST_EVENT_RTC), > + &ec_dev->event_data.data.host_event); > + > + ret = cros_ec_get_host_event(ec_dev); > + KUNIT_EXPECT_EQ(test, ret, EC_HOST_EVENT_MASK(EC_HOST_EVENT_RTC)); > +} > + > static void cros_ec_proto_test_release(struct device *dev) > { > } > @@ -2401,6 +2456,10 @@ static struct kunit_case cros_ec_proto_test_cases[] = { > KUNIT_CASE(cros_ec_proto_test_get_next_event_mkbp_event_version2), > KUNIT_CASE(cros_ec_proto_test_get_next_event_mkbp_event_host_event_rtc), > KUNIT_CASE(cros_ec_proto_test_get_next_event_mkbp_event_host_event_masked), > + KUNIT_CASE(cros_ec_proto_test_get_host_event_no_mkbp_event), > + KUNIT_CASE(cros_ec_proto_test_get_host_event_not_host_event), > + KUNIT_CASE(cros_ec_proto_test_get_host_event_wrong_event_size), > + KUNIT_CASE(cros_ec_proto_test_get_host_event_normal), > {} > }; > > -- > 2.37.0.rc0.104.g0611611a94-goog >
diff --git a/drivers/platform/chrome/cros_ec_proto_test.c b/drivers/platform/chrome/cros_ec_proto_test.c index 64c4b79f7a0c..dce9fa3b9c8d 100644 --- a/drivers/platform/chrome/cros_ec_proto_test.c +++ b/drivers/platform/chrome/cros_ec_proto_test.c @@ -2312,6 +2312,61 @@ static void cros_ec_proto_test_get_next_event_mkbp_event_host_event_masked(struc } } +static void cros_ec_proto_test_get_host_event_no_mkbp_event(struct kunit *test) +{ + struct cros_ec_proto_test_priv *priv = test->priv; + struct cros_ec_device *ec_dev = &priv->ec_dev; + int ret; + + ec_dev->mkbp_event_supported = 0; + + ret = cros_ec_get_host_event(ec_dev); + KUNIT_EXPECT_EQ(test, ret, 0); +} + +static void cros_ec_proto_test_get_host_event_not_host_event(struct kunit *test) +{ + struct cros_ec_proto_test_priv *priv = test->priv; + struct cros_ec_device *ec_dev = &priv->ec_dev; + int ret; + + ec_dev->mkbp_event_supported = 1; + ec_dev->event_data.event_type = EC_MKBP_EVENT_FINGERPRINT; + + ret = cros_ec_get_host_event(ec_dev); + KUNIT_EXPECT_EQ(test, ret, 0); +} + +static void cros_ec_proto_test_get_host_event_wrong_event_size(struct kunit *test) +{ + struct cros_ec_proto_test_priv *priv = test->priv; + struct cros_ec_device *ec_dev = &priv->ec_dev; + int ret; + + ec_dev->mkbp_event_supported = 1; + ec_dev->event_data.event_type = EC_MKBP_EVENT_HOST_EVENT; + ec_dev->event_size = 0xff; + + ret = cros_ec_get_host_event(ec_dev); + KUNIT_EXPECT_EQ(test, ret, 0); +} + +static void cros_ec_proto_test_get_host_event_normal(struct kunit *test) +{ + struct cros_ec_proto_test_priv *priv = test->priv; + struct cros_ec_device *ec_dev = &priv->ec_dev; + int ret; + + ec_dev->mkbp_event_supported = 1; + ec_dev->event_data.event_type = EC_MKBP_EVENT_HOST_EVENT; + ec_dev->event_size = sizeof(ec_dev->event_data.data.host_event); + put_unaligned_le32(EC_HOST_EVENT_MASK(EC_HOST_EVENT_RTC), + &ec_dev->event_data.data.host_event); + + ret = cros_ec_get_host_event(ec_dev); + KUNIT_EXPECT_EQ(test, ret, EC_HOST_EVENT_MASK(EC_HOST_EVENT_RTC)); +} + static void cros_ec_proto_test_release(struct device *dev) { } @@ -2401,6 +2456,10 @@ static struct kunit_case cros_ec_proto_test_cases[] = { KUNIT_CASE(cros_ec_proto_test_get_next_event_mkbp_event_version2), KUNIT_CASE(cros_ec_proto_test_get_next_event_mkbp_event_host_event_rtc), KUNIT_CASE(cros_ec_proto_test_get_next_event_mkbp_event_host_event_masked), + KUNIT_CASE(cros_ec_proto_test_get_host_event_no_mkbp_event), + KUNIT_CASE(cros_ec_proto_test_get_host_event_not_host_event), + KUNIT_CASE(cros_ec_proto_test_get_host_event_wrong_event_size), + KUNIT_CASE(cros_ec_proto_test_get_host_event_normal), {} };
cros_ec_get_host_event() performs some sanity checks, parses `ec_dev->event_data.data.host_event`, and returns bitmap of EC_HOST_EVENT_*. Add Kunit tests for cros_ec_get_host_event(). Signed-off-by: Tzung-Bi Shih <tzungbi@kernel.org> --- drivers/platform/chrome/cros_ec_proto_test.c | 59 ++++++++++++++++++++ 1 file changed, 59 insertions(+)