> 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 <lu...@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....@nxp.com> > } > DM_TEST(dm_test_clk, DM_TESTF_SCAN_FDT); > -- > 2.11.0 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot