瀏覽代碼

msm_mmrm: Add support of power prints

In order to improve debugging of mmrm
issues, add support of MMRM power print and
remove some unnecessary logging or decrease
priority to low.

Signed-off-by: Mahesh Kumar Sharma <[email protected]>
Mahesh Kumar Sharma 4 年之前
父節點
當前提交
bb30cd0803
共有 4 個文件被更改,包括 24 次插入64 次删除
  1. 7 26
      driver/src/mmrm_clk_rsrc_mgr_sw.c
  2. 1 6
      driver/src/mmrm_debug.c
  3. 4 0
      driver/src/mmrm_debug.h
  4. 12 32
      driver/src/msm_mmrm.c

+ 7 - 26
driver/src/mmrm_clk_rsrc_mgr_sw.c

@@ -92,7 +92,7 @@ static void mmrm_sw_print_client_data(struct mmrm_sw_clk_mgr_info *sinfo,
 	u32 i, j;
 
 	for (i = 0; i < MMRM_VDD_LEVEL_MAX; i++) {
-		d_mpr_h("%s: csid(0x%x) corner(%s) dyn_pwr(%zu) leak_pwr(%zu) \n",
+		d_mpr_p("%s: csid(0x%x) corner(%s) dyn_pwr(%zu) leak_pwr(%zu)\n",
 				__func__,
 				tbl_entry->clk_src_id,
 				cset->corner_tbl[i].name,
@@ -100,7 +100,7 @@ static void mmrm_sw_print_client_data(struct mmrm_sw_clk_mgr_info *sinfo,
 				tbl_entry->leak_pwr[i]);
 
 		for (j = 0; j < MMRM_VDD_LEVEL_MAX; j++) {
-			d_mpr_h("%s: csid(0x%x) total_pwr(%zu) cur_ma(%zu)\n",
+			d_mpr_p("%s: csid(0x%x) total_pwr(%zu) cur_ma(%zu)\n",
 				__func__,
 				tbl_entry->clk_src_id,
 				(tbl_entry->dyn_pwr[i] + tbl_entry->leak_pwr[i]),
@@ -190,8 +190,6 @@ static struct mmrm_client *mmrm_sw_clk_client_register(
 	u32 c = 0;
 	u32 clk_client_src_id = 0;
 
-	d_mpr_h("%s: entering\n", __func__);
-
 	mutex_lock(&sw_clk_mgr->lock);
 
 	/* check if entry is free in table */
@@ -286,7 +284,6 @@ static struct mmrm_client *mmrm_sw_clk_client_register(
 
 exit_found:
 	mutex_unlock(&sw_clk_mgr->lock);
-	d_mpr_h("%s: exiting with success\n", __func__);
 	return clk_client;
 
 err_fail_update_entry:
@@ -302,7 +299,7 @@ err_nofree_entry:
 err_already_registered:
 	mutex_unlock(&sw_clk_mgr->lock);
 
-	d_mpr_h("%s: error exit\n", __func__);
+	d_mpr_e("%s: error = %d\n", __func__, rc);
 	return NULL;
 }
 
@@ -313,8 +310,6 @@ static int mmrm_sw_clk_client_deregister(struct mmrm_clk_mgr *sw_clk_mgr,
 	struct mmrm_sw_clk_client_tbl_entry *tbl_entry;
 	struct mmrm_sw_clk_mgr_info *sinfo = &(sw_clk_mgr->data.sw_info);
 
-	d_mpr_h("%s: entering\n", __func__);
-
 	/* validate the client ptr */
 	if (!client) {
 		d_mpr_e("%s: invalid client\n");
@@ -350,11 +345,10 @@ static int mmrm_sw_clk_client_deregister(struct mmrm_clk_mgr *sw_clk_mgr,
 
 	mutex_unlock(&sw_clk_mgr->lock);
 
-	d_mpr_h("%s: exiting with success\n", __func__);
 	return rc;
 
 err_invalid_client:
-	d_mpr_h("%s: error exit\n", __func__);
+	d_mpr_e("%s: error = %d\n", __func__, rc);
 	return rc;
 }
 
@@ -508,7 +502,6 @@ static int mmrm_sw_throttle_low_priority_client(
 	u32 now_cur_ma, min_cur_ma;
 	long clk_min_level = MMRM_VDD_LEVEL_LOW_SVS;
 
-	d_mpr_h("%s: entering\n", __func__);
 	init_completion(&timeout);
 
 	for (i = 0; i < sinfo->throttle_clients_data_length ; i++) {
@@ -585,7 +578,6 @@ static int mmrm_sw_throttle_low_priority_client(
 
 		/* Clearing the reserve flag */
 		tbl_entry_throttle_client->reserve = tbl_entry_throttle_client->reserve & 0;
-		d_mpr_h("%s: exiting\n", __func__);
 	}
 err_clk_set_fail:
 	return rc;
@@ -803,7 +795,7 @@ err_invalid_client_data:
 err_invalid_clk_val:
 err_peak_overshoot:
 err_clk_set_fail:
-	d_mpr_h("%s: error exit\n", __func__);
+	d_mpr_e("%s: error = %d\n", __func__, rc);
 	return rc;
 }
 
@@ -812,8 +804,6 @@ static int mmrm_sw_clk_client_setval_inrange(struct mmrm_clk_mgr *sw_clk_mgr,
 		struct mmrm_client_data *client_data,
 		struct mmrm_client_res_value *val)
 {
-	d_mpr_h("%s: entering\n", __func__);
-
 	/* TBD: add support for set val in range */
 	return mmrm_sw_clk_client_setval(sw_clk_mgr, client, client_data,
 		val->cur);
@@ -827,8 +817,6 @@ static int mmrm_sw_clk_client_getval(struct mmrm_clk_mgr *sw_clk_mgr,
 	struct mmrm_sw_clk_client_tbl_entry *tbl_entry;
 	struct mmrm_sw_clk_mgr_info *sinfo = &(sw_clk_mgr->data.sw_info);
 
-	d_mpr_h("%s: entering\n", __func__);
-
 	/* validate input params */
 	if (!client) {
 		d_mpr_e("%s: invalid client\n");
@@ -856,11 +844,10 @@ static int mmrm_sw_clk_client_getval(struct mmrm_clk_mgr *sw_clk_mgr,
 	val->cur = tbl_entry->clk_rate;
 	val->max = tbl_entry->clk_rate;
 
-	d_mpr_h("%s: exiting with success\n", __func__);
 	return rc;
 
 err_invalid_client:
-	d_mpr_h("%s: error exit\n", __func__);
+	d_mpr_e("%s: error = %d\n", __func__, rc);
 	return rc;
 }
 
@@ -880,8 +867,6 @@ static int mmrm_sw_prepare_table(struct mmrm_clk_platform_resources *cres,
 	struct mmrm_sw_clk_client_tbl_entry *tbl_entry;
 	struct nom_clk_src_info *nom_tbl_entry;
 
-	d_mpr_h("%s: entering\n", __func__);
-
 	/* read all resource entries */
 	for (c = 0; c < sinfo->tot_clk_clients; c++) {
 		tbl_entry = &sinfo->clk_client_tbl[c];
@@ -901,7 +886,6 @@ static int mmrm_sw_prepare_table(struct mmrm_clk_platform_resources *cres,
 			tbl_entry->leak_pwr[MMRM_VDD_LEVEL_NOM]);
 	}
 
-	d_mpr_h("%s: exiting\n", __func__);
 	return rc;
 }
 
@@ -915,8 +899,6 @@ int mmrm_init_sw_clk_mgr(void *driver_data)
 	struct mmrm_clk_mgr *sw_clk_mgr = NULL;
 	u32 tbl_size = 0;
 
-	d_mpr_h("%s: entering\n", __func__);
-
 	/* mmrm_sw_clk_mgr */
 	sw_clk_mgr = kzalloc(sizeof(*sw_clk_mgr), GFP_KERNEL);
 	if (!sw_clk_mgr) {
@@ -976,7 +958,6 @@ int mmrm_init_sw_clk_mgr(void *driver_data)
 	sw_clk_mgr->clk_client_ops = &clk_client_swops;
 	drv_data->clk_mgr = sw_clk_mgr;
 
-	d_mpr_h("%s: exiting with success\n", __func__);
 	return rc;
 
 err_fail_prep_tbl:
@@ -985,7 +966,7 @@ err_fail_clk_tbl:
 	kfree(sw_clk_mgr);
 	drv_data->clk_mgr = NULL;
 err_fail_sw_clk_mgr:
-	d_mpr_h("%s: error exit\n", __func__);
+	d_mpr_e("%s: error = %d\n", __func__, rc);
 	return rc;
 }
 

+ 1 - 6
driver/src/mmrm_debug.c

@@ -46,8 +46,6 @@ struct dentry *msm_mmrm_debugfs_init(void)
 	struct dentry *dir;
 	int file_val;
 
-	d_mpr_h("%s: entering\n", __func__);
-
 	/* create a directory in debugfs root (/sys/kernel/debug) */
 	dir = debugfs_create_dir("msm_mmrm", NULL);
 	if (IS_ERR_OR_NULL(dir)) {
@@ -66,17 +64,14 @@ struct dentry *msm_mmrm_debugfs_init(void)
 	debugfs_create_u8("allow_multiple_register", 0644, dir, &msm_mmrm_allow_multiple_register);
 	debugfs_create_u8("enable_throttle_feature", 0644, dir, &msm_mmrm_enable_throttle_feature);
 
-	d_mpr_h("%s: exiting\n", __func__);
 	return dir;
 
 failed_create_dir:
-	d_mpr_h("%s: error exit\n", __func__);
+	d_mpr_e("%s: error\n", __func__);
 	return NULL;
 }
 
 void msm_mmrm_debugfs_deinit(struct dentry *dir)
 {
-	d_mpr_h("%s: entering\n", __func__);
 	debugfs_remove_recursive(dir);
-	d_mpr_h("%s: exiting\n", __func__);
 }

+ 4 - 0
driver/src/mmrm_debug.h

@@ -23,6 +23,7 @@ enum mmrm_msg_prio {
 	MMRM_HIGH = 0x000002,
 	MMRM_LOW = 0x000004,
 	MMRM_WARN = 0x000008,
+	MMRM_POWER = 0x000010,
 	MMRM_PRINTK = 0x010000,
 	MMRM_FTRACE = 0x020000,
 };
@@ -45,6 +46,7 @@ extern u8 msm_mmrm_allow_multiple_register;
 #define d_mpr_h(__fmt, ...) dprintk(MMRM_HIGH, __fmt, ##__VA_ARGS__)
 #define d_mpr_l(__fmt, ...) dprintk(MMRM_LOW, __fmt, ##__VA_ARGS__)
 #define d_mpr_w(__fmt, ...) dprintk(MMRM_WARN, __fmt, ##__VA_ARGS__)
+#define d_mpr_p(__fmt, ...) dprintk(MMRM_POWER, __fmt, ##__VA_ARGS__)
 
 static inline char *get_debug_level_str(int level)
 {
@@ -57,6 +59,8 @@ static inline char *get_debug_level_str(int level)
 		return "low ";
 	case MMRM_WARN:
 		return "warn";
+	case MMRM_POWER:
+		return "power";
 	default:
 		return "????";
 	}

+ 12 - 32
driver/src/msm_mmrm.c

@@ -35,7 +35,7 @@ struct mmrm_client *mmrm_client_register(struct mmrm_client_desc *client_desc)
 {
 	struct mmrm_client *client = NULL;
 
-	d_mpr_h("%s: entering\n", __func__);
+
 
 	/* check for null input */
 	if (!client_desc) {
@@ -62,7 +62,6 @@ struct mmrm_client *mmrm_client_register(struct mmrm_client_desc *client_desc)
 		goto err_exit;
 	}
 
-	d_mpr_h("%s: exiting\n", __func__);
 	return client;
 
 err_exit:
@@ -75,7 +74,6 @@ int mmrm_client_deregister(struct mmrm_client *client)
 {
 	int rc = 0;
 
-	d_mpr_h("%s: entering\n", __func__);
 
 	/* check for null input */
 	if (!client) {
@@ -101,11 +99,10 @@ int mmrm_client_deregister(struct mmrm_client *client)
 			__func__, client->client_type);
 	}
 
-	d_mpr_h("%s: exiting\n", __func__);
 	return rc;
 
 err_exit:
-	d_mpr_e("%s: error exit\n", __func__);
+	d_mpr_e("%s: error = %d\n", __func__, rc);
 	return rc;
 }
 EXPORT_SYMBOL(mmrm_client_deregister);
@@ -115,8 +112,6 @@ int mmrm_client_set_value(struct mmrm_client *client,
 {
 	int rc = 0;
 
-	d_mpr_h("%s: entering\n", __func__);
-
 	/* check for null input */
 	if (!client || !client_data) {
 		d_mpr_e("%s: invalid input client(%pK) client_data(%pK)\n",
@@ -143,11 +138,10 @@ int mmrm_client_set_value(struct mmrm_client *client,
 			__func__, client->client_type);
 	}
 
-	d_mpr_h("%s: exiting\n", __func__);
 	return rc;
 
 err_exit:
-	d_mpr_e("%s: error exit\n", __func__);
+	d_mpr_e("%s: error = %d\n", __func__, rc);
 	return rc;
 }
 EXPORT_SYMBOL(mmrm_client_set_value);
@@ -158,8 +152,6 @@ int mmrm_client_set_value_in_range(struct mmrm_client *client,
 {
 	int rc = 0;
 
-	d_mpr_h("%s: entering\n", __func__);
-
 	/* check for null input */
 	if (!client || !client_data || !val) {
 		d_mpr_e(
@@ -187,11 +179,10 @@ int mmrm_client_set_value_in_range(struct mmrm_client *client,
 			__func__, client->client_type);
 	}
 
-	d_mpr_h("%s: exiting\n", __func__);
 	return rc;
 
 err_exit:
-	d_mpr_e("%s: error exit\n", __func__);
+	d_mpr_e("%s: error = %d\n", __func__, rc);
 	return rc;
 }
 EXPORT_SYMBOL(mmrm_client_set_value_in_range);
@@ -201,8 +192,6 @@ int mmrm_client_get_value(struct mmrm_client *client,
 {
 	int rc = 0;
 
-	d_mpr_h("%s: entering\n", __func__);
-
 	/* check for null input */
 	if (!client || !val) {
 		d_mpr_e("%s: invalid input client(%pK) val(%pK)\n",
@@ -229,11 +218,10 @@ int mmrm_client_get_value(struct mmrm_client *client,
 			__func__, client->client_type);
 	}
 
-	d_mpr_h("%s: exiting\n", __func__);
 	return rc;
 
 err_exit:
-	d_mpr_e("%s: error exit\n", __func__);
+	d_mpr_e("%s: error = %d\n", __func__, rc);
 	return rc;
 }
 EXPORT_SYMBOL(mmrm_client_get_value);
@@ -242,8 +230,6 @@ static int msm_mmrm_probe_init(struct platform_device *pdev)
 {
 	int rc = 0;
 
-	d_mpr_h("%s: entering\n", __func__);
-
 	drv_data = kzalloc(sizeof(*drv_data), GFP_KERNEL);
 	if (!drv_data) {
 		d_mpr_e("%s: unable to allocate memory for mmrm driver\n",
@@ -280,7 +266,6 @@ static int msm_mmrm_probe_init(struct platform_device *pdev)
 		goto err_mmrm_init;
 	}
 
-	d_mpr_h("%s: exiting with success\n", __func__);
 	return rc;
 
 err_mmrm_init:
@@ -290,7 +275,7 @@ err_read_pltfrm_rsc:
 err_get_drv_data:
 	RESET_DRV_DATA(drv_data);
 err_no_mem:
-	d_mpr_e("%s: error exit\n", __func__);
+	d_mpr_e("%s: error = %d\n", __func__, rc);
 	return rc;
 }
 
@@ -298,18 +283,18 @@ static int msm_mmrm_probe(struct platform_device *pdev)
 {
 	int rc = -EINVAL;
 
-	d_mpr_h("%s: entering\n", __func__);
+	d_mpr_h("%s\n", __func__);
 
 	VERIFY_PDEV(pdev)
 
 	if (of_device_is_compatible(pdev->dev.of_node, "qcom,msm-mmrm"))
 		return msm_mmrm_probe_init(pdev);
 
-	d_mpr_h("%s: exiting: no compatible device node\n", __func__);
+	d_mpr_e("%s: no compatible device node\n", __func__);
 	return rc;
 
 err_exit:
-	d_mpr_e("%s: error exit\n", __func__);
+	d_mpr_e("%s: error = %d\n", __func__, rc);
 	return rc;
 }
 
@@ -331,11 +316,10 @@ static int msm_mmrm_remove(struct platform_device *pdev)
 	dev_set_drvdata(&pdev->dev, NULL);
 	RESET_DRV_DATA(drv_data);
 
-	d_mpr_h("%s: exiting with success\n", __func__);
 	return rc;
 
 err_exit:
-	d_mpr_e("%s: error exit\n", __func__);
+	d_mpr_e("%s: error = %d\n", __func__, rc);
 	return rc;
 }
 
@@ -359,8 +343,6 @@ static int __init msm_mmrm_init(void)
 {
 	int rc = 0;
 
-	d_mpr_h("%s: entering\n", __func__);
-
 	rc = platform_driver_register(&msm_mmrm_driver);
 	if (rc) {
 		d_mpr_e("%s: failed to register platform driver\n",
@@ -368,19 +350,17 @@ static int __init msm_mmrm_init(void)
 		goto err_platform_drv_reg;
 	}
 
-	d_mpr_h("%s: exiting\n", __func__);
+	d_mpr_h("%s: success\n", __func__);
 	return rc;
 
 err_platform_drv_reg:
-	d_mpr_e("%s: error exit\n", __func__);
+	d_mpr_e("%s: error = %d\n", __func__, rc);
 	return rc;
 }
 
 static void __exit msm_mmrm_exit(void)
 {
-	d_mpr_h("%s: entering\n", __func__);
 	platform_driver_unregister(&msm_mmrm_driver);
-	d_mpr_h("%s: exiting\n", __func__);
 }
 
 module_init(msm_mmrm_init);