Loading msm/sde/sde_hw_catalog.c +7 −0 Original line number Diff line number Diff line Loading @@ -223,6 +223,7 @@ enum { PERF_CDP_SETTING, PERF_CPU_MASK, PERF_CPU_DMA_LATENCY, PERF_CPU_IRQ_LATENCY, PERF_PROP_MAX, }; Loading Loading @@ -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[] = { Loading Loading @@ -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; } Loading msm/sde/sde_hw_catalog.h +2 −0 Original line number Diff line number Diff line Loading @@ -1142,6 +1142,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 */ Loading Loading @@ -1172,6 +1173,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; }; Loading msm/sde/sde_kms.c +4 −2 Original line number Diff line number Diff line Loading @@ -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); } } Loading Loading
msm/sde/sde_hw_catalog.c +7 −0 Original line number Diff line number Diff line Loading @@ -223,6 +223,7 @@ enum { PERF_CDP_SETTING, PERF_CPU_MASK, PERF_CPU_DMA_LATENCY, PERF_CPU_IRQ_LATENCY, PERF_PROP_MAX, }; Loading Loading @@ -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[] = { Loading Loading @@ -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; } Loading
msm/sde/sde_hw_catalog.h +2 −0 Original line number Diff line number Diff line Loading @@ -1142,6 +1142,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 */ Loading Loading @@ -1172,6 +1173,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; }; Loading
msm/sde/sde_kms.c +4 −2 Original line number Diff line number Diff line Loading @@ -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); } } Loading