浏览代码

disp: msm: sde: register io resource collection VM event hook

Add support to read register ranges and IRQ lines that needs
isolation during VM switch. Register for vm resource collection
event providing the callback function.

Change-Id: Ie1edf0794a8de89cc44279892433b45a54eba609
Signed-off-by: Jeykumar Sankaran <[email protected]>
Jeykumar Sankaran 5 年之前
父节点
当前提交
c3389d315c
共有 2 个文件被更改,包括 29 次插入0 次删除
  1. 21 0
      msm/sde/sde_kms.c
  2. 8 0
      msm/sde/sde_kms.h

+ 21 - 0
msm/sde/sde_kms.c

@@ -52,6 +52,7 @@
 #include <linux/qcom_scm.h>
 #include "soc/qcom/secure_buffer.h"
 #include <linux/qtee_shmbridge.h>
+#include <linux/haven/hh_irq_lend.h>
 
 #define CREATE_TRACE_POINTS
 #include "sde_trace.h"
@@ -3572,6 +3573,26 @@ power_error:
 	return rc;
 }
 
+int sde_kms_get_io_resources(struct sde_kms *sde_kms, struct msm_io_res *io_res)
+{
+	struct platform_device *pdev = to_platform_device(sde_kms->dev->dev);
+	int rc = 0;
+
+	rc = msm_dss_get_io_mem(pdev, &io_res->mem);
+	if (rc) {
+		SDE_ERROR("failed to get io mem for KMS, rc = %d\n", rc);
+		return rc;
+	}
+
+	rc = msm_dss_get_io_irq(pdev, &io_res->irq, HH_IRQ_LABEL_SDE);
+	if (rc) {
+		SDE_ERROR("failed to get io irq for KMS");
+		return rc;
+	}
+
+	return rc;
+}
+
 static int sde_kms_hw_init(struct msm_kms *kms)
 {
 	struct sde_kms *sde_kms;

+ 8 - 0
msm/sde/sde_kms.h

@@ -690,4 +690,12 @@ int sde_kms_handle_recovery(struct drm_encoder *encoder);
  */
 void sde_kms_irq_enable_notify(struct sde_kms *sde_kms, bool enable);
 
+/**
+ * sde_kms_get_io_resources() - reads associated register range
+ * @kms: pointer to sde_kms structure
+ * @io_res: pointer to msm_io_res struct to populate the ranges
+ * Return: error code.
+ */
+int sde_kms_get_io_resources(struct sde_kms *kms, struct msm_io_res *io_res);
+
 #endif /* __sde_kms_H__ */