Procházet zdrojové kódy

Merge "disp: msm: sde: add mmrm validation check"

qctecmdr před 1 rokem
rodič
revize
cfc5bbb3fd
1 změnil soubory, kde provedl 8 přidání a 4 odebrání
  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;