clk: add sandbox test for bulk API
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 <narmstrong@baylibre.com> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
a855be87da
commit
65388d0dc5
|
|
@ -63,6 +63,14 @@ int sandbox_clk_query_enable(struct udevice *dev, int id);
|
||||||
* @return: 0 if OK, or a negative error code.
|
* @return: 0 if OK, or a negative error code.
|
||||||
*/
|
*/
|
||||||
int sandbox_clk_test_get(struct udevice *dev);
|
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
|
* sandbox_clk_test_get_rate - Ask the sandbox clock test device to query a
|
||||||
* clock's rate.
|
* clock's rate.
|
||||||
|
|
@ -90,6 +98,14 @@ ulong sandbox_clk_test_set_rate(struct udevice *dev, int id, ulong rate);
|
||||||
* @return: 0 if OK, or a negative error code.
|
* @return: 0 if OK, or a negative error code.
|
||||||
*/
|
*/
|
||||||
int sandbox_clk_test_enable(struct udevice *dev, int id);
|
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
|
* sandbox_clk_test_disable - Ask the sandbox clock test device to disable a
|
||||||
* clock.
|
* clock.
|
||||||
|
|
@ -99,6 +115,14 @@ int sandbox_clk_test_enable(struct udevice *dev, int id);
|
||||||
* @return: 0 if OK, or a negative error code.
|
* @return: 0 if OK, or a negative error code.
|
||||||
*/
|
*/
|
||||||
int sandbox_clk_test_disable(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
|
* sandbox_clk_test_free - Ask the sandbox clock test device to free its
|
||||||
* clocks.
|
* clocks.
|
||||||
|
|
@ -107,5 +131,13 @@ int sandbox_clk_test_disable(struct udevice *dev, int id);
|
||||||
* @return: 0 if OK, or a negative error code.
|
* @return: 0 if OK, or a negative error code.
|
||||||
*/
|
*/
|
||||||
int sandbox_clk_test_free(struct udevice *dev);
|
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
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@
|
||||||
|
|
||||||
struct sandbox_clk_test {
|
struct sandbox_clk_test {
|
||||||
struct clk clks[SANDBOX_CLK_TEST_ID_COUNT];
|
struct clk clks[SANDBOX_CLK_TEST_ID_COUNT];
|
||||||
|
struct clk_bulk bulk;
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char * const sandbox_clk_test_names[] = {
|
static const char * const sandbox_clk_test_names[] = {
|
||||||
|
|
@ -34,6 +35,13 @@ int sandbox_clk_test_get(struct udevice *dev)
|
||||||
return 0;
|
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)
|
ulong sandbox_clk_test_get_rate(struct udevice *dev, int id)
|
||||||
{
|
{
|
||||||
struct sandbox_clk_test *sbct = dev_get_priv(dev);
|
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]);
|
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)
|
int sandbox_clk_test_disable(struct udevice *dev, int id)
|
||||||
{
|
{
|
||||||
struct sandbox_clk_test *sbct = dev_get_priv(dev);
|
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]);
|
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)
|
int sandbox_clk_test_free(struct udevice *dev)
|
||||||
{
|
{
|
||||||
struct sandbox_clk_test *sbct = dev_get_priv(dev);
|
struct sandbox_clk_test *sbct = dev_get_priv(dev);
|
||||||
|
|
@ -88,6 +110,13 @@ int sandbox_clk_test_free(struct udevice *dev)
|
||||||
return 0;
|
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[] = {
|
static const struct udevice_id sandbox_clk_test_ids[] = {
|
||||||
{ .compatible = "sandbox,clk-test" },
|
{ .compatible = "sandbox,clk-test" },
|
||||||
{ }
|
{ }
|
||||||
|
|
|
||||||
|
|
@ -101,3 +101,40 @@ static int dm_test_clk(struct unit_test_state *uts)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
DM_TEST(dm_test_clk, DM_TESTF_SCAN_FDT);
|
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;
|
||||||
|
|
||||||
|
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);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue