From patchwork Wed Apr 8 13:01:54 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Przemyslaw Marczak X-Patchwork-Id: 459243 X-Patchwork-Delegate: sjg@chromium.org Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id C1B241401AD for ; Wed, 8 Apr 2015 23:02:38 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 99FD9A7496; Wed, 8 Apr 2015 15:02:26 +0200 (CEST) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Iv5Gah7URA1V; Wed, 8 Apr 2015 15:02:26 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 43F91A749B; Wed, 8 Apr 2015 15:02:22 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 787CBA7420 for ; Wed, 8 Apr 2015 15:02:12 +0200 (CEST) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id y5XLZ3bYLzPC for ; Wed, 8 Apr 2015 15:02:12 +0200 (CEST) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by theia.denx.de (Postfix) with ESMTPS id 3F692A741C for ; Wed, 8 Apr 2015 15:02:08 +0200 (CEST) Received: from eucpsbgm1.samsung.com (unknown [203.254.199.244]) by mailout1.w1.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0NMH0037YOE70A10@mailout1.w1.samsung.com> for u-boot@lists.denx.de; Wed, 08 Apr 2015 14:06:07 +0100 (BST) X-AuditID: cbfec7f4-b7f106d0000013ec-e5-5525261d1b0a Received: from eusync4.samsung.com ( [203.254.199.214]) by eucpsbgm1.samsung.com (EUCPMTA) with SMTP id 0B.E4.05100.D1625255; Wed, 08 Apr 2015 13:59:09 +0100 (BST) Received: from AMDC1186.digital.local ([106.116.147.185]) by eusync4.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0NMH005M9O7A8X50@eusync4.samsung.com>; Wed, 08 Apr 2015 14:02:02 +0100 (BST) From: Przemyslaw Marczak To: u-boot@lists.denx.de Date: Wed, 08 Apr 2015 15:01:54 +0200 Message-id: <1428498114-7015-3-git-send-email-p.marczak@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: <1428498114-7015-1-git-send-email-p.marczak@samsung.com> References: <1428498114-7015-1-git-send-email-p.marczak@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrBJMWRmVeSWpSXmKPExsVy+t/xa7qyaqqhBptXSli8ebiZ0WLH5Rss Ft+2bGO0eLu3k91i773PjA6sHrMbLrJ4nL2zg9Gjb8sqRo8T07+zBLBEcdmkpOZklqUW6dsl cGVcezibqWCuekXbxQmMDYy3FLoYOTgkBEwk3l7U62LkBDLFJC7cW8/WxcjFISSwlFHi7qxt UE4fk0RzxwYmkCo2AQOJPZfOMIPYIgISEr/6rzKCFDELrGWUmDarjx0kISzgJXHj+VtGEJtF QFXixskmMJtXwEXi9MmtjBDr5CROHpvMCmJzCrhKdF2+AdYrBFQz9U0L0wRG3gWMDKsYRVNL kwuKk9JzDfWKE3OLS/PS9ZLzczcxQkLnyw7GxcesDjEKcDAq8fBaHFMJFWJNLCuuzD3EKMHB rCTC+19ZNVSINyWxsiq1KD++qDQntfgQIxMHp1QD49b44i2PpTbKCjH1Xjhmo/FHqGLXQcNq YYbji9esjduitPTJ3I7zVpklV+14Fk2eOfma8Od9jTeSlrW7/9ly7zln5etd8skBtY8WHn40 iT2Y70L/nmsyF8qqmTdHGgR8/dH8JUu5/f5sO/HQlqT7Na0VWz4/PHlqEfeNWTsyax9OdGlJ lHj4l1mJpTgj0VCLuag4EQAW2IBh+wEAAA== Cc: Przemyslaw Marczak Subject: [U-Boot] [PATCH 2/2] dm: test: Add tests for device's uclass platform data X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.15 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" This test introduces new test structure type:dm_test_perdev_uc_pdata. The structure consists of three int values only. For the test purposes, three pattern values are defined by enum, starting with TEST_UC_PDATA_INTVAL1. This commit adds two test cases for uclass platform data: - Test: dm_test_autobind_uclass_pdata_alloc - this tests if: * uclass driver sets: .per_device_platdata_auto_alloc_size field * the devices's: dev->uclass_platdata is non-NULL - Test: dm_test_autobind_uclass_pdata_valid - this tests: * if the devices's: dev->uclass_platdata is non-NULL * the structure of type 'dm_test_perdev_uc_pdata' allocated at address pointed by dev->uclass_platdata. Each structure field, should be equal to proper pattern data, starting from .intval1 == TEST_UC_PDATA_INTVAL1. Signed-off-by: Przemyslaw Marczak Cc: Simon Glass Acked-by: Simon Glass --- include/dm/test.h | 20 +++++++++++++++++++ test/dm/core.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++ test/dm/test-uclass.c | 11 +++++++++++ 3 files changed, 86 insertions(+) diff --git a/include/dm/test.h b/include/dm/test.h index 9c4b8d3..f03fbcb 100644 --- a/include/dm/test.h +++ b/include/dm/test.h @@ -98,6 +98,26 @@ struct dm_test_parent_data { int flag; }; +/* Test values for test device's uclass platform data */ +enum { + TEST_UC_PDATA_INTVAL1 = 2, + TEST_UC_PDATA_INTVAL2 = 334, + TEST_UC_PDATA_INTVAL3 = 789452, +}; + +/** + * struct dm_test_uclass_platda - uclass's information on each device + * + * @intval1: set to TEST_UC_PDATA_INTVAL1 in .post_bind method of test uclass + * @intval2: set to TEST_UC_PDATA_INTVAL2 in .post_bind method of test uclass + * @intval3: set to TEST_UC_PDATA_INTVAL3 in .post_bind method of test uclass + */ +struct dm_test_perdev_uc_pdata { + int intval1; + int intval2; + int intval3; +}; + /* * Operation counts for the test driver, used to check that each method is * called correctly diff --git a/test/dm/core.c b/test/dm/core.c index 990d390..ce8a958 100644 --- a/test/dm/core.c +++ b/test/dm/core.c @@ -129,6 +129,61 @@ static int dm_test_autobind(struct dm_test_state *dms) } DM_TEST(dm_test_autobind, 0); +/* Test that binding with uclass platdata allocation occurs correctly */ +static int dm_test_autobind_uclass_pdata_alloc(struct dm_test_state *dms) +{ + struct dm_test_perdev_uc_pdata *uc_pdata; + struct udevice *dev; + struct uclass *uc; + int i; + + ut_assertok(uclass_get(UCLASS_TEST, &uc)); + ut_assert(uc); + + /** + * Test if test uclass driver requires allocation for the uclass + * platform data and then check the dev->uclass_platdata pointer. + */ + ut_assert(uc->uc_drv->per_device_platdata_auto_alloc_size); + + for (i = 0; i < 3; i++) { + ut_assertok(uclass_find_device(UCLASS_TEST, i, &dev)); + ut_assert(dev); + + uc_pdata = dev_get_uclass_platdata(dev); + ut_assert(uc_pdata); + } + + return 0; +} +DM_TEST(dm_test_autobind_uclass_pdata_alloc, DM_TESTF_SCAN_PDATA); + +/* Test that binding with uclass platdata setting occurs correctly */ +static int dm_test_autobind_uclass_pdata_valid(struct dm_test_state *dms) +{ + struct dm_test_perdev_uc_pdata *uc_pdata; + struct udevice *dev; + int i; + + /** + * In the test_postbind() method of test uclass driver, the uclass + * platform data should be set with three test int values - test it. + */ + for (i = 0; i < 3; i++) { + ut_assertok(uclass_find_device(UCLASS_TEST, i, &dev)); + ut_assert(dev); + + uc_pdata = dev_get_uclass_platdata(dev); + ut_assert(uc_pdata); + ut_assert(uc_pdata->intval1 == TEST_UC_PDATA_INTVAL1); + ut_assert(uc_pdata->intval2 == TEST_UC_PDATA_INTVAL2); + ut_assert(uc_pdata->intval3 == TEST_UC_PDATA_INTVAL3); + } + + return 0; +} +DM_TEST(dm_test_autobind_uclass_pdata_valid, DM_TESTF_SCAN_PDATA); + /* Test that autoprobe finds all the expected devices */ static int dm_test_autoprobe(struct dm_test_state *dms) { diff --git a/test/dm/test-uclass.c b/test/dm/test-uclass.c index 7cb37f7..4ae75ef 100644 --- a/test/dm/test-uclass.c +++ b/test/dm/test-uclass.c @@ -30,9 +30,18 @@ int test_ping(struct udevice *dev, int pingval, int *pingret) static int test_post_bind(struct udevice *dev) { + struct dm_test_perdev_uc_pdata *uc_pdata; + dm_testdrv_op_count[DM_TEST_OP_POST_BIND]++; ut_assert(!device_active(dev)); + uc_pdata = dev_get_uclass_platdata(dev); + ut_assert(uc_pdata); + + uc_pdata->intval1 = TEST_UC_PDATA_INTVAL1; + uc_pdata->intval2 = TEST_UC_PDATA_INTVAL2; + uc_pdata->intval3 = TEST_UC_PDATA_INTVAL3; + return 0; } @@ -115,4 +124,6 @@ UCLASS_DRIVER(test) = { .destroy = test_destroy, .priv_auto_alloc_size = sizeof(struct dm_test_uclass_priv), .per_device_auto_alloc_size = sizeof(struct dm_test_uclass_perdev_priv), + .per_device_platdata_auto_alloc_size = + sizeof(struct dm_test_perdev_uc_pdata), };