From fb96b867ed78e2208af370af2bc5cf5e9bb35256 Mon Sep 17 00:00:00 2001 From: Akash Gajjar Date: Fri, 27 Oct 2023 23:00:24 +0530 Subject: [PATCH] disp: msm: sde: add mmrm validation check DPU driver registers core clock with MMRM driver for clock mitigation policy. In the event that MMRM driver is not enabled then mark dpu driver clock as non MMRM type. Change-Id: Id4dd4a512c81ba54514171867852531f00604a66 Signed-off-by: Akash Gajjar --- msm/sde_power_handle.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/msm/sde_power_handle.c b/msm/sde_power_handle.c index 61473e07d5..a5f7fa844c 100644 --- a/msm/sde_power_handle.c +++ b/msm/sde_power_handle.c @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2014-2021, The Linux Foundation. All rights reserved. - * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. */ #define pr_fmt(fmt) "[drm:%s:%d]: " fmt, __func__, __LINE__ @@ -17,6 +17,7 @@ #include #include +#include #include "sde_power_handle.h" #include "sde_trace.h" @@ -242,6 +243,7 @@ static int sde_power_parse_dt_clock(struct platform_device *pdev, u32 clock_mmrm = 0; u32 clock_max_rate = 0; int num_clk = 0; + bool is_mmrm_supported = false; if (!pdev || !mp) { pr_err("invalid input param pdev:%pK mp:%pK\n", pdev, mp); @@ -264,6 +266,8 @@ static int sde_power_parse_dt_clock(struct platform_device *pdev, mp->num_clk = 0; goto clk_err; } + is_mmrm_supported = mmrm_client_check_scaling_supported(MMRM_CLIENT_CLOCK, + MMRM_CLIENT_DOMAIN_DISPLAY); for (i = 0; i < num_clk; i++) { of_property_read_string_index(pdev->dev.of_node, "clock-names", @@ -283,12 +287,12 @@ static int sde_power_parse_dt_clock(struct platform_device *pdev, clock_mmrm = 0; of_property_read_u32_index(pdev->dev.of_node, "clock-mmrm", i, &clock_mmrm); - if (clock_mmrm) { + if (clock_mmrm && is_mmrm_supported) { mp->clk_config[i].type = DSS_CLK_MMRM; mp->clk_config[i].mmrm.clk_id = clock_mmrm; } - pr_debug("clk[%d] mmrm:%d rate:%d name:%s dev:%s\n", - i, clock_mmrm, clock_rate, clock_name, + pr_debug("clk[%d] clock-mmrm:%d mmrm status:%d rate:%d name:%s dev:%s\n", + i, clock_mmrm, is_mmrm_supported, clock_rate, clock_name, pdev->name ? pdev->name : ""); clock_max_rate = 0;