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 |
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>
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 --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);