mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 08:38:45 +02:00 
			
		
		
		
	 b104a941a9
			
		
	
	
		b104a941a9
		
	
	
	
	
		
			
			Add a test to confirm that default sink selection skips over an ETF and returns an ETR even if it's further away. This also makes it easier to add new unit tests in the future. Reviewed-by: Leo Yan <leo.yan@arm.com> Signed-off-by: James Clark <james.clark@linaro.org> Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com> Link: https://lore.kernel.org/r/20250312-james-cs-kunit-test-v4-1-ae3dd718a26a@linaro.org
		
			
				
	
	
		
			74 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			74 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");
 |