File Index
Files and directories
Sign in
FILE

coresight-kunit-tests.c

File preview with syntax highlighting.

linux-6.19.14/drivers/hwtracing/coresight/coresight-kunit-tests.c C
 1// SPDX-License-Identifier: GPL-2.0
 2
 3#include <kunit/test.h>
 4#include <kunit/device.h>
 5#include <linux/coresight.h>
 6
 7#include "coresight-priv.h"
 8
 9static struct coresight_device *coresight_test_device(struct device *dev)
10{
11	struct coresight_device *csdev = devm_kcalloc(dev, 1,
12						     sizeof(struct coresight_device),
13						     GFP_KERNEL);
14	csdev->pdata = devm_kcalloc(dev, 1,
15				   sizeof(struct coresight_platform_data),
16				   GFP_KERNEL);
17	return csdev;
18}
19
20static void test_default_sink(struct kunit *test)
21{
22	/*
23	 * Source -> ETF -> ETR -> CATU
24	 *                   ^
25	 *                   | default
26	 */
27	struct device *dev = kunit_device_register(test, "coresight_kunit");
28	struct coresight_device *src = coresight_test_device(dev),
29				*etf = coresight_test_device(dev),
30				*etr = coresight_test_device(dev),
31				*catu = coresight_test_device(dev);
32	struct coresight_connection conn = {};
33
34	src->type = CORESIGHT_DEV_TYPE_SOURCE;
35	/*
36	 * Don't use CORESIGHT_DEV_SUBTYPE_SOURCE_PROC, that would always return
37	 * a TRBE sink if one is registered.
38	 */
39	src->subtype.source_subtype = CORESIGHT_DEV_SUBTYPE_SOURCE_BUS;
40	etf->type = CORESIGHT_DEV_TYPE_LINKSINK;
41	etf->subtype.sink_subtype = CORESIGHT_DEV_SUBTYPE_SINK_BUFFER;
42	etr->type = CORESIGHT_DEV_TYPE_SINK;
43	etr->subtype.sink_subtype = CORESIGHT_DEV_SUBTYPE_SINK_SYSMEM;
44	catu->type = CORESIGHT_DEV_TYPE_HELPER;
45
46	conn.src_dev = src;
47	conn.dest_dev = etf;
48	coresight_add_out_conn(dev, src->pdata, &conn);
49
50	conn.src_dev = etf;
51	conn.dest_dev = etr;
52	coresight_add_out_conn(dev, etf->pdata, &conn);
53
54	conn.src_dev = etr;
55	conn.dest_dev = catu;
56	coresight_add_out_conn(dev, etr->pdata, &conn);
57
58	KUNIT_ASSERT_PTR_EQ(test, coresight_find_default_sink(src), etr);
59}
60
61static struct kunit_case coresight_testcases[] = {
62	KUNIT_CASE(test_default_sink),
63	{}
64};
65
66static struct kunit_suite coresight_test_suite = {
67	.name = "coresight_test_suite",
68	.test_cases = coresight_testcases,
69};
70
71kunit_test_suites(&coresight_test_suite);
72MODULE_LICENSE("GPL");
73MODULE_AUTHOR("James Clark <james.clark@linaro.org>");
74MODULE_DESCRIPTION("Arm CoreSight KUnit tests");
~/ Read-only file preview.