drm/vkms: Create vkms_connector struct

Create a structure wrapping the drm_connector.

Reviewed-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-3-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:02 +01:00 committed by Maxime Ripard
parent 6fdbc11502
commit a833c5880a
No known key found for this signature in database
GPG Key ID: E3EF0D6F671851C5
3 changed files with 16 additions and 7 deletions

View File

@ -29,22 +29,22 @@ static const struct drm_connector_helper_funcs vkms_conn_helper_funcs = {
.get_modes = vkms_conn_get_modes,
};
struct drm_connector *vkms_connector_init(struct vkms_device *vkmsdev)
struct vkms_connector *vkms_connector_init(struct vkms_device *vkmsdev)
{
struct drm_device *dev = &vkmsdev->drm;
struct drm_connector *connector;
struct vkms_connector *connector;
int ret;
connector = drmm_kzalloc(dev, sizeof(*connector), GFP_KERNEL);
if (!connector)
return ERR_PTR(-ENOMEM);
ret = drmm_connector_init(dev, connector, &vkms_connector_funcs,
ret = drmm_connector_init(dev, &connector->base, &vkms_connector_funcs,
DRM_MODE_CONNECTOR_VIRTUAL, NULL);
if (ret)
return ERR_PTR(ret);
drm_connector_helper_add(connector, &vkms_conn_helper_funcs);
drm_connector_helper_add(&connector->base, &vkms_conn_helper_funcs);
return connector;
}

View File

@ -5,6 +5,15 @@
#include "vkms_drv.h"
/**
* struct vkms_connector - VKMS custom type wrapping around the DRM connector
*
* @drm: Base DRM connector
*/
struct vkms_connector {
struct drm_connector base;
};
/**
* vkms_connector_init() - Initialize a connector
* @vkmsdev: VKMS device containing the connector
@ -12,6 +21,6 @@
* Returns:
* The connector or an error on failure.
*/
struct drm_connector *vkms_connector_init(struct vkms_device *vkmsdev);
struct vkms_connector *vkms_connector_init(struct vkms_device *vkmsdev);
#endif /* _VKMS_CONNECTOR_H_ */

View File

@ -7,7 +7,7 @@
int vkms_output_init(struct vkms_device *vkmsdev)
{
struct drm_device *dev = &vkmsdev->drm;
struct drm_connector *connector;
struct vkms_connector *connector;
struct drm_encoder *encoder;
struct vkms_output *output;
struct vkms_plane *primary, *overlay, *cursor = NULL;
@ -69,7 +69,7 @@ int vkms_output_init(struct vkms_device *vkmsdev)
encoder->possible_crtcs = drm_crtc_mask(&output->crtc);
/* Attach the encoder and the connector */
ret = drm_connector_attach_encoder(connector, encoder);
ret = drm_connector_attach_encoder(&connector->base, encoder);
if (ret) {
DRM_ERROR("Failed to attach connector to encoder\n");
return ret;