Переглянути джерело

Merge b3a65b8e028a006a9b71645292a8783b09ecba74 on remote branch

Change-Id: Id8d28259f6228bf1578ec208406046f06e7476e1
Linux Build Service Account 1 рік тому
батько
коміт
d4cd22772c
7 змінених файлів з 56 додано та 78 видалено
  1. 12 12
      Android.mk
  2. 1 9
      BUILD.bazel
  3. 1 1
      Kbuild
  4. 40 42
      driver/src/mmrm_clk_rsrc_mgr_sw.c
  5. 1 1
      mmrm_kernel_board.mk
  6. 0 11
      mmrm_modules.bzl
  7. 1 2
      target.bzl

+ 12 - 12
Android.mk

@@ -21,7 +21,7 @@ DLKM_DIR   := device/qcom/common/dlkm
 
 LOCAL_PATH := $(call my-dir)
 LOCAL_MODULE_DDK_BUILD    := true
-LOCAL_MODULE_KO_DIRS      := driver/msm-mmrm.ko test/mmrm_test_module.ko
+LOCAL_MODULE_KO_DIRS      := driver/msm-mmrm.ko
 
 include $(CLEAR_VARS)
 # For incremental compilation
@@ -46,17 +46,17 @@ LOCAL_MODULE_PATH         := $(KERNEL_MODULES_OUT)
 # BOARD_VENDOR_KERNEL_MODULES += $(LOCAL_MODULE_PATH)/$(LOCAL_MODULE)
 include $(DLKM_DIR)/Build_external_kernelmodule.mk
 
-include $(CLEAR_VARS)
-# For incremental compilation
-LOCAL_SRC_FILES           := $(wildcard $(LOCAL_PATH)/**/*) $(wildcard $(LOCAL_PATH)/*)
-LOCAL_MODULE              := mmrm_test_module.ko
-LOCAL_MODULE_KBUILD_NAME  := test/mmrm_test_module.ko
-LOCAL_MODULE_TAGS         := optional
-LOCAL_MODULE_DEBUG_ENABLE := true
-LOCAL_MODULE_PATH         := $(KERNEL_MODULES_OUT)
-# Include kp_module.ko in the /vendor/lib/modules (vendor.img)
-# BOARD_VENDOR_KERNEL_MODULES += $(LOCAL_MODULE_PATH)/$(LOCAL_MODULE)
-include $(DLKM_DIR)/Build_external_kernelmodule.mk
+# include $(CLEAR_VARS)
+# # For incremental compilation
+# LOCAL_SRC_FILES           := $(wildcard $(LOCAL_PATH)/**/*) $(wildcard $(LOCAL_PATH)/*)
+# LOCAL_MODULE              := mmrm_test_module.ko
+# LOCAL_MODULE_KBUILD_NAME  := test/mmrm_test_module.ko
+# LOCAL_MODULE_TAGS         := optional
+# LOCAL_MODULE_DEBUG_ENABLE := true
+# LOCAL_MODULE_PATH         := $(KERNEL_MODULES_OUT)
+# # Include kp_module.ko in the /vendor/lib/modules (vendor.img)
+# # BOARD_VENDOR_KERNEL_MODULES += $(LOCAL_MODULE_PATH)/$(LOCAL_MODULE)
+# include $(DLKM_DIR)/Build_external_kernelmodule.mk
 
 ifeq ($(CONFIG_MSM_MMRM_VM),y)
 	include $(CLEAR_VARS)

+ 1 - 9
BUILD.bazel

@@ -21,17 +21,9 @@ ddk_headers(
     includes = ["driver/src"]
 )
 
-ddk_headers(
-    name = "test_headers",
-    hdrs = glob([
-      "test/*.h",
-    ]),
-    includes = ["test"]
-)
-
 ddk_headers(
     name = "mmrm_driver_headers",
-    hdrs = [":mmrm_drivers_configs", "driver_headers", "test_headers"]
+    hdrs = [":mmrm_drivers_configs", "driver_headers"]
 )
 
 load(":target.bzl", "define_pineapple")

+ 1 - 1
Kbuild

@@ -5,7 +5,7 @@ LINUXINCLUDE += -include $(MMRM_ROOT)/config/waipiommrmconf.h
 ifneq ($(CONFIG_ARCH_QTI_VM), y)
 
 obj-m += driver/
-obj-m += test/
+# obj-m += test/
 
 ifeq ($(CONFIG_MSM_MMRM_VM),y)
 LINUXINCLUDE += -I$(MMRM_ROOT)/vm/common/inc/

+ 40 - 42
driver/src/mmrm_clk_rsrc_mgr_sw.c

@@ -475,16 +475,23 @@ static int mmrm_sw_get_req_level(
 {
 	int rc = 0;
 	int voltage_corner;
+	unsigned long clk_round_val = 0;
 	u32 level;
 
+	/*
+	 * Clients may set rates that are higher than max supported rate for a clock.
+	 * Round the rate to get the max supported corner.
+	 */
+	clk_round_val = clk_round_rate(tbl_entry->clk, clk_val);
+
 	/* get voltage corner */
-	voltage_corner = qcom_clk_get_voltage(tbl_entry->clk, clk_val);
+	voltage_corner = qcom_clk_get_voltage(tbl_entry->clk, clk_round_val);
 	if (voltage_corner < 0 || voltage_corner > mmrm_sw_vdd_corner[MMRM_VDD_LEVEL_TURBO]) {
-		d_mpr_e("%s: csid(0x%x): invalid voltage corner(%d) for clk rate(%llu)\n",
+		d_mpr_e("%s: csid(0x%x): invalid voltage corner(%d) for rounded clk rate(%llu)\n",
 			__func__,
 			tbl_entry->clk_src_id,
 			voltage_corner,
-			clk_val);
+			clk_round_val);
 		rc = voltage_corner;
 		goto err_invalid_corner;
 	}
@@ -506,11 +513,11 @@ static int mmrm_sw_get_req_level(
 	}
 
 	if (level == MMRM_VDD_LEVEL_MAX) {
-		d_mpr_e("%s: csid(0x%x): invalid voltage corner(%d) for clk rate(%llu)\n",
+		d_mpr_e("%s: csid(0x%x): invalid voltage corner(%d) for rounded clk rate(%llu)\n",
 			__func__,
 			tbl_entry->clk_src_id,
 			voltage_corner,
-			clk_val);
+			clk_round_val);
 		rc = -EINVAL;
 		goto err_invalid_corner;
 	}
@@ -918,7 +925,6 @@ static int mmrm_sw_clk_client_setval(struct mmrm_clk_mgr *sw_clk_mgr,
 	bool req_reserve;
 	u32 req_level;
 	unsigned long crm_max_rate = 0;
-	unsigned long clk_round_val = 0;
 	int max_rate_idx = 0;
 
 	/* validate input params */
@@ -949,17 +955,8 @@ static int mmrm_sw_clk_client_setval(struct mmrm_clk_mgr *sw_clk_mgr,
 		goto err_invalid_client;
 	}
 
-	/*
-	 * Clients may set rates that are higher than max supported rate for a clock.
-	 * Round the rate to max supported rate and use this rate for tracking/calculations.
-	 * Use the client-set value to set the rate to clock driver - clock driver internally
-	 * rounds the rate to max supported value.
-	 */
-	if (clk_val != 0)
-		clk_round_val = clk_round_rate(tbl_entry->clk, clk_val);
-
-	d_mpr_h("%s: csid(0x%x) clk rate %llu, clk round rate %llu\n",
-		__func__, tbl_entry->clk_src_id, clk_val, clk_round_val);
+	d_mpr_h("%s: csid(0x%x) clk rate %llu\n",
+		__func__, tbl_entry->clk_src_id, clk_val);
 
 	if (tbl_entry->is_crm_client) {
 		if (client_data->crm_drv_idx >= tbl_entry->hw_drv_instances ||
@@ -970,7 +967,7 @@ static int mmrm_sw_clk_client_setval(struct mmrm_clk_mgr *sw_clk_mgr,
 		}
 
 		crm_max_rate = mmrm_sw_get_max_crm_rate(tbl_entry, client_data,
-						clk_round_val, &max_rate_idx);
+						clk_val, &max_rate_idx);
 	}
 
 	/*
@@ -985,12 +982,12 @@ static int mmrm_sw_clk_client_setval(struct mmrm_clk_mgr *sw_clk_mgr,
 	 * d.  reserve  && !req_reserve:  set clk rate
 	 */
 	req_reserve = client_data->flags & MMRM_CLIENT_DATA_FLAG_RESERVE_ONLY;
-	if (tbl_entry->clk_rate == clk_round_val &&
+	if (tbl_entry->clk_rate == clk_val &&
 		tbl_entry->num_hw_blocks == client_data->num_hw_blocks &&
 		tbl_entry->is_crm_client == false) {
 
-		d_mpr_h("%s: csid(0x%x) same as previous (rounded) clk rate %llu\n",
-			__func__, tbl_entry->clk_src_id, clk_round_val);
+		d_mpr_h("%s: csid(0x%x) same as previous clk rate %llu\n",
+			__func__, tbl_entry->clk_src_id, clk_val);
 
 		/* a & b */
 		if (tbl_entry->reserve == req_reserve)
@@ -1009,14 +1006,14 @@ static int mmrm_sw_clk_client_setval(struct mmrm_clk_mgr *sw_clk_mgr,
 	}
 
 	/* get corresponding level */
-	if (clk_round_val) {
+	if (clk_val) {
 		if (!tbl_entry->is_crm_client)
-			rc = mmrm_sw_get_req_level(tbl_entry, clk_round_val, &req_level);
+			rc = mmrm_sw_get_req_level(tbl_entry, clk_val, &req_level);
 		else
 			rc = mmrm_sw_get_req_level(tbl_entry, crm_max_rate, &req_level);
 		if (rc || req_level >= MMRM_VDD_LEVEL_MAX) {
 			d_mpr_e("%s: csid(0x%x) unable to get level for clk rate %llu crm_max_rate %llu\n",
-				__func__, tbl_entry->clk_src_id, clk_round_val, crm_max_rate);
+				__func__, tbl_entry->clk_src_id, clk_val, crm_max_rate);
 			rc = -EINVAL;
 			goto err_invalid_clk_val;
 		}
@@ -1036,7 +1033,7 @@ static int mmrm_sw_clk_client_setval(struct mmrm_clk_mgr *sw_clk_mgr,
 	/* check and update for peak current */
 	if (!tbl_entry->is_crm_client) {
 		rc = mmrm_sw_check_peak_current(sinfo, tbl_entry,
-			req_level, clk_round_val, client_data->num_hw_blocks);
+			req_level, clk_val, client_data->num_hw_blocks);
 	} else {
 		rc = mmrm_sw_check_peak_current(sinfo, tbl_entry,
 			req_level, crm_max_rate, client_data->num_hw_blocks);
@@ -1052,16 +1049,16 @@ static int mmrm_sw_clk_client_setval(struct mmrm_clk_mgr *sw_clk_mgr,
 
 	/* update table entry */
 	if (!tbl_entry->is_crm_client) {
-		tbl_entry->clk_rate = clk_round_val;
+		tbl_entry->clk_rate = clk_val;
 	} else {
 		tbl_entry->max_rate_idx = max_rate_idx;
 		tbl_entry->clk_rate = crm_max_rate;
 		if (client_data->drv_type == MMRM_CRM_SW_DRV)
-			tbl_entry->crm_client_tbl[tbl_entry->crm_client_tbl_size - 1] = clk_round_val;
+			tbl_entry->crm_client_tbl[tbl_entry->crm_client_tbl_size - 1] = clk_val;
 		else
 			tbl_entry->crm_client_tbl[tbl_entry->num_pwr_states *
 				client_data->crm_drv_idx +
-				client_data->pwr_st] = clk_round_val;
+				client_data->pwr_st] = clk_val;
 
 		mmrm_sw_print_crm_table(tbl_entry);
 	}
@@ -1081,29 +1078,30 @@ static int mmrm_sw_clk_client_setval(struct mmrm_clk_mgr *sw_clk_mgr,
 
 set_clk_rate:
 	if (!tbl_entry->is_crm_client || client_data->drv_type == MMRM_CRM_SW_DRV) {
-		d_mpr_h("%s: csid(0x%x) setting rounded clk rate %llu\n",
-			__func__, tbl_entry->clk_src_id, clk_round_val);
+		d_mpr_h("%s: csid(0x%x) setting clk rate %llu\n",
+			__func__, tbl_entry->clk_src_id, clk_val);
 
-		rc = clk_set_rate(tbl_entry->clk, clk_round_val);
+		rc = clk_set_rate(tbl_entry->clk, clk_val);
 		if (rc) {
-			d_mpr_e("%s: csid(0x%x) failed to set rounded clk rate %llu\n",
-				__func__, tbl_entry->clk_src_id, clk_round_val);
+			d_mpr_e("%s: csid(0x%x) failed to set clk rate %llu\n",
+				__func__, tbl_entry->clk_src_id, clk_val);
 			rc = -EINVAL;
 			/* TBD: incase of failure clk_rate is invalid */
 			goto err_clk_set_fail;
 		}
 	} else {
-		d_mpr_h("%s: csid(0x%x) setting rounded clk rate %llu drv_type %u, crm_drv_idx %u, pwr_st %u\n",
-				__func__, tbl_entry->clk_src_id, clk_round_val,
-				CRM_HW_DRV, client_data->crm_drv_idx,
-				client_data->pwr_st);
+		d_mpr_h(
+		"%s: csid(0x%x) setting clk rate %llu drv_type %u, crm_drv_idx %u, pwr_st %u\n",
+			__func__, tbl_entry->clk_src_id, clk_val,
+			CRM_HW_DRV, client_data->crm_drv_idx,
+			client_data->pwr_st);
 
 		rc = qcom_clk_crm_set_rate(tbl_entry->clk, CRM_HW_DRV,
 				client_data->crm_drv_idx,
-				client_data->pwr_st, clk_round_val);
+				client_data->pwr_st, clk_val);
 		if (rc) {
-			d_mpr_e("%s: csid(0x%x) failed to set rounded clk rate %llu\n",
-				__func__, tbl_entry->clk_src_id, clk_round_val);
+			d_mpr_e("%s: csid(0x%x) failed to set clk rate %llu\n",
+				__func__, tbl_entry->clk_src_id, clk_val);
 			rc = -EINVAL;
 			/* TBD: incase of failure clk_rate is invalid */
 			goto err_clk_set_fail;
@@ -1111,8 +1109,8 @@ set_clk_rate:
 	}
 
 exit_no_err:
-	d_mpr_h("%s: clk rate (round) %lu set successfully for %s\n",
-			__func__, clk_round_val, tbl_entry->name);
+	d_mpr_h("%s: clk rate %lu set successfully for %s\n",
+			__func__, clk_val, tbl_entry->name);
 	return rc;
 
 err_invalid_client:

+ 1 - 1
mmrm_kernel_board.mk

@@ -14,6 +14,6 @@ BOARD_VENDOR_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/msm-mmrm.ko
 BOARD_VENDOR_RAMDISK_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/msm-mmrm.ko
 BOARD_VENDOR_RAMDISK_RECOVERY_KERNEL_MODULES_LOAD += $(KERNEL_MODULES_OUT)/msm-mmrm.ko
 
-BOARD_VENDOR_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/mmrm_test_module.ko
+# BOARD_VENDOR_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/mmrm_test_module.ko
 endif
 endif

+ 0 - 11
mmrm_modules.bzl

@@ -1,7 +1,6 @@
 load(":mmrm_modules_build.bzl", "mmrm_driver_modules_entry")
 
 MMRM_DRV_PATH = "driver"
-MMRM_TEST_PATH = "test"
 
 mmrm_driver_modules = mmrm_driver_modules_entry([":mmrm_driver_headers"])
 module_entry = mmrm_driver_modules.register
@@ -21,13 +20,3 @@ module_entry(
         "msm_mmrm.c"
     ],
 )
-
-module_entry(
-    name = "mmrm_test_module",
-    path =  MMRM_TEST_PATH,
-    config_option = "CONFIG_MSM_MMRM",
-    srcs = [
-        "mmrm_test_internal.c",
-        "mmrm_test.c"
-    ],
-)

+ 1 - 2
target.bzl

@@ -6,7 +6,6 @@ def define_pineapple():
         target = "pineapple",
         registry = mmrm_driver_modules,
         modules = [
-            "msm-mmrm",
-            "mmrm_test_module",
+            "msm-mmrm"
         ],
 )