[U-Boot] [PATCH v4 10/13] clk: test: Provide unit test for clk_get_by_id() method

Peng Fan peng.fan at nxp.com
Fri May 17 06:00:32 UTC 2019


> Subject: [PATCH v4 10/13] clk: test: Provide unit test for clk_get_by_id()
> method
> 
> This commit provides sandbox unit test for clk_get_by_id() method.
> 
> To test it default test clocks setup had to be adjusted to emulate structure
> similar to clocks in the Common Clock Framework [CCF] (for iMX devices).
> 
> The clk_get_by_id() relies on dev->driver_data having the pointer to struct
> clk.
> 
> Signed-off-by: Lukasz Majewski <lukma at denx.de>
> 
> ---
> 
> Changes in v4: None
> Changes in v3:
> - New patch
> 
>  arch/sandbox/include/asm/clk.h |  8 ++++++++
> drivers/clk/clk_sandbox_test.c | 23 +++++++++++++++++++++++
>  test/dm/clk.c                  |  3 ++-
>  3 files changed, 33 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/sandbox/include/asm/clk.h
> b/arch/sandbox/include/asm/clk.h index 2b1c49f783..90f925109f 100644
> --- a/arch/sandbox/include/asm/clk.h
> +++ b/arch/sandbox/include/asm/clk.h
> @@ -63,6 +63,14 @@ int sandbox_clk_query_enable(struct udevice *dev, int
> id);
>   */
>  int sandbox_clk_test_get(struct udevice *dev);
>  /**
> + * sandbox_clk_test_get_by_id - Ask the sandbox clock test device to
> +request its
> + * clocks by using clock id.
> + *
> + * @dev:	The sandbox clock test (client) devivce.
> + * @return:	0 if OK, or a negative error code.
> + */
> +int sandbox_clk_test_get_by_id(struct udevice *dev);
> +/**
>   * sandbox_clk_test_get_bulk - Ask the sandbox clock test device to request
> its
>   * clocks with the bulk clk API.
>   *
> diff --git a/drivers/clk/clk_sandbox_test.c b/drivers/clk/clk_sandbox_test.c
> index e8465dbfad..4d276f55b9 100644
> --- a/drivers/clk/clk_sandbox_test.c
> +++ b/drivers/clk/clk_sandbox_test.c
> @@ -34,6 +34,29 @@ int sandbox_clk_test_get(struct udevice *dev)
>  	return 0;
>  }
> 
> +int sandbox_clk_test_get_by_id(struct udevice *dev) {
> +	struct sandbox_clk_test *sbct = dev_get_priv(dev);
> +	struct clk *clkp, *i2c_clk;
> +	ulong driver_data_bkp;
> +	const int id = 24;
> +	int ret, id_bkp;
> +
> +	i2c_clk = &sbct->clks[SANDBOX_CLK_TEST_ID_I2C];
> +
> +	id_bkp = i2c_clk->id;
> +	i2c_clk->id = id;
> +	driver_data_bkp = i2c_clk->dev->driver_data;
> +	i2c_clk->dev->driver_data = (ulong)i2c_clk;
> +
> +	ret = clk_get_by_id(id, &clkp);
> +
> +	i2c_clk->id = id_bkp;
> +	i2c_clk->dev->driver_data = driver_data_bkp;
> +
> +	return ret;
> +}
> +
>  int sandbox_clk_test_get_bulk(struct udevice *dev)  {
>  	struct sandbox_clk_test *sbct = dev_get_priv(dev); diff --git
> a/test/dm/clk.c b/test/dm/clk.c index f301ecbb45..1685532259 100644
> --- a/test/dm/clk.c
> +++ b/test/dm/clk.c
> @@ -120,8 +120,9 @@ static int dm_test_clk(struct unit_test_state *uts)
>  	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));
> 
> -	ut_assertok(sandbox_clk_test_free(dev_test));
> +	ut_asserteq(0, sandbox_clk_test_get_by_id(dev_test));
> 
> +	ut_assertok(sandbox_clk_test_free(dev_test));
>  	return 0;

Reviewed-by: Peng Fan <peng.fan at nxp.com>

>  }
>  DM_TEST(dm_test_clk, DM_TESTF_SCAN_FDT);
> --
> 2.11.0



More information about the U-Boot mailing list