Received: by 2002:a6b:fb09:0:0:0:0:0 with SMTP id h9csp6030013iog; Thu, 23 Jun 2022 09:54:27 -0700 (PDT) X-Google-Smtp-Source: AGRyM1sRmIaOeMIZFIGg3723lTPw7JaScP80m1IuqUsubxt2IaBPXKCxDdkt8I2cX6Z5LDA30BiJ X-Received: by 2002:a05:6402:5c9:b0:420:aac6:257b with SMTP id n9-20020a05640205c900b00420aac6257bmr11751678edx.128.1656003266892; Thu, 23 Jun 2022 09:54:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1656003266; cv=none; d=google.com; s=arc-20160816; b=vNHnKrlfE+NziM+GrZM1KJeh6YXjhEkytv6YCdU3ugk2RIyNYtA0XLw4xOAXkRSthu xLVMB8R4ipJrICzIq2AT2vQsuKAmCaLsYEshFA69kZUELrQn/PW0O3GKEZCrDT7F/Du8 gBzx9K+TMC9oINXqVGA9xWkOPvdHC0mNX/1vTMaqSq6yjXm7wJS7To8ZbkcaQg00RQEE YiLHxQiQm5DZHOthrx0UtWqp896Tngw/0PZd/cKzbh8g3f5RQmtPYy2DcFcRIPD7ZVWD SlYpqrJKzhpVCReIyjZxw7KcoLsSmRGDFh0GABwzJClpO5eMR96BRrCPpAvKBTqXywIg z0ew== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=7HOqbuGc0f6x9tR+0yfA94PilmjI5YMqHeIZhNb7JEk=; b=sI6KLhQxoZXHUGAls/y3vuji9+LSZ9mC/aEPrlbO2KDGsojFn+XzefxiirkuY/NNPD TGJs5nPOEOj2Y5x+rfvdwtVTfO2cRdJE0Ql6uA0T0EbuRQ3xnnAHuxUyJrPrIDzE0x3q kFMUjFkPOHnE+wPJe20vOnaMT+UJd2yVoHxdxIz5wyzylwoTgEyHXFoSBDeaCnf0wQ5D bt61L4u1LPj3eUcWS8zckYeAFT/w5wXy1U8Byb+1lf4Y2Kot70qetO2Bk+9QcWmUOvUN lR/S897cvyvaxWj3EA/Vbr9jVV5rxiuV/wAwTA2/RZA1nI5rLM/vU2zSKXFwV8NDecsR kMrg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=Il6aX5Xn; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id w11-20020aa7cb4b000000b0042b635aefcfsi111703edt.82.2022.06.23.09.53.58; Thu, 23 Jun 2022 09:54:26 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=Il6aX5Xn; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232361AbiFWQjt (ORCPT + 99 others); Thu, 23 Jun 2022 12:39:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41818 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232098AbiFWQjr (ORCPT ); Thu, 23 Jun 2022 12:39:47 -0400 Received: from mail-ej1-x630.google.com (mail-ej1-x630.google.com [IPv6:2a00:1450:4864:20::630]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 21F7340E60 for ; Thu, 23 Jun 2022 09:39:46 -0700 (PDT) Received: by mail-ej1-x630.google.com with SMTP id ay16so22906267ejb.6 for ; Thu, 23 Jun 2022 09:39:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=7HOqbuGc0f6x9tR+0yfA94PilmjI5YMqHeIZhNb7JEk=; b=Il6aX5XnfiBoN5/6z3oP/ymABRj2BA2uoxnaLliYWTBPBwdl8eqFAp9ZpjbrjZyupq wH8eLjEulpuQGkxplvsnxcmlhAiK56A1WmcFtXzyw0TJZGgMP01Q1Y15ZUS7JpsUF0sj dPHMCe8aQRIJhhDjV86FpC8q7iL3GIfFhA5TnxkQLKDQk/ujMr/bWiplBlHzhliAdYKo +c8QmZ1nRnM4DQ+CjRjMU87vRDwxfioIOjnYykUk59iaATiu7sRzb9csT9FFZx/qb4A9 1AQ+SSPtjJCzL6mOsZvJcJsQvjFf2f4rwcjLMD5KBQj6Vy/1m04Ofu7FxtaAY/ATzgbM JKUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=7HOqbuGc0f6x9tR+0yfA94PilmjI5YMqHeIZhNb7JEk=; b=S3wuriAY310CEb71VhiJLwIEO3sqe3z1ZXLpsqRwiODboiiF0tCl4eTkhESi5UZWVD qslMHK4BSVdbSzlpcrjbNRwNImMjZ+HuQACtDJPBbnBwKK62JV1I56eP6OdQXPJwQGLe k3OdZQqiZTOWUHeGqXqL67VfQiSQSoHG/cQZPJGOHd8Zf5nJferMeIHFu0Oqq2xk/SVG HzYmeMAOWd/0saL3+7SlBjUcH2G3VTD/o8yaSb5bn81e+yKDuSwjuLP6KCdGpsh1CCsB qsA6yDFcEI/UbtUUJu2RPmiWJiaTSQ1VCuICR4GIZobL+jcWXoxx+MggrHWTA5ZkOqkT tXpQ== X-Gm-Message-State: AJIora+zUT/a1CE9FYgWT0m3NAtRm2t1vViEy+0S8ztTF4XEwKLiYA+q S20FllV18kXT6PXAyhbLVphtRh9pbWwhsrONpq8vDA== X-Received: by 2002:a17:907:6ea0:b0:726:2b0e:9e5e with SMTP id sh32-20020a1709076ea000b007262b0e9e5emr1985377ejc.189.1656002384514; Thu, 23 Jun 2022 09:39:44 -0700 (PDT) MIME-Version: 1.0 References: <20220622041040.202737-1-tzungbi@kernel.org> <20220622041040.202737-7-tzungbi@kernel.org> In-Reply-To: <20220622041040.202737-7-tzungbi@kernel.org> From: Guenter Roeck Date: Thu, 23 Jun 2022 09:39:33 -0700 Message-ID: Subject: Re: [PATCH 6/7] platform/chrome: cros_ec_proto: add Kunit tests for get_sensor_count To: Tzung-Bi Shih Cc: Benson Leung , Guenter Roeck , "open list:CHROME HARDWARE PLATFORM SUPPORT" , linux-kernel Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-17.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, ENV_AND_HDR_SPF_MATCH,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL,USER_IN_DEF_SPF_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Jun 21, 2022 at 9:11 PM Tzung-Bi Shih wrote: > > cros_ec_get_sensor_count() gets number of MEMS sensors. > > Add Kunit tests for cros_ec_get_sensor_count(). > > Signed-off-by: Tzung-Bi Shih Reviewed-by: Guenter Roeck > --- > drivers/platform/chrome/cros_ec_proto_test.c | 153 +++++++++++++++++++ > drivers/platform/chrome/cros_kunit_util.c | 22 +++ > drivers/platform/chrome/cros_kunit_util.h | 7 + > 3 files changed, 182 insertions(+) > > diff --git a/drivers/platform/chrome/cros_ec_proto_test.c b/drivers/platform/chrome/cros_ec_proto_test.c > index 93c1700deaef..6b26ce3104f4 100644 > --- a/drivers/platform/chrome/cros_ec_proto_test.c > +++ b/drivers/platform/chrome/cros_ec_proto_test.c > @@ -2442,6 +2442,156 @@ static void cros_ec_proto_test_check_features_not_cached(struct kunit *test) > } > } > > +static void cros_ec_proto_test_get_sensor_count_normal(struct kunit *test) > +{ > + struct cros_ec_proto_test_priv *priv = test->priv; > + struct cros_ec_device *ec_dev = &priv->ec_dev; > + struct ec_xfer_mock *mock; > + int ret; > + struct cros_ec_dev ec; > + > + ec_dev->max_request = 0xff; > + ec_dev->max_response = 0xee; > + ec.ec_dev = ec_dev; > + ec.dev = ec_dev->dev; > + ec.cmd_offset = 0; > + > + /* For EC_CMD_MOTION_SENSE_CMD. */ > + { > + struct ec_response_motion_sense *data; > + > + mock = cros_kunit_ec_xfer_mock_add(test, sizeof(*data)); > + KUNIT_ASSERT_PTR_NE(test, mock, NULL); > + > + data = (struct ec_response_motion_sense *)mock->o_data; > + data->dump.sensor_count = 0xbf; > + } > + > + ret = cros_ec_get_sensor_count(&ec); > + KUNIT_EXPECT_EQ(test, ret, 0xbf); > + > + /* For EC_CMD_MOTION_SENSE_CMD. */ > + { > + struct ec_params_motion_sense *data; > + > + mock = cros_kunit_ec_xfer_mock_next(); > + KUNIT_EXPECT_PTR_NE(test, mock, NULL); > + > + KUNIT_EXPECT_EQ(test, mock->msg.version, 1); > + KUNIT_EXPECT_EQ(test, mock->msg.command, EC_CMD_MOTION_SENSE_CMD); > + KUNIT_EXPECT_EQ(test, mock->msg.insize, sizeof(struct ec_response_motion_sense)); > + KUNIT_EXPECT_EQ(test, mock->msg.outsize, sizeof(*data)); > + > + data = (struct ec_params_motion_sense *)mock->i_data; > + KUNIT_EXPECT_EQ(test, data->cmd, MOTIONSENSE_CMD_DUMP); > + } > +} > + > +static void cros_ec_proto_test_get_sensor_count_xfer_error(struct kunit *test) > +{ > + struct cros_ec_proto_test_priv *priv = test->priv; > + struct cros_ec_device *ec_dev = &priv->ec_dev; > + struct ec_xfer_mock *mock; > + int ret; > + struct cros_ec_dev ec; > + > + ec_dev->max_request = 0xff; > + ec_dev->max_response = 0xee; > + ec.ec_dev = ec_dev; > + ec.dev = ec_dev->dev; > + ec.cmd_offset = 0; > + > + /* For EC_CMD_MOTION_SENSE_CMD. */ > + { > + mock = cros_kunit_ec_xfer_mock_addx(test, -EPROTO, EC_RES_SUCCESS, 0); > + KUNIT_ASSERT_PTR_NE(test, mock, NULL); > + } > + > + ret = cros_ec_get_sensor_count(&ec); > + KUNIT_EXPECT_EQ(test, ret, -EPROTO); > + > + /* For EC_CMD_MOTION_SENSE_CMD. */ > + { > + struct ec_params_motion_sense *data; > + > + mock = cros_kunit_ec_xfer_mock_next(); > + KUNIT_EXPECT_PTR_NE(test, mock, NULL); > + > + KUNIT_EXPECT_EQ(test, mock->msg.version, 1); > + KUNIT_EXPECT_EQ(test, mock->msg.command, EC_CMD_MOTION_SENSE_CMD); > + KUNIT_EXPECT_EQ(test, mock->msg.insize, sizeof(struct ec_response_motion_sense)); > + KUNIT_EXPECT_EQ(test, mock->msg.outsize, sizeof(*data)); > + > + data = (struct ec_params_motion_sense *)mock->i_data; > + KUNIT_EXPECT_EQ(test, data->cmd, MOTIONSENSE_CMD_DUMP); > + } > +} > + > +static void cros_ec_proto_test_get_sensor_count_legacy(struct kunit *test) > +{ > + struct cros_ec_proto_test_priv *priv = test->priv; > + struct cros_ec_device *ec_dev = &priv->ec_dev; > + struct ec_xfer_mock *mock; > + int ret, i; > + struct cros_ec_dev ec; > + struct { > + u8 readmem_data; > + int expected_result; > + } test_data[] = { > + { 0, 0 }, > + { EC_MEMMAP_ACC_STATUS_PRESENCE_BIT, 2 }, > + }; > + > + ec_dev->max_request = 0xff; > + ec_dev->max_response = 0xee; > + ec_dev->cmd_readmem = cros_kunit_readmem_mock; > + ec.ec_dev = ec_dev; > + ec.dev = ec_dev->dev; > + ec.cmd_offset = 0; > + > + for (i = 0; i < ARRAY_SIZE(test_data); ++i) { > + /* For EC_CMD_MOTION_SENSE_CMD. */ > + { > + mock = cros_kunit_ec_xfer_mock_addx(test, -EPROTO, EC_RES_SUCCESS, 0); > + KUNIT_ASSERT_PTR_NE(test, mock, NULL); > + } > + > + /* For readmem. */ > + { > + cros_kunit_readmem_mock_data = kunit_kzalloc(test, 1, GFP_KERNEL); > + KUNIT_ASSERT_PTR_NE(test, cros_kunit_readmem_mock_data, NULL); > + cros_kunit_readmem_mock_data[0] = test_data[i].readmem_data; > + > + cros_kunit_ec_xfer_mock_default_ret = 1; > + } > + > + ret = cros_ec_get_sensor_count(&ec); > + KUNIT_EXPECT_EQ(test, ret, test_data[i].expected_result); > + > + /* For EC_CMD_MOTION_SENSE_CMD. */ > + { > + struct ec_params_motion_sense *data; > + > + mock = cros_kunit_ec_xfer_mock_next(); > + KUNIT_EXPECT_PTR_NE(test, mock, NULL); > + > + KUNIT_EXPECT_EQ(test, mock->msg.version, 1); > + KUNIT_EXPECT_EQ(test, mock->msg.command, EC_CMD_MOTION_SENSE_CMD); > + KUNIT_EXPECT_EQ(test, mock->msg.insize, > + sizeof(struct ec_response_motion_sense)); > + KUNIT_EXPECT_EQ(test, mock->msg.outsize, sizeof(*data)); > + > + data = (struct ec_params_motion_sense *)mock->i_data; > + KUNIT_EXPECT_EQ(test, data->cmd, MOTIONSENSE_CMD_DUMP); > + } > + > + /* For readmem. */ > + { > + KUNIT_EXPECT_EQ(test, cros_kunit_readmem_mock_offset, EC_MEMMAP_ACC_STATUS); > + } > + } > +} > + > static void cros_ec_proto_test_release(struct device *dev) > { > } > @@ -2537,6 +2687,9 @@ static struct kunit_case cros_ec_proto_test_cases[] = { > KUNIT_CASE(cros_ec_proto_test_get_host_event_normal), > KUNIT_CASE(cros_ec_proto_test_check_features_cached), > KUNIT_CASE(cros_ec_proto_test_check_features_not_cached), > + KUNIT_CASE(cros_ec_proto_test_get_sensor_count_normal), > + KUNIT_CASE(cros_ec_proto_test_get_sensor_count_xfer_error), > + KUNIT_CASE(cros_ec_proto_test_get_sensor_count_legacy), > {} > }; > > diff --git a/drivers/platform/chrome/cros_kunit_util.c b/drivers/platform/chrome/cros_kunit_util.c > index 3ede971e82ee..d37c334b416d 100644 > --- a/drivers/platform/chrome/cros_kunit_util.c > +++ b/drivers/platform/chrome/cros_kunit_util.c > @@ -105,6 +105,24 @@ struct ec_xfer_mock *cros_kunit_ec_xfer_mock_next(void) > } > EXPORT_SYMBOL_GPL(cros_kunit_ec_xfer_mock_next); > > +int cros_kunit_readmem_mock_offset; > +EXPORT_SYMBOL_GPL(cros_kunit_readmem_mock_offset); > +u8 *cros_kunit_readmem_mock_data; > +EXPORT_SYMBOL_GPL(cros_kunit_readmem_mock_data); > +int cros_kunit_readmem_mock_ret; > +EXPORT_SYMBOL_GPL(cros_kunit_readmem_mock_ret); > + > +int cros_kunit_readmem_mock(struct cros_ec_device *ec_dev, unsigned int offset, > + unsigned int bytes, void *dest) > +{ > + cros_kunit_readmem_mock_offset = offset; > + > + memcpy(dest, cros_kunit_readmem_mock_data, bytes); > + > + return cros_kunit_readmem_mock_ret; > +} > +EXPORT_SYMBOL_GPL(cros_kunit_readmem_mock); > + > void cros_kunit_mock_reset(void) > { > cros_kunit_ec_xfer_mock_default_ret = 0; > @@ -112,6 +130,10 @@ void cros_kunit_mock_reset(void) > cros_kunit_ec_pkt_xfer_mock_called = 0; > INIT_LIST_HEAD(&cros_kunit_ec_xfer_mock_in); > INIT_LIST_HEAD(&cros_kunit_ec_xfer_mock_out); > + > + cros_kunit_readmem_mock_offset = 0; > + cros_kunit_readmem_mock_data = NULL; > + cros_kunit_readmem_mock_ret = 0; > } > EXPORT_SYMBOL_GPL(cros_kunit_mock_reset); > > diff --git a/drivers/platform/chrome/cros_kunit_util.h b/drivers/platform/chrome/cros_kunit_util.h > index ae4080cb13f1..88134c9f1acf 100644 > --- a/drivers/platform/chrome/cros_kunit_util.h > +++ b/drivers/platform/chrome/cros_kunit_util.h > @@ -35,6 +35,13 @@ struct ec_xfer_mock *cros_kunit_ec_xfer_mock_addx(struct kunit *test, > int ret, int result, size_t size); > struct ec_xfer_mock *cros_kunit_ec_xfer_mock_next(void); > > +extern int cros_kunit_readmem_mock_offset; > +extern u8 *cros_kunit_readmem_mock_data; > +extern int cros_kunit_readmem_mock_ret; > + > +int cros_kunit_readmem_mock(struct cros_ec_device *ec_dev, unsigned int offset, > + unsigned int bytes, void *dest); > + > void cros_kunit_mock_reset(void); > > #endif > -- > 2.37.0.rc0.104.g0611611a94-goog >