mirror of https://github.com/torvalds/linux.git
75 lines
2.1 KiB
C
75 lines
2.1 KiB
C
// SPDX-License-Identifier: GPL-2.0
|
|
|
|
#include <kunit/test.h>
|
|
#include <kunit/device.h>
|
|
#include <linux/coresight.h>
|
|
|
|
#include "coresight-priv.h"
|
|
|
|
static struct coresight_device *coresight_test_device(struct device *dev)
|
|
{
|
|
struct coresight_device *csdev = devm_kcalloc(dev, 1,
|
|
sizeof(struct coresight_device),
|
|
GFP_KERNEL);
|
|
csdev->pdata = devm_kcalloc(dev, 1,
|
|
sizeof(struct coresight_platform_data),
|
|
GFP_KERNEL);
|
|
return csdev;
|
|
}
|
|
|
|
static void test_default_sink(struct kunit *test)
|
|
{
|
|
/*
|
|
* Source -> ETF -> ETR -> CATU
|
|
* ^
|
|
* | default
|
|
*/
|
|
struct device *dev = kunit_device_register(test, "coresight_kunit");
|
|
struct coresight_device *src = coresight_test_device(dev),
|
|
*etf = coresight_test_device(dev),
|
|
*etr = coresight_test_device(dev),
|
|
*catu = coresight_test_device(dev);
|
|
struct coresight_connection conn = {};
|
|
|
|
src->type = CORESIGHT_DEV_TYPE_SOURCE;
|
|
/*
|
|
* Don't use CORESIGHT_DEV_SUBTYPE_SOURCE_PROC, that would always return
|
|
* a TRBE sink if one is registered.
|
|
*/
|
|
src->subtype.source_subtype = CORESIGHT_DEV_SUBTYPE_SOURCE_BUS;
|
|
etf->type = CORESIGHT_DEV_TYPE_LINKSINK;
|
|
etf->subtype.sink_subtype = CORESIGHT_DEV_SUBTYPE_SINK_BUFFER;
|
|
etr->type = CORESIGHT_DEV_TYPE_SINK;
|
|
etr->subtype.sink_subtype = CORESIGHT_DEV_SUBTYPE_SINK_SYSMEM;
|
|
catu->type = CORESIGHT_DEV_TYPE_HELPER;
|
|
|
|
conn.src_dev = src;
|
|
conn.dest_dev = etf;
|
|
coresight_add_out_conn(dev, src->pdata, &conn);
|
|
|
|
conn.src_dev = etf;
|
|
conn.dest_dev = etr;
|
|
coresight_add_out_conn(dev, etf->pdata, &conn);
|
|
|
|
conn.src_dev = etr;
|
|
conn.dest_dev = catu;
|
|
coresight_add_out_conn(dev, etr->pdata, &conn);
|
|
|
|
KUNIT_ASSERT_PTR_EQ(test, coresight_find_default_sink(src), etr);
|
|
}
|
|
|
|
static struct kunit_case coresight_testcases[] = {
|
|
KUNIT_CASE(test_default_sink),
|
|
{}
|
|
};
|
|
|
|
static struct kunit_suite coresight_test_suite = {
|
|
.name = "coresight_test_suite",
|
|
.test_cases = coresight_testcases,
|
|
};
|
|
|
|
kunit_test_suites(&coresight_test_suite);
|
|
MODULE_LICENSE("GPL");
|
|
MODULE_AUTHOR("James Clark <james.clark@linaro.org>");
|
|
MODULE_DESCRIPTION("Arm CoreSight KUnit tests");
|