Răsfoiți Sursa

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 <[email protected]>
Akash Gajjar 1 an în urmă
părinte
comite
fb96b867ed
1 a modificat fișierele cu 8 adăugiri și 4 ștergeri
  1. 8 4
      msm/sde_power_handle.c

+ 8 - 4
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 <linux/sde_io_util.h>
 #include <linux/sde_rsc.h>
+#include <linux/soc/qcom/msm_mmrm.h>
 
 #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 : "<unknown>");
 
 		clock_max_rate = 0;