Browse Source

msm: eva: Snapshot of eva driver compiled in LKP

Port EVA driver to LKP.

Change-Id: If258891dd5adef096c28eaded36b4529750b9359
Signed-off-by: George Shen <[email protected]>
George Shen 4 years ago
parent
commit
10b7267132
9 changed files with 58 additions and 80 deletions
  1. 15 0
      Kbuild
  2. 11 12
      Makefile
  3. 0 22
      msm/eva/cvp_fw_load.c
  4. 7 7
      msm/eva/cvp_hfi.c
  5. 0 4
      msm/eva/cvp_hfi.h
  6. 0 3
      msm/eva/msm_cvp_common.c
  7. 22 30
      msm/eva/msm_cvp_debug.c
  8. 1 0
      msm/eva/msm_cvp_ioctl.c
  9. 2 2
      msm/eva/msm_smem.c

+ 15 - 0
Kbuild

@@ -0,0 +1,15 @@
+# SPDX-License-Identifier: GPL-2.0-only
+
+# auto-detect subdirs
+ifneq ($(CONFIG_ARCH_QTI_VM), y)
+ifeq ($(CONFIG_ARCH_LAHAINA), y)
+include $(srctree)/techpack/eva/config/waipioeva.conf
+LINUXINCLUDE    += -include $(srctree)/techpack/eva/config/waipioevaconf.h
+endif
+endif
+
+LINUXINCLUDE    += -I$(srctree)/techpack/eva/include \
+                   -I$(srctree)/techpack/eva/include/uapi \
+		   -I$(srctree)/techpack/eva/include/uapi/eva
+
+obj-y +=msm/

+ 11 - 12
Makefile

@@ -1,15 +1,14 @@
-# SPDX-License-Identifier: GPL-2.0-only
+KBUILD_OPTIONS+= EVA_ROOT=$(KERNEL_SRC)/$(M)
 
-# auto-detect subdirs
-ifneq ($(CONFIG_ARCH_QTI_VM), y)
-ifeq ($(CONFIG_ARCH_LAHAINA), y)
-include $(srctree)/techpack/eva/config/waipioeva.conf
-LINUXINCLUDE    += -include $(srctree)/techpack/eva/config/waipioevaconf.h
-endif
-endif
+all:
+	$(MAKE) -C $(KERNEL_SRC) M=$(M) modules $(KBUILD_OPTIONS)
 
-LINUXINCLUDE    += -I$(srctree)/techpack/eva/include \
-                   -I$(srctree)/techpack/eva/include/uapi \
-		   -I$(srctree)/techpack/eva/include/uapi/eva
+modules_install:
+	$(MAKE) M=$(M) -C $(KERNEL_SRC) modules_install
 
-obj-y +=msm/
+%:
+	$(MAKE) -C $(KERNEL_SRC) M=$(M) $@ $(KBUILD_OPTIONS)
+
+clean:
+	rm -f *.o *.ko *.mod.c *.mod.o *~ .*.cmd Module.symvers
+	rm -rf .tmp_versions

+ 0 - 22
msm/eva/cvp_fw_load.c

@@ -11,17 +11,12 @@
 #include "cvp_comm_def.h"
 #include "cvp_core_hfi.h"
 #include "cvp_hfi.h"
-#ifdef CVP_MDT_ENABLED
 #include <linux/of_address.h>
 #include <linux/firmware.h>
 #include <linux/soc/qcom/mdt_loader.h>
-#else
-#include <soc/qcom/subsystem_restart.h>
-#endif
 
 #define MAX_FIRMWARE_NAME_SIZE 128
 
-#ifdef CVP_MDT_ENABLED
 static int __load_fw_to_memory(struct platform_device *pdev,
 		const char *fw_name)
 {
@@ -123,14 +118,12 @@ exit:
 		release_firmware(firmware);
 	return rc;
 }
-#endif
 
 int load_cvp_fw_impl(struct iris_hfi_device *device)
 {
 	int rc = 0;
 
 	if (!device->resources.fw.cookie) {
-#ifdef CVP_MDT_ENABLED
 		device->resources.fw.cookie =
 			__load_fw_to_memory(device->res->pdev,
 			device->res->fw_name);
@@ -139,28 +132,13 @@ int load_cvp_fw_impl(struct iris_hfi_device *device)
 			device->resources.fw.cookie = 0;
 			rc = -ENOMEM;
 		}
-#else
-		device->resources.fw.cookie =
-			subsystem_get_with_fwname("evass",
-					device->res->fw_name);
-		if (IS_ERR_OR_NULL(device->resources.fw.cookie)) {
-			dprintk(CVP_ERR, "Failed to download firmware\n");
-			device->resources.fw.cookie = NULL;
-			rc = -ENOMEM;
-		}
-#endif
 	}
 	return rc;
 }
 
 int unload_cvp_fw_impl(struct iris_hfi_device *device)
 {
-#ifdef CVP_MDT_ENABLED
 	qcom_scm_pas_shutdown(device->resources.fw.cookie);
 	device->resources.fw.cookie = 0;
-#else
-	subsystem_put(device->resources.fw.cookie);
-	device->resources.fw.cookie = NULL;
-#endif
 	return 0;
 }

+ 7 - 7
msm/eva/cvp_hfi.c

@@ -2065,7 +2065,7 @@ static int iris_hfi_core_init(void *device)
 	__sys_set_idle_indicator(device, true);
 
 	if (dev->res->pm_qos_latency_us)
-		pm_qos_add_request(&dev->qos, PM_QOS_CPU_DMA_LATENCY,
+		cpu_latency_qos_add_request(&dev->qos,
 				dev->res->pm_qos_latency_us);
 
 	mutex_unlock(&dev->lock);
@@ -2099,8 +2099,8 @@ static int iris_hfi_core_release(void *dev)
 	mutex_lock(&device->lock);
 	dprintk(CVP_WARN, "Core releasing\n");
 	if (device->res->pm_qos_latency_us &&
-		pm_qos_request_active(&device->qos))
-		pm_qos_remove_request(&device->qos);
+		cpu_latency_qos_request_active(&device->qos))
+		cpu_latency_qos_remove_request(&device->qos);
 
 	__resume(device);
 	__set_state(device, IRIS_STATE_DEINIT);
@@ -3185,7 +3185,7 @@ static int __init_regs_and_interrupts(struct iris_hfi_device *device,
 
 	hal->irq = res->irq;
 	hal->firmware_base = res->firmware_base;
-	hal->register_base = devm_ioremap_nocache(&res->pdev->dev,
+	hal->register_base = devm_ioremap(&res->pdev->dev,
 			res->register_base, res->register_size);
 	hal->register_size = res->register_size;
 	if (!hal->register_base) {
@@ -4074,8 +4074,8 @@ static inline int __suspend(struct iris_hfi_device *device)
 	dprintk(CVP_PWR, "Entering suspend\n");
 
 	if (device->res->pm_qos_latency_us &&
-		pm_qos_request_active(&device->qos))
-		pm_qos_remove_request(&device->qos);
+		cpu_latency_qos_request_active(&device->qos))
+		cpu_latency_qos_remove_request(&device->qos);
 
 	rc = __tzbsp_set_cvp_state(TZ_SUBSYS_STATE_SUSPEND);
 	if (rc) {
@@ -4248,7 +4248,7 @@ static inline int __resume(struct iris_hfi_device *device)
 	__set_threshold_registers(device);
 
 	if (device->res->pm_qos_latency_us)
-		pm_qos_add_request(&device->qos, PM_QOS_CPU_DMA_LATENCY,
+		cpu_latency_qos_add_request(&device->qos,
 				device->res->pm_qos_latency_us);
 
 	__sys_set_debug(device, msm_cvp_fw_debug);

+ 0 - 4
msm/eva/cvp_hfi.h

@@ -200,11 +200,7 @@ struct cvp_hal_session {
 };
 
 struct msm_cvp_fw {
-#ifdef CVP_MDT_ENABLED
 	int cookie;
-#else
-	void *cookie;
-#endif
 };
 
 int cvp_hfi_process_msg_packet(u32 device_id,

+ 0 - 3
msm/eva/msm_cvp_common.c

@@ -631,9 +631,6 @@ static void handle_sys_error(enum hal_command_response cmd, void *data)
 	unsigned long flags = 0;
 	enum cvp_core_state cur_state;
 
-#ifndef CVP_MDT_ENABLED
-	subsystem_crashed("evass");
-#endif
 	if (!response) {
 		dprintk(CVP_ERR,
 			"Failed to get valid response for sys error\n");

+ 22 - 30
msm/eva/msm_cvp_debug.c

@@ -21,6 +21,7 @@ int msm_cvp_fw_debug = 0x18;
 int msm_cvp_fw_debug_mode = 1;
 int msm_cvp_fw_low_power_mode = 1;
 bool msm_cvp_fw_coverage = !true;
+bool msm_cvp_cacheop_enabled = true;
 bool msm_cvp_thermal_mitigation_disabled = !true;
 bool msm_cvp_cacheop_disabled = !true;
 int msm_cvp_clock_voting = !1;
@@ -229,8 +230,7 @@ DEFINE_DEBUGFS_ATTRIBUTE(cvp_pwr_fops, cvp_power_get, cvp_power_set, "%llu\n");
 
 struct dentry *msm_cvp_debugfs_init_drv(void)
 {
-	bool ok = false;
-	struct dentry *dir = NULL;
+	struct dentry *dir = NULL, *f;
 
 	dir = debugfs_create_dir("msm_cvp", NULL);
 	if (IS_ERR_OR_NULL(dir)) {
@@ -238,35 +238,26 @@ struct dentry *msm_cvp_debugfs_init_drv(void)
 		goto failed_create_dir;
 	}
 
-#define __debugfs_create(__type, __name, __value) ({                          \
-	struct dentry *f = debugfs_create_##__type(__name, 0644,	\
-		dir, __value);                                                \
-	if (IS_ERR_OR_NULL(f)) {                                              \
-		dprintk(CVP_ERR, "Failed creating debugfs file '%pd/%s'\n",  \
-			dir, __name);                                         \
-		f = NULL;                                                     \
-	}                                                                     \
-	f;                                                                    \
-})
-
-	ok =
-	__debugfs_create(x32, "debug_level", &msm_cvp_debug) &&
-	__debugfs_create(x32, "fw_level", &msm_cvp_fw_debug) &&
-	__debugfs_create(u32, "fw_debug_mode", &msm_cvp_fw_debug_mode) &&
-	__debugfs_create(bool, "fw_coverage", &msm_cvp_fw_coverage) &&
-	__debugfs_create(u32, "fw_low_power_mode",
-			&msm_cvp_fw_low_power_mode) &&
-	__debugfs_create(u32, "debug_output", &msm_cvp_debug_out) &&
-	__debugfs_create(bool, "disable_thermal_mitigation",
-			&msm_cvp_thermal_mitigation_disabled) &&
-	__debugfs_create(bool, "disable_cacheop",
-			&msm_cvp_cacheop_disabled) &&
-	__debugfs_create(bool, "disable_cvp_syscache",
+	debugfs_create_x32("debug_level", 0644, dir, &msm_cvp_debug);
+	debugfs_create_x32("fw_level", 0644, dir, &msm_cvp_fw_debug);
+	debugfs_create_u32("fw_debug_mode", 0644, dir, &msm_cvp_fw_debug_mode);
+	debugfs_create_u32("fw_low_power_mode", 0644, dir,
+		&msm_cvp_fw_low_power_mode);
+	debugfs_create_u32("debug_output", 0644, dir, &msm_cvp_debug_out);
+	f = debugfs_create_bool("fw_coverage", 0644, dir, &msm_cvp_fw_coverage);
+	if (IS_ERR_OR_NULL(f))
+		goto failed_create_dir;
+	f = debugfs_create_bool("disable_thermal_mitigation", 0644, dir,
+			&msm_cvp_thermal_mitigation_disabled);
+	if (IS_ERR_OR_NULL(f))
+		goto failed_create_dir;
+	f = debugfs_create_bool("enable_cacheop", 0644, dir,
+			&msm_cvp_cacheop_enabled);
+	if (IS_ERR_OR_NULL(f))
+		goto failed_create_dir;
+	f = debugfs_create_bool("disable_cvp_syscache", 0644, dir,
 			&msm_cvp_syscache_disable);
-
-#undef __debugfs_create
-
-	if (!ok)
+	if (IS_ERR_OR_NULL(f))
 		goto failed_create_dir;
 
 	debugfs_create_file("cvp_power", 0644, dir, NULL, &cvp_pwr_fops);
@@ -277,6 +268,7 @@ failed_create_dir:
 	if (dir)
 		debugfs_remove_recursive(cvp_driver->debugfs_root);
 
+	dprintk(CVP_WARN, "Failed to create debugfs\n");
 	return NULL;
 }
 

+ 1 - 0
msm/eva/msm_cvp_ioctl.c

@@ -3,6 +3,7 @@
  * Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
  */
 
+#include <linux/compat.h>
 #include "cvp_private.h"
 #include "cvp_hfi_api.h"
 

+ 2 - 2
msm/eva/msm_smem.c

@@ -283,8 +283,8 @@ static int alloc_dma_mem(size_t size, u32 align, u32 flags, int map_kernel,
 	dbuf = ion_alloc(size, heap_mask, ion_flags);
 	if (IS_ERR_OR_NULL(dbuf)) {
 		dprintk(CVP_ERR,
-		"Failed to allocate shared memory = %x bytes, %llx, %x\n",
-		size, heap_mask, ion_flags);
+		"Failed to allocate shared memory = %x bytes, %llx, %x %x\n",
+		size, heap_mask, ion_flags, PTR_ERR(dbuf));
 		rc = -ENOMEM;
 		goto fail_shared_mem_alloc;
 	}