diff mbox series

[v3,2/2] test: dm: clk_ccf: test ccf_clk_ops

Message ID 20231111-enable_count-v3-2-08a821892fa9@outlook.com
State Accepted
Commit d30618243990457d219ab81955c2738580d26cd2
Delegated to: Sean Anderson
Headers show
Series clk: ccf: fix enable_count mismatch | expand

Commit Message

Yang Xiwen via B4 Relay Dec. 15, 2023, 6:28 p.m. UTC
From: Yang Xiwen <forbidden405@outlook.com>

Assign ccf_clk_ops to .ops of clk_ccf driver so that it can act as an
clk provider. Also add "#clock-cells=<1>" to its device tree node.

Add "i2c_root" to clk_test in the device tree and driver for testing.

Get "i2c_root" clock in CCF unit tests and add tests for it.

Signed-off-by: Yang Xiwen <forbidden405@outlook.com>
---
 arch/sandbox/dts/test.dts      |  4 +++-
 arch/sandbox/include/asm/clk.h |  1 +
 drivers/clk/clk_sandbox_ccf.c  |  1 +
 drivers/clk/clk_sandbox_test.c |  1 +
 test/dm/clk_ccf.c              | 14 +++++++++++---
 5 files changed, 17 insertions(+), 4 deletions(-)

Comments

Sean Anderson Dec. 15, 2023, 6:49 p.m. UTC | #1
On 12/15/23 13:28, Yang Xiwen via B4 Relay wrote:
> From: Yang Xiwen <forbidden405@outlook.com>
> 
> Assign ccf_clk_ops to .ops of clk_ccf driver so that it can act as an
> clk provider. Also add "#clock-cells=<1>" to its device tree node.
> 
> Add "i2c_root" to clk_test in the device tree and driver for testing.
> 
> Get "i2c_root" clock in CCF unit tests and add tests for it.
> 
> Signed-off-by: Yang Xiwen <forbidden405@outlook.com>
> ---
>   arch/sandbox/dts/test.dts      |  4 +++-
>   arch/sandbox/include/asm/clk.h |  1 +
>   drivers/clk/clk_sandbox_ccf.c  |  1 +
>   drivers/clk/clk_sandbox_test.c |  1 +
>   test/dm/clk_ccf.c              | 14 +++++++++++---
>   5 files changed, 17 insertions(+), 4 deletions(-)
> 
> diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts
> index c7197795ef..a3a865d65c 100644
> --- a/arch/sandbox/dts/test.dts
> +++ b/arch/sandbox/dts/test.dts
> @@ -631,9 +631,10 @@
>   		clocks = <&clk_fixed>,
>   			 <&clk_sandbox 1>,
>   			 <&clk_sandbox 0>,
> +			 <&ccf 11>,
>   			 <&clk_sandbox 3>,
>   			 <&clk_sandbox 2>;
> -		clock-names = "fixed", "i2c", "spi", "uart2", "uart1";
> +		clock-names = "fixed", "i2c", "spi", "i2c_root", "uart2", "uart1";
>   	};
>   
>   	clk-test2 {
> @@ -654,6 +655,7 @@
>   
>   	ccf: clk-ccf {
>   		compatible = "sandbox,clk-ccf";
> +		#clock-cells = <1>;
>   	};
>   
>   	efi-media {
> diff --git a/arch/sandbox/include/asm/clk.h b/arch/sandbox/include/asm/clk.h
> index df7156fe31..1daf2e7ac7 100644
> --- a/arch/sandbox/include/asm/clk.h
> +++ b/arch/sandbox/include/asm/clk.h
> @@ -39,6 +39,7 @@ enum sandbox_clk_test_id {
>   	SANDBOX_CLK_TEST_ID_FIXED,
>   	SANDBOX_CLK_TEST_ID_SPI,
>   	SANDBOX_CLK_TEST_ID_I2C,
> +	SANDBOX_CLK_TEST_ID_I2C_ROOT,
>   	SANDBOX_CLK_TEST_ID_DEVM1,
>   	SANDBOX_CLK_TEST_ID_DEVM2,
>   	SANDBOX_CLK_TEST_ID_DEVM_NULL,
> diff --git a/drivers/clk/clk_sandbox_ccf.c b/drivers/clk/clk_sandbox_ccf.c
> index fedcdd4044..38184e27aa 100644
> --- a/drivers/clk/clk_sandbox_ccf.c
> +++ b/drivers/clk/clk_sandbox_ccf.c
> @@ -284,6 +284,7 @@ static int sandbox_clk_ccf_probe(struct udevice *dev)
>   U_BOOT_DRIVER(sandbox_clk_ccf) = {
>   	.name = "sandbox_clk_ccf",
>   	.id = UCLASS_CLK,
> +	.ops = &ccf_clk_ops,
>   	.probe = sandbox_clk_ccf_probe,
>   	.of_match = sandbox_clk_ccf_test_ids,
>   };
> diff --git a/drivers/clk/clk_sandbox_test.c b/drivers/clk/clk_sandbox_test.c
> index 5807a454f3..c695b69321 100644
> --- a/drivers/clk/clk_sandbox_test.c
> +++ b/drivers/clk/clk_sandbox_test.c
> @@ -15,6 +15,7 @@ static const char * const sandbox_clk_test_names[] = {
>   	[SANDBOX_CLK_TEST_ID_FIXED] = "fixed",
>   	[SANDBOX_CLK_TEST_ID_SPI] = "spi",
>   	[SANDBOX_CLK_TEST_ID_I2C] = "i2c",
> +	[SANDBOX_CLK_TEST_ID_I2C_ROOT] = "i2c_root",
>   };
>   
>   int sandbox_clk_test_get(struct udevice *dev)
> diff --git a/test/dm/clk_ccf.c b/test/dm/clk_ccf.c
> index e4ebb93cda..b8be6d6572 100644
> --- a/test/dm/clk_ccf.c
> +++ b/test/dm/clk_ccf.c
> @@ -18,8 +18,8 @@
>   /* Tests for Common Clock Framework driver */
>   static int dm_test_clk_ccf(struct unit_test_state *uts)
>   {
> -	struct clk *clk, *pclk;
> -	struct udevice *dev;
> +	struct clk *clk, *pclk, clk_ccf;
> +	struct udevice *dev, *test_dev;
>   	long long rate;
>   	int ret;
>   #if CONFIG_IS_ENABLED(CLK_CCF)
> @@ -29,6 +29,7 @@ static int dm_test_clk_ccf(struct unit_test_state *uts)
>   
>   	/* Get the device using the clk device */
>   	ut_assertok(uclass_get_device_by_name(UCLASS_CLK, "clk-ccf", &dev));
> +	ut_assertok(uclass_get_device_by_name(UCLASS_MISC, "clk-test", &test_dev));
>   
>   	/* Test for clk_get_by_id() */
>   	ret = clk_get_by_id(SANDBOX_CLK_ECSPI_ROOT, &clk);
> @@ -110,11 +111,18 @@ static int dm_test_clk_ccf(struct unit_test_state *uts)
>   
>   #if CONFIG_IS_ENABLED(CLK_CCF)
>   	/* Test clk tree enable/disable */
> +
> +	ret = clk_get_by_index(test_dev, SANDBOX_CLK_TEST_ID_I2C_ROOT, &clk_ccf);
> +	ut_assertok(ret);
> +	ut_asserteq_str("clk-ccf", clk_ccf.dev->name);
> +	ut_asserteq(clk_ccf.id, SANDBOX_CLK_I2C_ROOT);
> +
>   	ret = clk_get_by_id(SANDBOX_CLK_I2C_ROOT, &clk);
>   	ut_assertok(ret);
>   	ut_asserteq_str("i2c_root", clk->dev->name);
> +	ut_asserteq(clk->id, SANDBOX_CLK_I2C_ROOT);
>   
> -	ret = clk_enable(clk);
> +	ret = clk_enable(&clk_ccf);
>   	ut_assertok(ret);
>   
>   	ret = sandbox_clk_enable_count(clk);
> 

Reviewed-by: Sean Anderson <seanga2@gmail.com>
Sean Anderson Dec. 15, 2023, 8:56 p.m. UTC | #2
On Sat, 16 Dec 2023 02:28:52 +0800, Yang Xiwen wrote:
> Assign ccf_clk_ops to .ops of clk_ccf driver so that it can act as an
> clk provider. Also add "#clock-cells=<1>" to its device tree node.
> 
> Add "i2c_root" to clk_test in the device tree and driver for testing.
> 
> Get "i2c_root" clock in CCF unit tests and add tests for it.
> 
> [...]

Applied, thanks!

[2/2] test: dm: clk_ccf: test ccf_clk_ops
      https://source.denx.de/u-boot/custodians/u-boot-clk/-/commit/d30618243990

Best regards,
diff mbox series

Patch

diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts
index c7197795ef..a3a865d65c 100644
--- a/arch/sandbox/dts/test.dts
+++ b/arch/sandbox/dts/test.dts
@@ -631,9 +631,10 @@ 
 		clocks = <&clk_fixed>,
 			 <&clk_sandbox 1>,
 			 <&clk_sandbox 0>,
+			 <&ccf 11>,
 			 <&clk_sandbox 3>,
 			 <&clk_sandbox 2>;
-		clock-names = "fixed", "i2c", "spi", "uart2", "uart1";
+		clock-names = "fixed", "i2c", "spi", "i2c_root", "uart2", "uart1";
 	};
 
 	clk-test2 {
@@ -654,6 +655,7 @@ 
 
 	ccf: clk-ccf {
 		compatible = "sandbox,clk-ccf";
+		#clock-cells = <1>;
 	};
 
 	efi-media {
diff --git a/arch/sandbox/include/asm/clk.h b/arch/sandbox/include/asm/clk.h
index df7156fe31..1daf2e7ac7 100644
--- a/arch/sandbox/include/asm/clk.h
+++ b/arch/sandbox/include/asm/clk.h
@@ -39,6 +39,7 @@  enum sandbox_clk_test_id {
 	SANDBOX_CLK_TEST_ID_FIXED,
 	SANDBOX_CLK_TEST_ID_SPI,
 	SANDBOX_CLK_TEST_ID_I2C,
+	SANDBOX_CLK_TEST_ID_I2C_ROOT,
 	SANDBOX_CLK_TEST_ID_DEVM1,
 	SANDBOX_CLK_TEST_ID_DEVM2,
 	SANDBOX_CLK_TEST_ID_DEVM_NULL,
diff --git a/drivers/clk/clk_sandbox_ccf.c b/drivers/clk/clk_sandbox_ccf.c
index fedcdd4044..38184e27aa 100644
--- a/drivers/clk/clk_sandbox_ccf.c
+++ b/drivers/clk/clk_sandbox_ccf.c
@@ -284,6 +284,7 @@  static int sandbox_clk_ccf_probe(struct udevice *dev)
 U_BOOT_DRIVER(sandbox_clk_ccf) = {
 	.name = "sandbox_clk_ccf",
 	.id = UCLASS_CLK,
+	.ops = &ccf_clk_ops,
 	.probe = sandbox_clk_ccf_probe,
 	.of_match = sandbox_clk_ccf_test_ids,
 };
diff --git a/drivers/clk/clk_sandbox_test.c b/drivers/clk/clk_sandbox_test.c
index 5807a454f3..c695b69321 100644
--- a/drivers/clk/clk_sandbox_test.c
+++ b/drivers/clk/clk_sandbox_test.c
@@ -15,6 +15,7 @@  static const char * const sandbox_clk_test_names[] = {
 	[SANDBOX_CLK_TEST_ID_FIXED] = "fixed",
 	[SANDBOX_CLK_TEST_ID_SPI] = "spi",
 	[SANDBOX_CLK_TEST_ID_I2C] = "i2c",
+	[SANDBOX_CLK_TEST_ID_I2C_ROOT] = "i2c_root",
 };
 
 int sandbox_clk_test_get(struct udevice *dev)
diff --git a/test/dm/clk_ccf.c b/test/dm/clk_ccf.c
index e4ebb93cda..b8be6d6572 100644
--- a/test/dm/clk_ccf.c
+++ b/test/dm/clk_ccf.c
@@ -18,8 +18,8 @@ 
 /* Tests for Common Clock Framework driver */
 static int dm_test_clk_ccf(struct unit_test_state *uts)
 {
-	struct clk *clk, *pclk;
-	struct udevice *dev;
+	struct clk *clk, *pclk, clk_ccf;
+	struct udevice *dev, *test_dev;
 	long long rate;
 	int ret;
 #if CONFIG_IS_ENABLED(CLK_CCF)
@@ -29,6 +29,7 @@  static int dm_test_clk_ccf(struct unit_test_state *uts)
 
 	/* Get the device using the clk device */
 	ut_assertok(uclass_get_device_by_name(UCLASS_CLK, "clk-ccf", &dev));
+	ut_assertok(uclass_get_device_by_name(UCLASS_MISC, "clk-test", &test_dev));
 
 	/* Test for clk_get_by_id() */
 	ret = clk_get_by_id(SANDBOX_CLK_ECSPI_ROOT, &clk);
@@ -110,11 +111,18 @@  static int dm_test_clk_ccf(struct unit_test_state *uts)
 
 #if CONFIG_IS_ENABLED(CLK_CCF)
 	/* Test clk tree enable/disable */
+
+	ret = clk_get_by_index(test_dev, SANDBOX_CLK_TEST_ID_I2C_ROOT, &clk_ccf);
+	ut_assertok(ret);
+	ut_asserteq_str("clk-ccf", clk_ccf.dev->name);
+	ut_asserteq(clk_ccf.id, SANDBOX_CLK_I2C_ROOT);
+
 	ret = clk_get_by_id(SANDBOX_CLK_I2C_ROOT, &clk);
 	ut_assertok(ret);
 	ut_asserteq_str("i2c_root", clk->dev->name);
+	ut_asserteq(clk->id, SANDBOX_CLK_I2C_ROOT);
 
-	ret = clk_enable(clk);
+	ret = clk_enable(&clk_ccf);
 	ut_assertok(ret);
 
 	ret = sandbox_clk_enable_count(clk);