Commit 6b6fce62 authored by Daniel Vetter's avatar Daniel Vetter

drm: Unexport primary plane helpers

Well except the destroy helper, which isn't really a primary helper
but generally useful, if mislabelled.

v2: Keep some of the nice comments about the limitations of the
primarmy plane helpers, and put them into the kerneldoc for
drm_crtc_init() (Sam).
Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Cc: Sam Ravnborg <sam@ravnborg.org>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20181005094732.31353-1-daniel.vetter@ffwll.ch
parent e6a3e405
...@@ -146,6 +146,21 @@ static struct drm_plane *create_primary_plane(struct drm_device *dev) ...@@ -146,6 +146,21 @@ static struct drm_plane *create_primary_plane(struct drm_device *dev)
* Initialize a CRTC object with a default helper-provided primary plane and no * Initialize a CRTC object with a default helper-provided primary plane and no
* cursor plane. * cursor plane.
* *
* Note that we make some assumptions about hardware limitations that may not be
* true for all hardware:
*
* 1. Primary plane cannot be repositioned.
* 2. Primary plane cannot be scaled.
* 3. Primary plane must cover the entire CRTC.
* 4. Subpixel positioning is not supported.
* 5. The primary plane must always be on if the CRTC is enabled.
*
* This is purely a backwards compatibility helper for old drivers. Drivers
* should instead implement their own primary plane. Atomic drivers must do so.
* Drivers with the above hardware restriction can look into using &struct
* drm_simple_display_pipe, which encapsulates the above limitations into a nice
* interface.
*
* Returns: * Returns:
* Zero on success, error code on failure. * Zero on success, error code on failure.
*/ */
......
...@@ -42,11 +42,8 @@ ...@@ -42,11 +42,8 @@
* primary plane support on top of the normal CRTC configuration interface. * primary plane support on top of the normal CRTC configuration interface.
* Since the legacy &drm_mode_config_funcs.set_config interface ties the primary * Since the legacy &drm_mode_config_funcs.set_config interface ties the primary
* plane together with the CRTC state this does not allow userspace to disable * plane together with the CRTC state this does not allow userspace to disable
* the primary plane itself. To avoid too much duplicated code use * the primary plane itself. The default primary plane only expose XRBG8888 and
* drm_plane_helper_check_update() which can be used to enforce the same * ARGB8888 as valid pixel formats for the attached framebuffer.
* restrictions as primary planes had thus. The default primary plane only
* expose XRBG8888 and ARGB8888 as valid pixel formats for the attached
* framebuffer.
* *
* Drivers are highly recommended to implement proper support for primary * Drivers are highly recommended to implement proper support for primary
* planes, and newly merged drivers must not rely upon these transitional * planes, and newly merged drivers must not rely upon these transitional
...@@ -175,50 +172,13 @@ int drm_plane_helper_check_update(struct drm_plane *plane, ...@@ -175,50 +172,13 @@ int drm_plane_helper_check_update(struct drm_plane *plane,
} }
EXPORT_SYMBOL(drm_plane_helper_check_update); EXPORT_SYMBOL(drm_plane_helper_check_update);
/** static int drm_primary_helper_update(struct drm_plane *plane, struct drm_crtc *crtc,
* drm_primary_helper_update() - Helper for primary plane update struct drm_framebuffer *fb,
* @plane: plane object to update int crtc_x, int crtc_y,
* @crtc: owning CRTC of owning plane unsigned int crtc_w, unsigned int crtc_h,
* @fb: framebuffer to flip onto plane uint32_t src_x, uint32_t src_y,
* @crtc_x: x offset of primary plane on crtc uint32_t src_w, uint32_t src_h,
* @crtc_y: y offset of primary plane on crtc struct drm_modeset_acquire_ctx *ctx)
* @crtc_w: width of primary plane rectangle on crtc
* @crtc_h: height of primary plane rectangle on crtc
* @src_x: x offset of @fb for panning
* @src_y: y offset of @fb for panning
* @src_w: width of source rectangle in @fb
* @src_h: height of source rectangle in @fb
* @ctx: lock acquire context, not used here
*
* Provides a default plane update handler for primary planes. This is handler
* is called in response to a userspace SetPlane operation on the plane with a
* non-NULL framebuffer. We call the driver's modeset handler to update the
* framebuffer.
*
* SetPlane() on a primary plane of a disabled CRTC is not supported, and will
* return an error.
*
* Note that we make some assumptions about hardware limitations that may not be
* true for all hardware --
*
* 1. Primary plane cannot be repositioned.
* 2. Primary plane cannot be scaled.
* 3. Primary plane must cover the entire CRTC.
* 4. Subpixel positioning is not supported.
*
* Drivers for hardware that don't have these restrictions can provide their
* own implementation rather than using this helper.
*
* RETURNS:
* Zero on success, error code on failure
*/
int drm_primary_helper_update(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,
uint32_t src_x, uint32_t src_y,
uint32_t src_w, uint32_t src_h,
struct drm_modeset_acquire_ctx *ctx)
{ {
struct drm_mode_set set = { struct drm_mode_set set = {
.crtc = crtc, .crtc = crtc,
...@@ -285,35 +245,12 @@ int drm_primary_helper_update(struct drm_plane *plane, struct drm_crtc *crtc, ...@@ -285,35 +245,12 @@ int drm_primary_helper_update(struct drm_plane *plane, struct drm_crtc *crtc,
kfree(connector_list); kfree(connector_list);
return ret; return ret;
} }
EXPORT_SYMBOL(drm_primary_helper_update);
/** static int drm_primary_helper_disable(struct drm_plane *plane,
* drm_primary_helper_disable() - Helper for primary plane disable struct drm_modeset_acquire_ctx *ctx)
* @plane: plane to disable
* @ctx: lock acquire context, not used here
*
* Provides a default plane disable handler for primary planes. This is handler
* is called in response to a userspace SetPlane operation on the plane with a
* NULL framebuffer parameter. It unconditionally fails the disable call with
* -EINVAL the only way to disable the primary plane without driver support is
* to disable the entire CRTC. Which does not match the plane
* &drm_plane_funcs.disable_plane hook.
*
* Note that some hardware may be able to disable the primary plane without
* disabling the whole CRTC. Drivers for such hardware should provide their
* own disable handler that disables just the primary plane (and they'll likely
* need to provide their own update handler as well to properly re-enable a
* disabled primary plane).
*
* RETURNS:
* Unconditionally returns -EINVAL.
*/
int drm_primary_helper_disable(struct drm_plane *plane,
struct drm_modeset_acquire_ctx *ctx)
{ {
return -EINVAL; return -EINVAL;
} }
EXPORT_SYMBOL(drm_primary_helper_disable);
/** /**
* drm_primary_helper_destroy() - Helper for primary plane destruction * drm_primary_helper_destroy() - Helper for primary plane destruction
......
...@@ -49,16 +49,6 @@ int drm_plane_helper_check_update(struct drm_plane *plane, ...@@ -49,16 +49,6 @@ int drm_plane_helper_check_update(struct drm_plane *plane,
bool can_position, bool can_position,
bool can_update_disabled, bool can_update_disabled,
bool *visible); bool *visible);
int drm_primary_helper_update(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,
uint32_t src_x, uint32_t src_y,
uint32_t src_w, uint32_t src_h,
struct drm_modeset_acquire_ctx *ctx);
int drm_primary_helper_disable(struct drm_plane *plane,
struct drm_modeset_acquire_ctx *ctx);
void drm_primary_helper_destroy(struct drm_plane *plane); void drm_primary_helper_destroy(struct drm_plane *plane);
extern const struct drm_plane_funcs drm_primary_helper_funcs; extern const struct drm_plane_funcs drm_primary_helper_funcs;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment