blob: cddc846c1e4d952296f1e9e226601e69547b86fe [file] [log] [blame]
/*
* Copyright (c) 2022 Google, LLC
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr/ztest.h>
#include <zephyr/drivers/clock_control.h>
#define TEST_FIXED_RATE_CLK0 DT_NODELABEL(test_fixed_rate_clk0)
#define TEST_FIXED_RATE_CLK0_RATE DT_PROP(TEST_FIXED_RATE_CLK0, clock_frequency)
/*
* Basic test for checking correctness of clock_api implementation
*/
ZTEST(fixed_clk, test_fixed_rate_clk_on_off_status_rate)
{
const struct device *dev = DEVICE_DT_GET(TEST_FIXED_RATE_CLK0);
enum clock_control_status status;
uint32_t rate;
int err;
zassert_equal(device_is_ready(dev), true, "%s: Device wasn't ready",
dev->name);
status = clock_control_get_status(dev, 0);
zassert_equal(status, CLOCK_CONTROL_STATUS_ON,
"%s: Unexpected status (%d)", dev->name, status);
err = clock_control_on(dev, 0);
zassert_equal(0, err, "%s: Unexpected err (%d)", dev->name, err);
status = clock_control_get_status(dev, 0);
zassert_equal(status, CLOCK_CONTROL_STATUS_ON,
"%s: Unexpected status (%d)", dev->name, status);
err = clock_control_off(dev, 0);
zassert_equal(0, err, "%s: Expected 0, got (%d)",
dev->name, err);
status = clock_control_get_status(dev, 0);
zassert_equal(status, CLOCK_CONTROL_STATUS_ON,
"%s: Unexpected status (%d)", dev->name, status);
err = clock_control_get_rate(dev, 0, &rate);
zassert_equal(0, err, "%s: Unexpected err (%d)", dev->name, err);
zassert_equal(TEST_FIXED_RATE_CLK0_RATE, rate,
"%s: Got wrong rate, expected %u, got %u\n",
dev->name, TEST_FIXED_RATE_CLK0_RATE, rate);
}
ZTEST_SUITE(fixed_clk, NULL, NULL, NULL, NULL, NULL);