Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1356837e authored by Matt Roper's avatar Matt Roper Committed by Daniel Vetter
Browse files

drm/i915: Add crtc state duplication/destruction functions



The atomic helpers need these to prepare a new state object when
starting a new atomic operation.

Signed-off-by: default avatarMatt Roper <matthew.d.roper@intel.com>
Reviewed-by: default avatarAnder Conselvan de Oliveira <conselvan2@gmail.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent 2545e4a6
Loading
Loading
Loading
Loading
+35 −0
Original line number Diff line number Diff line
@@ -200,3 +200,38 @@ intel_connector_atomic_get_property(struct drm_connector *connector,

	return -EINVAL;
}

/*
 * intel_crtc_duplicate_state - duplicate crtc state
 * @crtc: drm crtc
 *
 * Allocates and returns a copy of the crtc state (both common and
 * Intel-specific) for the specified crtc.
 *
 * Returns: The newly allocated crtc state, or NULL on failure.
 */
struct drm_crtc_state *
intel_crtc_duplicate_state(struct drm_crtc *crtc)
{
	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);

	if (WARN_ON(!intel_crtc->config))
		return kzalloc(sizeof(*intel_crtc->config), GFP_KERNEL);

	return kmemdup(intel_crtc->config, sizeof(*intel_crtc->config),
		       GFP_KERNEL);
}

/**
 * intel_crtc_destroy_state - destroy crtc state
 * @crtc: drm crtc
 *
 * Destroys the crtc state (both common and Intel-specific) for the
 * specified crtc.
 */
void
intel_crtc_destroy_state(struct drm_crtc *crtc,
			  struct drm_crtc_state *state)
{
	drm_atomic_helper_crtc_destroy_state(crtc, state);
}
+2 −0
Original line number Diff line number Diff line
@@ -11652,6 +11652,8 @@ static const struct drm_crtc_funcs intel_crtc_funcs = {
	.set_config = intel_crtc_set_config,
	.destroy = intel_crtc_destroy,
	.page_flip = intel_crtc_page_flip,
	.atomic_duplicate_state = intel_crtc_duplicate_state,
	.atomic_destroy_state = intel_crtc_destroy_state,
};

static bool ibx_pch_dpll_get_hw_state(struct drm_i915_private *dev_priv,
+3 −0
Original line number Diff line number Diff line
@@ -1258,6 +1258,9 @@ int intel_connector_atomic_get_property(struct drm_connector *connector,
					const struct drm_connector_state *state,
					struct drm_property *property,
					uint64_t *val);
struct drm_crtc_state *intel_crtc_duplicate_state(struct drm_crtc *crtc);
void intel_crtc_destroy_state(struct drm_crtc *crtc,
			       struct drm_crtc_state *state);

/* intel_atomic_plane.c */
struct intel_plane_state *intel_create_plane_state(struct drm_plane *plane);