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 9 static 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 20 static 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 61 static struct kunit_case coresight_testcases[] = { 62 KUNIT_CASE(test_default_sink), 63 {} 64 }; 65 66 static struct kunit_suite coresight_test_suite = { 67 .name = "coresight_test_suite", 68 .test_cases = coresight_testcases, 69 }; 70 71 kunit_test_suites(&coresight_test_suite); 72 MODULE_LICENSE("GPL"); 73 MODULE_AUTHOR("James Clark <james.clark@linaro.org>"); 74 MODULE_DESCRIPTION("Arm CoreSight KUnit tests"); 75