From patchwork Tue Apr 3 09:44:19 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Neil Armstrong X-Patchwork-Id: 894489 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="iw20b7H1"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 40Fkjn3Bn6z9s1p for ; Tue, 3 Apr 2018 19:45:49 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id D012EC21EBB; Tue, 3 Apr 2018 09:45:04 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id A0B33C21EEB; Tue, 3 Apr 2018 09:44:34 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 391DAC21EC2; Tue, 3 Apr 2018 09:44:28 +0000 (UTC) Received: from mail-wr0-f196.google.com (mail-wr0-f196.google.com [209.85.128.196]) by lists.denx.de (Postfix) with ESMTPS id C3E37C21EB4 for ; Tue, 3 Apr 2018 09:44:24 +0000 (UTC) Received: by mail-wr0-f196.google.com with SMTP id p53so17933948wrc.10 for ; Tue, 03 Apr 2018 02:44:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=jyZhu70z7uWWqGsRkEV3e8axMmJVKuZNk5wOK3Ii1xc=; b=iw20b7H1UIMLfAw7yiZM1zFOrO5Xdb7fguFCrqBFwdEpjtbFl0N6eiIeBOHGHnoPfF zOqgJFRpDOcgGOwho9sAsDMGAeVs2pR1tOlqgakgYD7P9m1B9FlfwnFi4sE1c/jt5Vl8 GhtREY9Nq4BNwuOiWtsib6jBTYgCfUyj4VNCx8IQL0cB4ahxWeWwl//DfyV1VsGzJ0T/ jfgrxOBHRlbgiUxGtGVkdIE/99IaPcdJtScrH9mUKyDwVp2DMUYzHYWtpZPcsXoR6A7j AX3PhprKrQVS2IjZ+fMb6yxlDdhomlzwbF+9irY2UBJT5iZlkU35aYzPGFS1WoxasQCK kiUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=jyZhu70z7uWWqGsRkEV3e8axMmJVKuZNk5wOK3Ii1xc=; b=TAJYPIa8kYCiVu6Paf18RsUe2MFkE0ghwd3I/Ggxpp89ICcUXMfNOBRAPkcSRWF9Uw p5l5mzRGeP//grWnudkyuy+xgPdkx9RwLuqdrEmQ0KFEndBdvW72S1rn5VnqmG/+eZJH hECzcRE4ZDgGEj7+r1v7fIX+KPSZFXB82dYo/3JkP6OD7AnsrL+4R1+JrC9LYkwlXVm0 h6HS5hiWHbMDDArrSVQU+JsNrDv3YKyr+DN0z06YECqKajb9fSfOG5Z5PswUTxC8OUEP lUIaT3meUNoWsr/VutZGu9m4Vq903keQc78DKlStB2sSBIdswH54rD36i9K2bjVH/vbR ZiUQ== X-Gm-Message-State: AElRT7EVJfuAPglKVeIvIMAicp4wYJT7efQCBHdfEYWNwu9IvHxoFEIP 4wsGNQgKUPI27WRfpv1WePrSIw== X-Google-Smtp-Source: AIpwx48bXaiWxBKIkdP79L3WNV9EP4XXBbgD2elP2wLiGj3ya0O7Ax8r+bW8Z3U0Ozfwboa9t25ysA== X-Received: by 10.223.189.14 with SMTP id j14mr10299774wrh.138.1522748664314; Tue, 03 Apr 2018 02:44:24 -0700 (PDT) Received: from bender.baylibre.local ([90.63.244.31]) by smtp.gmail.com with ESMTPSA id q21sm1513565wra.24.2018.04.03.02.44.22 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 03 Apr 2018 02:44:23 -0700 (PDT) From: Neil Armstrong To: sjg@chromium.org, u-boot@lists.denx.de Date: Tue, 3 Apr 2018 11:44:19 +0200 Message-Id: <1522748659-21622-3-git-send-email-narmstrong@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1522748659-21622-1-git-send-email-narmstrong@baylibre.com> References: <1522748659-21622-1-git-send-email-narmstrong@baylibre.com> Cc: marex@denx.de, linux-amlogic@lists.infradead.org Subject: [U-Boot] [PATCH v2 u-boot 2/2] clk: add sandbox test for bulk API X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 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 patch adds the bulk clock API tests for the sandbox test suite. It's very similar to the main test but only uses the _bulk() API and checks if the clocks are correctly enabled/disabled. Signed-off-by: Neil Armstrong Reviewed-by: Simon Glass --- arch/sandbox/include/asm/clk.h | 32 ++++++++++++++++++++++++++++++++ drivers/clk/clk_sandbox_test.c | 29 +++++++++++++++++++++++++++++ test/dm/clk.c | 38 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 99 insertions(+) diff --git a/arch/sandbox/include/asm/clk.h b/arch/sandbox/include/asm/clk.h index 9dc6c81..01b5ba4 100644 --- a/arch/sandbox/include/asm/clk.h +++ b/arch/sandbox/include/asm/clk.h @@ -64,6 +64,14 @@ int sandbox_clk_query_enable(struct udevice *dev, int id); */ int sandbox_clk_test_get(struct udevice *dev); /** + * sandbox_clk_test_get_bulk - Ask the sandbox clock test device to request its + * clocks with the bulk clk API. + * + * @dev: The sandbox clock test (client) devivce. + * @return: 0 if OK, or a negative error code. + */ +int sandbox_clk_test_get_bulk(struct udevice *dev); +/** * sandbox_clk_test_get_rate - Ask the sandbox clock test device to query a * clock's rate. * @@ -91,6 +99,14 @@ ulong sandbox_clk_test_set_rate(struct udevice *dev, int id, ulong rate); */ int sandbox_clk_test_enable(struct udevice *dev, int id); /** + * sandbox_clk_test_enable_bulk - Ask the sandbox clock test device to enable + * all clocks in it's clock bulk struct. + * + * @dev: The sandbox clock test (client) devivce. + * @return: 0 if OK, or a negative error code. + */ +int sandbox_clk_test_enable_bulk(struct udevice *dev); +/** * sandbox_clk_test_disable - Ask the sandbox clock test device to disable a * clock. * @@ -100,6 +116,14 @@ int sandbox_clk_test_enable(struct udevice *dev, int id); */ int sandbox_clk_test_disable(struct udevice *dev, int id); /** + * sandbox_clk_test_disable_bulk - Ask the sandbox clock test device to disable + * all clocks in it's clock bulk struct. + * + * @dev: The sandbox clock test (client) devivce. + * @return: 0 if OK, or a negative error code. + */ +int sandbox_clk_test_disable_bulk(struct udevice *dev); +/** * sandbox_clk_test_free - Ask the sandbox clock test device to free its * clocks. * @@ -107,5 +131,13 @@ int sandbox_clk_test_disable(struct udevice *dev, int id); * @return: 0 if OK, or a negative error code. */ int sandbox_clk_test_free(struct udevice *dev); +/** + * sandbox_clk_test_release_bulk - Ask the sandbox clock test device to release + * all clocks in it's clock bulk struct. + * + * @dev: The sandbox clock test (client) devivce. + * @return: 0 if OK, or a negative error code. + */ +int sandbox_clk_test_release_bulk(struct udevice *dev); #endif diff --git a/drivers/clk/clk_sandbox_test.c b/drivers/clk/clk_sandbox_test.c index 999100d..d089881 100644 --- a/drivers/clk/clk_sandbox_test.c +++ b/drivers/clk/clk_sandbox_test.c @@ -11,6 +11,7 @@ struct sandbox_clk_test { struct clk clks[SANDBOX_CLK_TEST_ID_COUNT]; + struct clk_bulk bulk; }; static const char * const sandbox_clk_test_names[] = { @@ -34,6 +35,13 @@ int sandbox_clk_test_get(struct udevice *dev) return 0; } +int sandbox_clk_test_get_bulk(struct udevice *dev) +{ + struct sandbox_clk_test *sbct = dev_get_priv(dev); + + return clk_get_bulk(dev, &sbct->bulk); +} + ulong sandbox_clk_test_get_rate(struct udevice *dev, int id) { struct sandbox_clk_test *sbct = dev_get_priv(dev); @@ -64,6 +72,13 @@ int sandbox_clk_test_enable(struct udevice *dev, int id) return clk_enable(&sbct->clks[id]); } +int sandbox_clk_test_enable_bulk(struct udevice *dev) +{ + struct sandbox_clk_test *sbct = dev_get_priv(dev); + + return clk_enable_bulk(&sbct->bulk); +} + int sandbox_clk_test_disable(struct udevice *dev, int id) { struct sandbox_clk_test *sbct = dev_get_priv(dev); @@ -74,6 +89,13 @@ int sandbox_clk_test_disable(struct udevice *dev, int id) return clk_disable(&sbct->clks[id]); } +int sandbox_clk_test_disable_bulk(struct udevice *dev) +{ + struct sandbox_clk_test *sbct = dev_get_priv(dev); + + return clk_disable_bulk(&sbct->bulk); +} + int sandbox_clk_test_free(struct udevice *dev) { struct sandbox_clk_test *sbct = dev_get_priv(dev); @@ -88,6 +110,13 @@ int sandbox_clk_test_free(struct udevice *dev) return 0; } +int sandbox_clk_test_release_bulk(struct udevice *dev) +{ + struct sandbox_clk_test *sbct = dev_get_priv(dev); + + return clk_release_bulk(&sbct->bulk); +} + static const struct udevice_id sandbox_clk_test_ids[] = { { .compatible = "sandbox,clk-test" }, { } diff --git a/test/dm/clk.c b/test/dm/clk.c index 712a1e6..95716f8 100644 --- a/test/dm/clk.c +++ b/test/dm/clk.c @@ -101,3 +101,41 @@ static int dm_test_clk(struct unit_test_state *uts) return 0; } DM_TEST(dm_test_clk, DM_TESTF_SCAN_FDT); + +static int dm_test_clk_bulk(struct unit_test_state *uts) +{ + struct udevice *dev_clk, *dev_test; + ulong rate; + + ut_assertok(uclass_get_device_by_name(UCLASS_CLK, "clk-sbox", + &dev_clk)); + ut_assertok(uclass_get_device_by_name(UCLASS_MISC, "clk-test", + &dev_test)); + ut_assertok(sandbox_clk_test_get_bulk(dev_test)); + + ut_asserteq(0, sandbox_clk_query_enable(dev_clk, SANDBOX_CLK_ID_SPI)); + ut_asserteq(0, sandbox_clk_query_enable(dev_clk, SANDBOX_CLK_ID_I2C)); + + /* Fixed clock does not support enable, thus should not fail */ + ut_assertok(sandbox_clk_test_enable_bulk(dev_test)); + ut_asserteq(1, sandbox_clk_query_enable(dev_clk, SANDBOX_CLK_ID_SPI)); + ut_asserteq(1, sandbox_clk_query_enable(dev_clk, SANDBOX_CLK_ID_I2C)); + + /* Fixed clock does not support disable, thus should not fail */ + ut_assertok(sandbox_clk_test_disable_bulk(dev_test)); + ut_asserteq(0, sandbox_clk_query_enable(dev_clk, SANDBOX_CLK_ID_SPI)); + ut_asserteq(0, sandbox_clk_query_enable(dev_clk, SANDBOX_CLK_ID_I2C)); + + /* Fixed clock does not support enable, thus should not fail */ + ut_assertok(sandbox_clk_test_enable_bulk(dev_test)); + ut_asserteq(1, sandbox_clk_query_enable(dev_clk, SANDBOX_CLK_ID_SPI)); + ut_asserteq(1, sandbox_clk_query_enable(dev_clk, SANDBOX_CLK_ID_I2C)); + + /* Fixed clock does not support disable, thus should not fail */ + ut_assertok(sandbox_clk_test_release_bulk(dev_test)); + ut_asserteq(0, sandbox_clk_query_enable(dev_clk, SANDBOX_CLK_ID_SPI)); + ut_asserteq(0, sandbox_clk_query_enable(dev_clk, SANDBOX_CLK_ID_I2C)); + + return 0; +} +DM_TEST(dm_test_clk_bulk, DM_TESTF_SCAN_FDT);