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

Commit 4194c7b7 authored by Yashwanth's avatar Yashwanth Committed by santosh
Browse files

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: default avatarYashwanth <yvulapu@codeaurora.org>
parent bada02f3
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -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
Original line number Diff line number Diff line
@@ -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
Original line number Diff line number Diff line
@@ -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);
	}
}