mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-30 18:47:06 +00:00
128 lines
4.1 KiB
Diff
128 lines
4.1 KiB
Diff
|
From cb8e04462f60d3f0659ef3adbba06cdf474f7fe3 Mon Sep 17 00:00:00 2001
|
||
|
From: Maxime Ripard <maxime@cerno.tech>
|
||
|
Date: Mon, 21 Nov 2022 11:11:52 +0100
|
||
|
Subject: [PATCH] drm/tests: helpers: Create the device in another
|
||
|
function
|
||
|
MIME-Version: 1.0
|
||
|
Content-Type: text/plain; charset=UTF-8
|
||
|
Content-Transfer-Encoding: 8bit
|
||
|
|
||
|
We'll need in some tests to control when the device needs to be added
|
||
|
and removed, so let's split the device creation from the DRM device
|
||
|
creation function.
|
||
|
|
||
|
Reviewed-by: Maíra Canal <mcanal@igalia.com>
|
||
|
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||
|
---
|
||
|
drivers/gpu/drm/tests/drm_kunit_helpers.c | 56 +++++++++++++----------
|
||
|
include/drm/drm_kunit_helpers.h | 5 +-
|
||
|
2 files changed, 37 insertions(+), 24 deletions(-)
|
||
|
|
||
|
--- a/drivers/gpu/drm/tests/drm_kunit_helpers.c
|
||
|
+++ b/drivers/gpu/drm/tests/drm_kunit_helpers.c
|
||
|
@@ -17,36 +17,51 @@ struct kunit_dev {
|
||
|
static const struct drm_mode_config_funcs drm_mode_config_funcs = {
|
||
|
};
|
||
|
|
||
|
-static int dev_init(struct kunit_resource *res, void *ptr)
|
||
|
+/**
|
||
|
+ * drm_kunit_helper_alloc_device - Allocate a mock device for a KUnit test
|
||
|
+ * @test: The test context object
|
||
|
+ *
|
||
|
+ * This allocates a fake struct &device to create a mock for a KUnit
|
||
|
+ * test.
|
||
|
+ *
|
||
|
+ * Callers need to make sure drm_kunit_helper_free_device() on the
|
||
|
+ * device when done.
|
||
|
+ *
|
||
|
+ * Returns:
|
||
|
+ * A pointer to the new device, or an ERR_PTR() otherwise.
|
||
|
+ */
|
||
|
+struct device *drm_kunit_helper_alloc_device(struct kunit *test)
|
||
|
{
|
||
|
- char *name = ptr;
|
||
|
- struct device *dev;
|
||
|
-
|
||
|
- dev = root_device_register(name);
|
||
|
- if (IS_ERR(dev))
|
||
|
- return PTR_ERR(dev);
|
||
|
-
|
||
|
- res->data = dev;
|
||
|
- return 0;
|
||
|
+ return root_device_register(KUNIT_DEVICE_NAME);
|
||
|
}
|
||
|
+EXPORT_SYMBOL_GPL(drm_kunit_helper_alloc_device);
|
||
|
|
||
|
-static void dev_free(struct kunit_resource *res)
|
||
|
+/**
|
||
|
+ * drm_kunit_helper_free_device - Frees a mock device
|
||
|
+ * @test: The test context object
|
||
|
+ * @dev: The device to free
|
||
|
+ *
|
||
|
+ * Frees a device allocated with drm_kunit_helper_alloc_device().
|
||
|
+ */
|
||
|
+void drm_kunit_helper_free_device(struct kunit *test, struct device *dev)
|
||
|
{
|
||
|
- struct device *dev = res->data;
|
||
|
-
|
||
|
root_device_unregister(dev);
|
||
|
}
|
||
|
+EXPORT_SYMBOL_GPL(drm_kunit_helper_free_device);
|
||
|
|
||
|
/**
|
||
|
* drm_kunit_helper_alloc_drm_device - Allocates a mock DRM device for KUnit tests
|
||
|
* @test: The test context object
|
||
|
+ * @dev: The parent device object
|
||
|
* @features: Mocked DRM device driver features
|
||
|
*
|
||
|
- * This function allocates a new struct &device, creates a struct
|
||
|
- * &drm_driver and will create a struct &drm_device using both.
|
||
|
+ * This function creates a struct &drm_driver and will create a struct
|
||
|
+ * &drm_device from @dev and that driver.
|
||
|
*
|
||
|
- * The device and driver are tied to the @test context and will get
|
||
|
- * cleaned at the end of the test. The drm_device is allocated through
|
||
|
+ * @dev should be allocated using drm_kunit_helper_alloc_device().
|
||
|
+ *
|
||
|
+ * The driver is tied to the @test context and will get cleaned at the
|
||
|
+ * end of the test. The drm_device is allocated through
|
||
|
* devm_drm_dev_alloc() and will thus be freed through a device-managed
|
||
|
* resource.
|
||
|
*
|
||
|
@@ -54,19 +69,14 @@ static void dev_free(struct kunit_resour
|
||
|
* A pointer to the new drm_device, or an ERR_PTR() otherwise.
|
||
|
*/
|
||
|
struct drm_device *
|
||
|
-drm_kunit_helper_alloc_drm_device(struct kunit *test,
|
||
|
+drm_kunit_helper_alloc_drm_device(struct kunit *test, struct device *dev,
|
||
|
u32 features)
|
||
|
{
|
||
|
struct kunit_dev *kdev;
|
||
|
struct drm_device *drm;
|
||
|
struct drm_driver *driver;
|
||
|
- struct device *dev;
|
||
|
int ret;
|
||
|
|
||
|
- dev = kunit_alloc_resource(test, dev_init, dev_free, GFP_KERNEL, KUNIT_DEVICE_NAME);
|
||
|
- if (!dev)
|
||
|
- return ERR_PTR(-ENOMEM);
|
||
|
-
|
||
|
driver = kunit_kzalloc(test, sizeof(*driver), GFP_KERNEL);
|
||
|
if (!driver)
|
||
|
return ERR_PTR(-ENOMEM);
|
||
|
--- a/include/drm/drm_kunit_helpers.h
|
||
|
+++ b/include/drm/drm_kunit_helpers.h
|
||
|
@@ -6,8 +6,11 @@
|
||
|
struct drm_device;
|
||
|
struct kunit;
|
||
|
|
||
|
+struct device *drm_kunit_helper_alloc_device(struct kunit *test);
|
||
|
+void drm_kunit_helper_free_device(struct kunit *test, struct device *dev);
|
||
|
+
|
||
|
struct drm_device *
|
||
|
-drm_kunit_helper_alloc_drm_device(struct kunit *test,
|
||
|
+drm_kunit_helper_alloc_drm_device(struct kunit *test, struct device *dev,
|
||
|
u32 features);
|
||
|
|
||
|
#endif // DRM_KUNIT_HELPERS_H_
|