drm/msm/sde: sde hw interrupt handling

Existing SDE HW interrupt was based on mdp/kms and is not
sufficient for supporting the SDE HW interrupt manipulation.
Changes are for enabling full SDE interrupt support and hiding
HAL interface implementation details from crtc/encoder.

Change-Id: I917a153d12bbb6b84758591ba69fe15181af7791
Signed-off-by: Ben Chan <bkchan@codeaurora.org>
diff --git a/drivers/gpu/drm/msm/sde/sde_plane.c b/drivers/gpu/drm/msm/sde/sde_plane.c
index 09db61b..993df81 100644
--- a/drivers/gpu/drm/msm/sde/sde_plane.c
+++ b/drivers/gpu/drm/msm/sde/sde_plane.c
@@ -676,7 +676,16 @@
 	enum drm_plane_type type;
 
 	priv = dev->dev_private;
-	kms = to_sde_kms(to_mdp_kms(priv->kms));
+	if (!priv) {
+		DRM_ERROR("[%u]Private data is NULL\n", pipe);
+		goto exit;
+	}
+
+	if (!priv->kms) {
+		DRM_ERROR("[%u]Invalid KMS reference\n", pipe);
+		goto exit;
+	}
+	kms = to_sde_kms(priv->kms);
 
 	psde = kzalloc(sizeof(*psde), GFP_KERNEL);
 	if (!psde) {
@@ -739,6 +748,6 @@
 	pr_err("%s: Plane creation failed\n", __func__);
 	if (plane)
 		sde_plane_destroy(plane);
-
+exit:
 	return ERR_PTR(ret);
 }