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>
Dieser Commit ist enthalten in:
Yashwanth
2020-03-17 19:12:21 +05:30
committet von santosh
Ursprung bada02f317
Commit 4194c7b7cd
3 geänderte Dateien mit 12 neuen und 2 gelöschten Zeilen

Datei anzeigen

@@ -228,6 +228,7 @@ enum {
PERF_CPU_MASK, PERF_CPU_MASK,
CPU_MASK_PERF, CPU_MASK_PERF,
PERF_CPU_DMA_LATENCY, PERF_CPU_DMA_LATENCY,
PERF_CPU_IRQ_LATENCY,
PERF_PROP_MAX, PERF_PROP_MAX,
}; };
@@ -607,6 +608,8 @@ static struct sde_prop_type sde_perf_prop[] = {
PROP_TYPE_U32}, PROP_TYPE_U32},
{PERF_CPU_DMA_LATENCY, "qcom,sde-qos-cpu-dma-latency", false, {PERF_CPU_DMA_LATENCY, "qcom,sde-qos-cpu-dma-latency", false,
PROP_TYPE_U32}, 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[] = { 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_exists[PERF_CPU_DMA_LATENCY] ?
PROP_VALUE_ACCESS(prop_value, PERF_CPU_DMA_LATENCY, 0) : PROP_VALUE_ACCESS(prop_value, PERF_CPU_DMA_LATENCY, 0) :
DEFAULT_CPU_DMA_LATENCY; 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; return 0;
} }

Datei anzeigen

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

Datei anzeigen

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