|
@@ -35,6 +35,7 @@
|
|
|
#include <drm/drm_fb_helper.h>
|
|
|
#include <drm/drm_dp_mst_helper.h>
|
|
|
#include <drm/drm_rect.h>
|
|
|
+#include <drm/drm_atomic.h>
|
|
|
|
|
|
#define DIV_ROUND_CLOSEST_ULL(ll, d) \
|
|
|
({ unsigned long long _tmp = (ll)+(d)/2; do_div(_tmp, d); _tmp; })
|
|
@@ -562,6 +563,7 @@ struct cxsr_latency {
|
|
|
};
|
|
|
|
|
|
#define to_intel_crtc(x) container_of(x, struct intel_crtc, base)
|
|
|
+#define to_intel_crtc_state(x) container_of(x, struct intel_crtc_state, base)
|
|
|
#define to_intel_connector(x) container_of(x, struct intel_connector, base)
|
|
|
#define to_intel_encoder(x) container_of(x, struct intel_encoder, base)
|
|
|
#define to_intel_framebuffer(x) container_of(x, struct intel_framebuffer, base)
|
|
@@ -1303,6 +1305,17 @@ int intel_connector_atomic_get_property(struct drm_connector *connector,
|
|
|
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);
|
|
|
+static inline struct intel_crtc_state *
|
|
|
+intel_atomic_get_crtc_state(struct drm_atomic_state *state,
|
|
|
+ struct intel_crtc *crtc)
|
|
|
+{
|
|
|
+ struct drm_crtc_state *crtc_state;
|
|
|
+ crtc_state = drm_atomic_get_crtc_state(state, &crtc->base);
|
|
|
+ if (IS_ERR(crtc_state))
|
|
|
+ return ERR_PTR(PTR_ERR(crtc_state));
|
|
|
+
|
|
|
+ return to_intel_crtc_state(crtc_state);
|
|
|
+}
|
|
|
|
|
|
/* intel_atomic_plane.c */
|
|
|
struct intel_plane_state *intel_create_plane_state(struct drm_plane *plane);
|