Эх сурвалжийг харах

disp: msm: sde: add dt based support for pm qos irq latency

This change adds dt based support for pm qos irq
latency instead of using hardcoded value.

Change-Id: I9f67ed1092eefac193a409773f841350532bc722
Signed-off-by: Yashwanth <[email protected]>
Yashwanth 5 жил өмнө
parent
commit
4194c7b7cd

+ 7 - 0
msm/sde/sde_hw_catalog.c

@@ -228,6 +228,7 @@ enum {
 	PERF_CPU_MASK,
 	CPU_MASK_PERF,
 	PERF_CPU_DMA_LATENCY,
+	PERF_CPU_IRQ_LATENCY,
 	PERF_PROP_MAX,
 };
 
@@ -607,6 +608,8 @@ static struct sde_prop_type sde_perf_prop[] = {
 			PROP_TYPE_U32},
 	{PERF_CPU_DMA_LATENCY, "qcom,sde-qos-cpu-dma-latency", false,
 			PROP_TYPE_U32},
+	{PERF_CPU_IRQ_LATENCY, "qcom,sde-qos-cpu-irq-latency", false,
+			PROP_TYPE_U32},
 };
 
 static struct sde_prop_type sde_qos_prop[] = {
@@ -4162,6 +4165,10 @@ static int _sde_perf_parse_dt_cfg(struct device_node *np,
 			prop_exists[PERF_CPU_DMA_LATENCY] ?
 			PROP_VALUE_ACCESS(prop_value, PERF_CPU_DMA_LATENCY, 0) :
 			DEFAULT_CPU_DMA_LATENCY;
+	cfg->perf.cpu_irq_latency =
+			prop_exists[PERF_CPU_IRQ_LATENCY] ?
+			PROP_VALUE_ACCESS(prop_value, PERF_CPU_IRQ_LATENCY, 0) :
+			PM_QOS_DEFAULT_VALUE;
 
 	return 0;
 }

+ 2 - 0
msm/sde/sde_hw_catalog.h

@@ -1317,6 +1317,7 @@ struct sde_sc_cfg {
  * @cpu_mask:          pm_qos cpu mask value
  * @cpu_mask_perf:     pm_qos cpu silver core mask value
  * @cpu_dma_latency:   pm_qos cpu dma latency value
+ * @cpu_irq_latency:   pm_qos cpu irq latency value
  * @axi_bus_width:     axi bus width value in bytes
  * @num_mnoc_ports:    number of mnoc ports
  */
@@ -1348,6 +1349,7 @@ struct sde_perf_cfg {
 	unsigned long cpu_mask;
 	unsigned long cpu_mask_perf;
 	u32 cpu_dma_latency;
+	u32 cpu_irq_latency;
 	u32 axi_bus_width;
 	u32 num_mnoc_ports;
 };

+ 3 - 2
msm/sde/sde_kms.c

@@ -3008,6 +3008,7 @@ static void _sde_kms_update_pm_qos_irq_request(struct sde_kms *sde_kms)
 {
 	struct device *cpu_dev;
 	int cpu = 0;
+	u32 cpu_irq_latency = sde_kms->catalog->perf.cpu_irq_latency;
 
 	if (cpumask_empty(&sde_kms->irq_cpu_mask)) {
 		SDE_DEBUG("%s: irq_cpu_mask is empty\n", __func__);
@@ -3024,12 +3025,12 @@ static void _sde_kms_update_pm_qos_irq_request(struct sde_kms *sde_kms)
 
 		if (dev_pm_qos_request_active(&sde_kms->pm_qos_irq_req[cpu]))
 			dev_pm_qos_update_request(&sde_kms->pm_qos_irq_req[cpu],
-					sde_kms->catalog->perf.cpu_dma_latency);
+					cpu_irq_latency);
 		else
 			dev_pm_qos_add_request(cpu_dev,
 				&sde_kms->pm_qos_irq_req[cpu],
 				DEV_PM_QOS_RESUME_LATENCY,
-				sde_kms->catalog->perf.cpu_dma_latency);
+				cpu_irq_latency);
 	}
 }