1*e3912d09SKarolina Stolarek // SPDX-License-Identifier: GPL-2.0 AND MIT
2*e3912d09SKarolina Stolarek /*
3*e3912d09SKarolina Stolarek  * Copyright © 2023 Intel Corporation
4*e3912d09SKarolina Stolarek  */
5*e3912d09SKarolina Stolarek #include <drm/ttm/ttm_resource.h>
6*e3912d09SKarolina Stolarek #include <drm/ttm/ttm_device.h>
7*e3912d09SKarolina Stolarek #include <drm/ttm/ttm_placement.h>
8*e3912d09SKarolina Stolarek 
9*e3912d09SKarolina Stolarek #include "ttm_kunit_helpers.h"
10*e3912d09SKarolina Stolarek 
11*e3912d09SKarolina Stolarek static void ttm_device_init_basic(struct kunit *test)
12*e3912d09SKarolina Stolarek {
13*e3912d09SKarolina Stolarek 	struct ttm_test_devices *priv = test->priv;
14*e3912d09SKarolina Stolarek 	struct ttm_device *ttm_dev;
15*e3912d09SKarolina Stolarek 	struct ttm_resource_manager *ttm_sys_man;
16*e3912d09SKarolina Stolarek 	int err;
17*e3912d09SKarolina Stolarek 
18*e3912d09SKarolina Stolarek 	ttm_dev = kunit_kzalloc(test, sizeof(*ttm_dev), GFP_KERNEL);
19*e3912d09SKarolina Stolarek 	KUNIT_ASSERT_NOT_NULL(test, ttm_dev);
20*e3912d09SKarolina Stolarek 
21*e3912d09SKarolina Stolarek 	err = ttm_device_kunit_init(priv, ttm_dev, false, false);
22*e3912d09SKarolina Stolarek 	KUNIT_ASSERT_EQ(test, err, 0);
23*e3912d09SKarolina Stolarek 
24*e3912d09SKarolina Stolarek 	KUNIT_EXPECT_PTR_EQ(test, ttm_dev->funcs, &ttm_dev_funcs);
25*e3912d09SKarolina Stolarek 	KUNIT_ASSERT_NOT_NULL(test, ttm_dev->wq);
26*e3912d09SKarolina Stolarek 	KUNIT_ASSERT_NOT_NULL(test, ttm_dev->man_drv[TTM_PL_SYSTEM]);
27*e3912d09SKarolina Stolarek 
28*e3912d09SKarolina Stolarek 	ttm_sys_man = &ttm_dev->sysman;
29*e3912d09SKarolina Stolarek 	KUNIT_ASSERT_NOT_NULL(test, ttm_sys_man);
30*e3912d09SKarolina Stolarek 	KUNIT_EXPECT_TRUE(test, ttm_sys_man->use_tt);
31*e3912d09SKarolina Stolarek 	KUNIT_EXPECT_TRUE(test, ttm_sys_man->use_type);
32*e3912d09SKarolina Stolarek 	KUNIT_ASSERT_NOT_NULL(test, ttm_sys_man->func);
33*e3912d09SKarolina Stolarek 
34*e3912d09SKarolina Stolarek 	KUNIT_EXPECT_PTR_EQ(test, ttm_dev->dev_mapping,
35*e3912d09SKarolina Stolarek 			    priv->drm->anon_inode->i_mapping);
36*e3912d09SKarolina Stolarek 
37*e3912d09SKarolina Stolarek 	ttm_device_fini(ttm_dev);
38*e3912d09SKarolina Stolarek }
39*e3912d09SKarolina Stolarek 
40*e3912d09SKarolina Stolarek static struct kunit_case ttm_device_test_cases[] = {
41*e3912d09SKarolina Stolarek 	KUNIT_CASE(ttm_device_init_basic),
42*e3912d09SKarolina Stolarek 	{}
43*e3912d09SKarolina Stolarek };
44*e3912d09SKarolina Stolarek 
45*e3912d09SKarolina Stolarek static struct kunit_suite ttm_device_test_suite = {
46*e3912d09SKarolina Stolarek 	.name = "ttm_device",
47*e3912d09SKarolina Stolarek 	.init = ttm_test_devices_init,
48*e3912d09SKarolina Stolarek 	.exit = ttm_test_devices_fini,
49*e3912d09SKarolina Stolarek 	.test_cases = ttm_device_test_cases,
50*e3912d09SKarolina Stolarek };
51*e3912d09SKarolina Stolarek 
52*e3912d09SKarolina Stolarek kunit_test_suites(&ttm_device_test_suite);
53*e3912d09SKarolina Stolarek 
54*e3912d09SKarolina Stolarek MODULE_LICENSE("GPL");
55