Commit 30c63715 authored by Thomas Zimmermann's avatar Thomas Zimmermann
Browse files

drm/plane-helper: Export individual helpers



Export the individual plane helpers that make up the plane functions and
align the naming with other helpers. The plane helpers are for non-atomic
modesetting and exporting them will simplify a later conversion of drivers
to atomic modesetting.

With struct drm_plane_funcs removed from drm_plane_helper.h, also remove
the include statements. It only needs linux/types.h for uint32_t and a
number of forward declarations.

Signed-off-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: default avatarSam Ravnborg <sam@ravnborg.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20220720083058.15371-6-tzimmermann@suse.de
parent 254e5e88
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -85,6 +85,7 @@
#include <drm/drm_vblank.h>
#include <drm/drm_audio_component.h>
#include <drm/drm_gem_atomic_helper.h>
#include <drm/drm_plane_helper.h>

#include "ivsrcid/dcn/irqsrcs_dcn_1_0.h"

@@ -7717,7 +7718,7 @@ static void dm_drm_plane_destroy_state(struct drm_plane *plane,
static const struct drm_plane_funcs dm_plane_funcs = {
	.update_plane	= drm_atomic_helper_update_plane,
	.disable_plane	= drm_atomic_helper_disable_plane,
	.destroy	= drm_primary_helper_destroy,
	.destroy	= drm_plane_helper_destroy,
	.reset = dm_drm_plane_reset,
	.atomic_duplicate_state = dm_drm_plane_duplicate_state,
	.atomic_destroy_state = dm_drm_plane_destroy_state,
+1 −1
Original line number Diff line number Diff line
@@ -288,7 +288,7 @@ struct drm_plane_state *armada_plane_duplicate_state(struct drm_plane *plane)
static const struct drm_plane_funcs armada_primary_plane_funcs = {
	.update_plane	= drm_atomic_helper_update_plane,
	.disable_plane	= drm_atomic_helper_disable_plane,
	.destroy	= drm_primary_helper_destroy,
	.destroy	= drm_plane_helper_destroy,
	.reset		= armada_plane_reset,
	.atomic_duplicate_state = armada_plane_duplicate_state,
	.atomic_destroy_state = drm_atomic_helper_plane_destroy_state,
+7 −1
Original line number Diff line number Diff line
@@ -108,6 +108,12 @@ static const uint32_t safe_modeset_formats[] = {
	DRM_FORMAT_ARGB8888,
};

static const struct drm_plane_funcs primary_plane_funcs = {
	.update_plane = drm_plane_helper_update_primary,
	.disable_plane = drm_plane_helper_disable_primary,
	.destroy = drm_plane_helper_destroy,
};

static struct drm_plane *create_primary_plane(struct drm_device *dev)
{
	struct drm_plane *primary;
@@ -127,7 +133,7 @@ static struct drm_plane *create_primary_plane(struct drm_device *dev)

	/* possible_crtc's will be filled in later by crtc_init */
	ret = drm_universal_plane_init(dev, primary, 0,
				       &drm_primary_helper_funcs,
				       &primary_plane_funcs,
				       safe_modeset_formats,
				       ARRAY_SIZE(safe_modeset_formats),
				       NULL,
+51 −19
Original line number Diff line number Diff line
@@ -145,7 +145,30 @@ static int drm_plane_helper_check_update(struct drm_plane *plane,
	return 0;
}

static int drm_primary_helper_update(struct drm_plane *plane, struct drm_crtc *crtc,
/**
 * drm_plane_helper_update_primary - Helper for updating primary planes
 * @plane: plane to update
 * @crtc: the plane's new CRTC
 * @fb: the plane's new framebuffer
 * @crtc_x: x coordinate within CRTC
 * @crtc_y: y coordinate within CRTC
 * @crtc_w: width coordinate within CRTC
 * @crtc_h: height coordinate within CRTC
 * @src_x: x coordinate within source
 * @src_y: y coordinate within source
 * @src_w: width coordinate within source
 * @src_h: height coordinate within source
 * @ctx: modeset locking context
 *
 * This helper validates the given parameters and updates the primary plane.
 *
 * This function is only useful for non-atomic modesetting. Don't use
 * it in new drivers.
 *
 * Returns:
 * Zero on success, or an errno code otherwise.
 */
int drm_plane_helper_update_primary(struct drm_plane *plane, struct drm_crtc *crtc,
				    struct drm_framebuffer *fb,
				    int crtc_x, int crtc_y,
				    unsigned int crtc_w, unsigned int crtc_h,
@@ -218,31 +241,40 @@ static int drm_primary_helper_update(struct drm_plane *plane, struct drm_crtc *c
	kfree(connector_list);
	return ret;
}
EXPORT_SYMBOL(drm_plane_helper_update_primary);

static int drm_primary_helper_disable(struct drm_plane *plane,
/**
 * drm_plane_helper_disable_primary - Helper for disabling primary planes
 * @plane: plane to disable
 * @ctx: modeset locking context
 *
 * This helper returns an error when trying to disable the primary
 * plane.
 *
 * This function is only useful for non-atomic modesetting. Don't use
 * it in new drivers.
 *
 * Returns:
 * An errno code.
 */
int drm_plane_helper_disable_primary(struct drm_plane *plane,
				     struct drm_modeset_acquire_ctx *ctx)
{
	return -EINVAL;
}
EXPORT_SYMBOL(drm_plane_helper_disable_primary);

/**
 * drm_primary_helper_destroy() - Helper for primary plane destruction
 * drm_plane_helper_destroy() - Helper for primary plane destruction
 * @plane: plane to destroy
 *
 * Provides a default plane destroy handler for primary planes.  This handler
 * is called during CRTC destruction.  We disable the primary plane, remove
 * it from the DRM plane list, and deallocate the plane structure.
 */
void drm_primary_helper_destroy(struct drm_plane *plane)
void drm_plane_helper_destroy(struct drm_plane *plane)
{
	drm_plane_cleanup(plane);
	kfree(plane);
}
EXPORT_SYMBOL(drm_primary_helper_destroy);

const struct drm_plane_funcs drm_primary_helper_funcs = {
	.update_plane = drm_primary_helper_update,
	.disable_plane = drm_primary_helper_disable,
	.destroy = drm_primary_helper_destroy,
};
EXPORT_SYMBOL(drm_primary_helper_funcs);
EXPORT_SYMBOL(drm_plane_helper_destroy);
+7 −1
Original line number Diff line number Diff line
@@ -1275,6 +1275,12 @@ static const uint32_t modeset_formats[] = {
        DRM_FORMAT_XRGB1555,
};

static const struct drm_plane_funcs nv04_primary_plane_funcs = {
	.update_plane = drm_plane_helper_update_primary,
	.disable_plane = drm_plane_helper_disable_primary,
	.destroy = drm_plane_helper_destroy,
};

static struct drm_plane *
create_primary_plane(struct drm_device *dev)
{
@@ -1289,7 +1295,7 @@ create_primary_plane(struct drm_device *dev)

        /* possible_crtc's will be filled in later by crtc_init */
        ret = drm_universal_plane_init(dev, primary, 0,
                                       &drm_primary_helper_funcs,
				       &nv04_primary_plane_funcs,
                                       modeset_formats,
                                       ARRAY_SIZE(modeset_formats), NULL,
                                       DRM_PLANE_TYPE_PRIMARY, NULL);
Loading