drm/vkms: Move default_config creation to its own function

Extract the initialization of the default configuration to a function.
Refactor, no functional changes.

Reviewed-by: Louis Chauvet <louis.chauvet@bootlin.com>
Co-developed-by: Louis Chauvet <louis.chauvet@bootlin.com>
Signed-off-by: Louis Chauvet <louis.chauvet@bootlin.com>
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250218101214.5790-6-jose.exposito89@gmail.com
Signed-off-by: Maxime Ripard <mripard@kernel.org>
This commit is contained in:
José Expósito 2025-02-18 11:12:05 +01:00 committed by Maxime Ripard
parent d3ae1e394b
commit 8b059b0c3f
No known key found for this signature in database
GPG Key ID: E3EF0D6F671851C5
4 changed files with 71 additions and 5 deletions

View File

@ -6,6 +6,12 @@
MODULE_IMPORT_NS("EXPORTED_FOR_KUNIT_TESTING");
struct default_config_case {
bool enable_cursor;
bool enable_writeback;
bool enable_overlay;
};
static void vkms_config_test_empty_config(struct kunit *test)
{
struct vkms_config *config;
@ -16,8 +22,40 @@ static void vkms_config_test_empty_config(struct kunit *test)
vkms_config_destroy(config);
}
static struct default_config_case default_config_cases[] = {
{ false, false, false },
{ true, false, false },
{ true, true, false },
{ true, false, true },
{ false, true, false },
{ false, true, true },
{ false, false, true },
{ true, true, true },
};
KUNIT_ARRAY_PARAM(default_config, default_config_cases, NULL);
static void vkms_config_test_default_config(struct kunit *test)
{
const struct default_config_case *params = test->param_value;
struct vkms_config *config;
config = vkms_config_default_create(params->enable_cursor,
params->enable_writeback,
params->enable_overlay);
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, config);
KUNIT_EXPECT_EQ(test, config->cursor, params->enable_cursor);
KUNIT_EXPECT_EQ(test, config->writeback, params->enable_writeback);
KUNIT_EXPECT_EQ(test, config->overlay, params->enable_overlay);
vkms_config_destroy(config);
}
static struct kunit_case vkms_config_test_cases[] = {
KUNIT_CASE(vkms_config_test_empty_config),
KUNIT_CASE_PARAM(vkms_config_test_default_config,
default_config_gen_params),
{}
};

View File

@ -20,6 +20,24 @@ struct vkms_config *vkms_config_create(void)
}
EXPORT_SYMBOL_IF_KUNIT(vkms_config_create);
struct vkms_config *vkms_config_default_create(bool enable_cursor,
bool enable_writeback,
bool enable_overlay)
{
struct vkms_config *config;
config = vkms_config_create();
if (IS_ERR(config))
return config;
config->cursor = enable_cursor;
config->writeback = enable_writeback;
config->overlay = enable_overlay;
return config;
}
EXPORT_SYMBOL_IF_KUNIT(vkms_config_default_create);
void vkms_config_destroy(struct vkms_config *config)
{
kfree(config);

View File

@ -31,6 +31,20 @@ struct vkms_config {
*/
struct vkms_config *vkms_config_create(void);
/**
* vkms_config_default_create() - Create the configuration for the default device
* @enable_cursor: Create or not a cursor plane
* @enable_writeback: Create or not a writeback connector
* @enable_overlay: Create or not overlay planes
*
* Returns:
* The default vkms_config or an error. Call vkms_config_destroy() to free the
* returned configuration.
*/
struct vkms_config *vkms_config_default_create(bool enable_cursor,
bool enable_writeback,
bool enable_overlay);
/**
* vkms_config_destroy() - Free a VKMS configuration
* @config: vkms_config to free

View File

@ -211,14 +211,10 @@ static int __init vkms_init(void)
int ret;
struct vkms_config *config;
config = vkms_config_create();
config = vkms_config_default_create(enable_cursor, enable_writeback, enable_overlay);
if (IS_ERR(config))
return PTR_ERR(config);
config->cursor = enable_cursor;
config->writeback = enable_writeback;
config->overlay = enable_overlay;
ret = vkms_create(config);
if (ret) {
vkms_config_destroy(config);