diff --git a/msm/sde/sde_hw_catalog.c b/msm/sde/sde_hw_catalog.c index 6fbebd0051..5a788c9988 100644 --- a/msm/sde/sde_hw_catalog.c +++ b/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; } diff --git a/msm/sde/sde_hw_catalog.h b/msm/sde/sde_hw_catalog.h index 33f2e49d90..f8ed130857 100644 --- a/msm/sde/sde_hw_catalog.h +++ b/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; }; diff --git a/msm/sde/sde_kms.c b/msm/sde/sde_kms.c index b335f9ab0c..c7ee914c73 100644 --- a/msm/sde/sde_kms.c +++ b/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); } }