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 <yvulapu@codeaurora.org>
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
@@ -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;
|
||||
};
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user