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

Commit 5e04c0af authored by Yashwanth's avatar Yashwanth
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 5c49ac43
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -223,6 +223,7 @@ enum {
	PERF_CDP_SETTING,
	PERF_CPU_MASK,
	PERF_CPU_DMA_LATENCY,
	PERF_CPU_IRQ_LATENCY,
	PERF_PROP_MAX,
};

@@ -546,6 +547,8 @@ static struct sde_prop_type sde_perf_prop[] = {
	{PERF_CPU_MASK, "qcom,sde-qos-cpu-mask", false, 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[] = {
@@ -3836,6 +3839,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
@@ -1140,6 +1140,7 @@ struct sde_sc_cfg {
 * @cdp_cfg            cdp use case configurations
 * @cpu_mask:          pm_qos cpu 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
 */
@@ -1170,6 +1171,7 @@ struct sde_perf_cfg {
	struct sde_perf_cdp_cfg cdp_cfg[SDE_PERF_CDP_USAGE_MAX];
	u32 cpu_mask;
	u32 cpu_dma_latency;
	u32 cpu_irq_latency;
	u32 axi_bus_width;
	u32 num_mnoc_ports;
};
+4 −2
Original line number Diff line number Diff line
@@ -3157,19 +3157,21 @@ static void _sde_kms_set_lutdma_vbif_remap(struct sde_kms *sde_kms)
static void sde_kms_update_pm_qos_irq_request(struct sde_kms *sde_kms)
{
	struct pm_qos_request *req;
	u32 cpu_irq_latency;

	req = &sde_kms->pm_qos_irq_req;
	req->type = PM_QOS_REQ_AFFINE_CORES;
	req->cpus_affine = sde_kms->irq_cpu_mask;
	cpu_irq_latency = sde_kms->catalog->perf.cpu_irq_latency;

	if (pm_qos_request_active(req))
		pm_qos_update_request(req, SDE_KMS_PM_QOS_CPU_DMA_LATENCY);
		pm_qos_update_request(req, cpu_irq_latency);
	else if (!cpumask_empty(&req->cpus_affine)) {
		/** If request is not active yet and mask is not empty
		 *  then it needs to be added initially
		 */
		pm_qos_add_request(req, PM_QOS_CPU_DMA_LATENCY,
					SDE_KMS_PM_QOS_CPU_DMA_LATENCY);
					cpu_irq_latency);
	}
}