Browse Source

IPTS: Add debugfs entries

kitakar5525 6 years ago
parent
commit
360a2b1c45

+ 310 - 8
patches/5.2/0005-ipts.patch

@@ -1,10 +1,11 @@
-From e1567eb4f8e8f69efcf9730efa17b56c0781f4da Mon Sep 17 00:00:00 2001
+From 20a9d7520a725aebf3fb9fdedd91525041345378 Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Fri, 26 Jul 2019 04:45:32 +0200
 Subject: [PATCH 05/12] ipts
 
 ---
  drivers/gpu/drm/i915/Makefile               |    3 +
+ drivers/gpu/drm/i915/i915_debugfs.c         |   63 +-
  drivers/gpu/drm/i915/i915_drv.c             |    7 +
  drivers/gpu/drm/i915/i915_drv.h             |    3 +
  drivers/gpu/drm/i915/i915_gem_context.c     |   12 +
@@ -26,7 +27,7 @@ Subject: [PATCH 05/12] ipts
  drivers/misc/ipts/Kconfig                   |    9 +
  drivers/misc/ipts/Makefile                  |   13 +
  drivers/misc/ipts/ipts-binary-spec.h        |  118 +++
- drivers/misc/ipts/ipts-dbgfs.c              |  152 +++
+ drivers/misc/ipts/ipts-dbgfs.c              |  364 +++++++
  drivers/misc/ipts/ipts-gfx.c                |  185 ++++
  drivers/misc/ipts/ipts-gfx.h                |   24 +
  drivers/misc/ipts/ipts-hid.c                |  456 ++++++++
@@ -36,7 +37,7 @@ Subject: [PATCH 05/12] ipts
  drivers/misc/ipts/ipts-mei-msgs.h           |  585 +++++++++++
  drivers/misc/ipts/ipts-mei.c                |  282 +++++
  drivers/misc/ipts/ipts-msg-handler.c        |  437 ++++++++
- drivers/misc/ipts/ipts-msg-handler.h        |   32 +
+ drivers/misc/ipts/ipts-msg-handler.h        |   33 +
  drivers/misc/ipts/ipts-resource.c           |  277 +++++
  drivers/misc/ipts/ipts-resource.h           |   30 +
  drivers/misc/ipts/ipts-sensor-regs.h        |  700 +++++++++++++
@@ -45,7 +46,7 @@ Subject: [PATCH 05/12] ipts
  drivers/misc/mei/hw-me-regs.h               |    1 +
  drivers/misc/mei/pci-me.c                   |    1 +
  include/linux/intel_ipts_if.h               |   76 ++
- 41 files changed, 5566 insertions(+), 25 deletions(-)
+ 42 files changed, 5841 insertions(+), 26 deletions(-)
  create mode 100644 drivers/gpu/drm/i915/intel_ipts.c
  create mode 100644 drivers/gpu/drm/i915/intel_ipts.h
  create mode 100644 drivers/misc/ipts/Kconfig
@@ -83,6 +84,94 @@ index fbcb0904f4a8..1a273956b41c 100644
  # Post-mortem debug and GPU hang state capture
  i915-$(CONFIG_DRM_I915_CAPTURE_ERROR) += i915_gpu_error.o
  i915-$(CONFIG_DRM_I915_SELFTEST) += \
+diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
+index 5823ffb17821..2ffad9712041 100644
+--- a/drivers/gpu/drm/i915/i915_debugfs.c
++++ b/drivers/gpu/drm/i915/i915_debugfs.c
+@@ -41,6 +41,7 @@
+ #include "intel_hdmi.h"
+ #include "intel_pm.h"
+ #include "intel_psr.h"
++#include "intel_ipts.h"
+ 
+ static inline struct drm_i915_private *node_to_i915(struct drm_info_node *node)
+ {
+@@ -4567,6 +4568,64 @@ static const struct file_operations i915_fifo_underrun_reset_ops = {
+ 	.llseek = default_llseek,
+ };
+ 
++static ssize_t
++i915_intel_ipts_cleanup_write(struct file *filp,
++			       const char __user *ubuf,
++			       size_t cnt, loff_t *ppos)
++{
++	struct drm_i915_private *dev_priv = filp->private_data;
++	struct drm_device *dev = &dev_priv->drm;
++	int ret;
++	bool flag;
++
++	ret = kstrtobool_from_user(ubuf, cnt, &flag);
++	if (ret)
++		return ret;
++
++	if (!flag)
++		return cnt;
++
++	intel_ipts_cleanup(dev);
++
++	return cnt;
++}
++
++static const struct file_operations i915_intel_ipts_cleanup_ops = {
++	.owner = THIS_MODULE,
++	.open = simple_open,
++	.write = i915_intel_ipts_cleanup_write,
++	.llseek = default_llseek,
++};
++
++static ssize_t
++i915_intel_ipts_init_write(struct file *filp,
++			       const char __user *ubuf,
++			       size_t cnt, loff_t *ppos)
++{
++	struct drm_i915_private *dev_priv = filp->private_data;
++	struct drm_device *dev = &dev_priv->drm;
++	int ret;
++	bool flag;
++
++	ret = kstrtobool_from_user(ubuf, cnt, &flag);
++	if (ret)
++		return ret;
++
++	if (!flag)
++		return cnt;
++
++	intel_ipts_init(dev);
++
++	return cnt;
++}
++
++static const struct file_operations i915_intel_ipts_init_ops = {
++	.owner = THIS_MODULE,
++	.open = simple_open,
++	.write = i915_intel_ipts_init_write,
++	.llseek = default_llseek,
++};
++
+ static const struct drm_info_list i915_debugfs_list[] = {
+ 	{"i915_capabilities", i915_capabilities, 0},
+ 	{"i915_gem_objects", i915_gem_object_info, 0},
+@@ -4642,7 +4701,9 @@ static const struct i915_debugfs_files {
+ 	{"i915_hpd_short_storm_ctl", &i915_hpd_short_storm_ctl_fops},
+ 	{"i915_ipc_status", &i915_ipc_status_fops},
+ 	{"i915_drrs_ctl", &i915_drrs_ctl_fops},
+-	{"i915_edp_psr_debug", &i915_edp_psr_debug_fops}
++	{"i915_edp_psr_debug", &i915_edp_psr_debug_fops},
++	{"i915_intel_ipts_cleanup", &i915_intel_ipts_cleanup_ops},
++	{"i915_intel_ipts_init", &i915_intel_ipts_init_ops},
+ };
+ 
+ int i915_debugfs_register(struct drm_i915_private *dev_priv)
 diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
 index 1ad88e6d7c04..b50823fd30fb 100644
 --- a/drivers/gpu/drm/i915/i915_drv.c
@@ -1456,10 +1545,10 @@ index 000000000000..87d4bc4133c4
 +#endif /* _IPTS_BINARY_SPEC_H */
 diff --git a/drivers/misc/ipts/ipts-dbgfs.c b/drivers/misc/ipts/ipts-dbgfs.c
 new file mode 100644
-index 000000000000..1c5c92f7d4ba
+index 000000000000..7581b21f81e0
 --- /dev/null
 +++ b/drivers/misc/ipts/ipts-dbgfs.c
-@@ -0,0 +1,152 @@
+@@ -0,0 +1,364 @@
 +/*
 + * Intel Precise Touch & Stylus device driver
 + * Copyright (c) 2016, Intel Corporation.
@@ -1482,9 +1571,13 @@ index 000000000000..1c5c92f7d4ba
 +#include "ipts-sensor-regs.h"
 +#include "ipts-msg-handler.h"
 +#include "ipts-state.h"
++#include "../mei/mei_dev.h"
 +
 +const char sensor_mode_fmt[] = "sensor mode : %01d\n";
 +const char ipts_status_fmt[] = "sensor mode : %01d\nipts state : %01d\n";
++const char ipts_debug_fmt[] = ">> tdt : fw status : %s\n"
++							  ">> == DB s:%x, c:%x ==\n"
++							  ">> == WQ h:%u, t:%u ==\n";
 +
 +static ssize_t ipts_dbgfs_mode_read(struct file *fp, char __user *ubuf,
 +						size_t cnt, loff_t *ppos)
@@ -1574,6 +1667,172 @@ index 000000000000..1c5c92f7d4ba
 +        .llseek = generic_file_llseek,
 +};
 +
++static ssize_t ipts_dbgfs_quiesce_io_cmd_write(struct file *fp, const char __user *ubuf,
++						size_t cnt, loff_t *ppos)
++{
++	ipts_info_t *ipts = fp->private_data;
++	bool result;
++	int rc;
++
++	rc = kstrtobool_from_user(ubuf, cnt, &result);
++	if (rc)
++		return rc;
++
++	if (!result)
++		return -EINVAL;
++
++	ipts_send_sensor_quiesce_io_cmd(ipts);
++
++	return cnt;
++}
++
++static const struct file_operations ipts_quiesce_io_cmd_dbgfs_fops = {
++        .open = simple_open,
++        .write = ipts_dbgfs_quiesce_io_cmd_write,
++        .llseek = generic_file_llseek,
++};
++
++static ssize_t ipts_dbgfs_clear_mem_window_cmd_write(struct file *fp, const char __user *ubuf,
++						size_t cnt, loff_t *ppos)
++{
++	ipts_info_t *ipts = fp->private_data;
++	bool result;
++	int rc;
++
++	rc = kstrtobool_from_user(ubuf, cnt, &result);
++	if (rc)
++		return rc;
++
++	if (!result)
++		return -EINVAL;
++
++	ipts_send_sensor_clear_mem_window_cmd(ipts);
++
++	return cnt;
++}
++
++static const struct file_operations ipts_clear_mem_window_cmd_dbgfs_fops = {
++        .open = simple_open,
++        .write = ipts_dbgfs_clear_mem_window_cmd_write,
++        .llseek = generic_file_llseek,
++};
++
++static ssize_t ipts_dbgfs_debug_read(struct file *fp, char __user *ubuf,
++						size_t cnt, loff_t *ppos)
++{
++	ipts_info_t *ipts = fp->private_data;
++	char dbg_info[1024];
++	int len = 0;
++
++	char fw_sts_str[MEI_FW_STATUS_STR_SZ];
++	u32 *db, *head, *tail;
++	intel_ipts_wq_info_t* wq_info;
++
++	wq_info = &ipts->resource.wq_info;
++
++	mei_fw_status_str(ipts->cldev->bus, fw_sts_str, MEI_FW_STATUS_STR_SZ);
++	// pr_info(">> tdt : fw status : %s\n", fw_sts_str);
++
++	db = (u32*)wq_info->db_addr;
++	head = (u32*)wq_info->wq_head_addr;
++	tail = (u32*)wq_info->wq_tail_addr;
++	// pr_info(">> == DB s:%x, c:%x ==\n", *db, *(db+1));
++	// pr_info(">> == WQ h:%u, t:%u ==\n", *head, *tail);
++
++	if (cnt < sizeof(ipts_debug_fmt) - 3)
++		return -EINVAL;
++
++	len = scnprintf(dbg_info, 1024, ipts_debug_fmt,
++							fw_sts_str,
++							*db, *(db+1),
++							*head, *tail);
++	if (len < 0)
++		return -EIO;
++
++	return simple_read_from_buffer(ubuf, cnt, ppos, dbg_info, len);
++}
++
++static const struct file_operations ipts_debug_dbgfs_fops = {
++        .open = simple_open,
++        .read = ipts_dbgfs_debug_read,
++        .llseek = generic_file_llseek,
++};
++
++static ssize_t ipts_dbgfs_ipts_restart_write(struct file *fp, const char __user *ubuf,
++						size_t cnt, loff_t *ppos)
++{
++	ipts_info_t *ipts = fp->private_data;
++	bool result;
++	int rc;
++
++	rc = kstrtobool_from_user(ubuf, cnt, &result);
++	if (rc)
++		return rc;
++
++	if (!result)
++		return -EINVAL;
++
++	ipts_restart(ipts);
++
++	return cnt;
++}
++
++static const struct file_operations ipts_ipts_restart_dbgfs_fops = {
++        .open = simple_open,
++        .write = ipts_dbgfs_ipts_restart_write,
++        .llseek = generic_file_llseek,
++};
++
++static ssize_t ipts_dbgfs_ipts_stop_write(struct file *fp, const char __user *ubuf,
++						size_t cnt, loff_t *ppos)
++{
++	ipts_info_t *ipts = fp->private_data;
++	bool result;
++	int rc;
++
++	rc = kstrtobool_from_user(ubuf, cnt, &result);
++	if (rc)
++		return rc;
++
++	if (!result)
++		return -EINVAL;
++
++	ipts_stop(ipts);
++
++	return cnt;
++}
++
++static const struct file_operations ipts_ipts_stop_dbgfs_fops = {
++        .open = simple_open,
++        .write = ipts_dbgfs_ipts_stop_write,
++        .llseek = generic_file_llseek,
++};
++
++static ssize_t ipts_dbgfs_ipts_start_write(struct file *fp, const char __user *ubuf,
++						size_t cnt, loff_t *ppos)
++{
++	ipts_info_t *ipts = fp->private_data;
++	bool result;
++	int rc;
++
++	rc = kstrtobool_from_user(ubuf, cnt, &result);
++	if (rc)
++		return rc;
++
++	if (!result)
++		return -EINVAL;
++
++	ipts_start(ipts);
++
++	return cnt;
++}
++
++static const struct file_operations ipts_ipts_start_dbgfs_fops = {
++        .open = simple_open,
++        .write = ipts_dbgfs_ipts_start_write,
++        .llseek = generic_file_llseek,
++};
++
 +void ipts_dbgfs_deregister(ipts_info_t* ipts)
 +{
 +	if (!ipts->dbgfs_dir)
@@ -1605,6 +1864,48 @@ index 000000000000..1c5c92f7d4ba
 +                goto err;
 +        }
 +
++        f = debugfs_create_file("quiesce_io_cmd", S_IWUSR, dir,
++                                ipts, &ipts_quiesce_io_cmd_dbgfs_fops);
++        if (!f) {
++                ipts_err(ipts, "debugfs quiesce_io_cmd creation failed\n");
++                goto err;
++        }
++
++        f = debugfs_create_file("clear_mem_window_cmd", S_IWUSR, dir,
++                                ipts, &ipts_clear_mem_window_cmd_dbgfs_fops);
++        if (!f) {
++                ipts_err(ipts, "debugfs clear_mem_window_cmd creation failed\n");
++                goto err;
++        }
++
++        f = debugfs_create_file("debug", S_IRUSR, dir,
++                                ipts, &ipts_debug_dbgfs_fops);
++        if (!f) {
++                ipts_err(ipts, "debugfs debug creation failed\n");
++                goto err;
++        }
++
++        f = debugfs_create_file("ipts_restart", S_IWUSR, dir,
++                                ipts, &ipts_ipts_restart_dbgfs_fops);
++        if (!f) {
++                ipts_err(ipts, "debugfs ipts_restart creation failed\n");
++                goto err;
++        }
++
++        f = debugfs_create_file("ipts_stop", S_IWUSR, dir,
++                                ipts, &ipts_ipts_stop_dbgfs_fops);
++        if (!f) {
++                ipts_err(ipts, "debugfs ipts_stop creation failed\n");
++                goto err;
++        }
++
++        f = debugfs_create_file("ipts_start", S_IWUSR, dir,
++                                ipts, &ipts_ipts_start_dbgfs_fops);
++        if (!f) {
++                ipts_err(ipts, "debugfs ipts_start creation failed\n");
++                goto err;
++        }
++
 +	ipts->dbgfs_dir = dir;
 +
 +	return 0;
@@ -4744,10 +5045,10 @@ index 000000000000..db5356a1c84e
 +}
 diff --git a/drivers/misc/ipts/ipts-msg-handler.h b/drivers/misc/ipts/ipts-msg-handler.h
 new file mode 100644
-index 000000000000..15038814dfec
+index 000000000000..f37d9ad9af8c
 --- /dev/null
 +++ b/drivers/misc/ipts/ipts-msg-handler.h
-@@ -0,0 +1,32 @@
+@@ -0,0 +1,33 @@
 +/*
 + *
 + * Intel Precise Touch & Stylus ME message handler
@@ -4778,6 +5079,7 @@ index 000000000000..15038814dfec
 +int ipts_send_sensor_quiesce_io_cmd(ipts_info_t *ipts);
 +int ipts_send_sensor_hid_ready_for_data_cmd(ipts_info_t *ipts);
 +int ipts_send_sensor_clear_mem_window_cmd(ipts_info_t *ipts);
++int ipts_restart(ipts_info_t *ipts);
 +
 +#endif /* _IPTS_MSG_HANDLER_H */
 diff --git a/drivers/misc/ipts/ipts-resource.c b/drivers/misc/ipts/ipts-resource.c

+ 1 - 1
patches/5.2/0006-hid.patch

@@ -1,4 +1,4 @@
-From eb09d34d712ce43d1e49a7688fbd546b765a51e3 Mon Sep 17 00:00:00 2001
+From fa2a845d01e823ffadd8d6061f0ddcb0a8de09b1 Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Fri, 26 Jul 2019 04:45:42 +0200
 Subject: [PATCH 06/12] hid

+ 1 - 1
patches/5.2/0007-sdcard-reader.patch

@@ -1,4 +1,4 @@
-From cb930c106c5fc77a82b5618a90505969cad891d0 Mon Sep 17 00:00:00 2001
+From a9f00cceed704f4a4aa76f40ef4673b816080fa3 Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Fri, 26 Jul 2019 04:45:55 +0200
 Subject: [PATCH 07/12] sdcard-reader

+ 1 - 1
patches/5.2/0008-wifi.patch

@@ -1,4 +1,4 @@
-From 4ed9479cb2f70e1f70d0fad46f5e9520bcf5d343 Mon Sep 17 00:00:00 2001
+From e9907ea84cfb7bf1f9a817f3587fef598f18c4f1 Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Fri, 26 Jul 2019 04:46:16 +0200
 Subject: [PATCH 08/12] wifi

+ 1 - 1
patches/5.2/0009-surface3-power.patch

@@ -1,4 +1,4 @@
-From b86a410281265c14152d3389974b47948b4a2b3e Mon Sep 17 00:00:00 2001
+From 6a801441718660cc54b95de8dee4cf74c5e90c8c Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Fri, 26 Jul 2019 04:46:48 +0200
 Subject: [PATCH 09/12] surface3-power

+ 1 - 1
patches/5.2/0010-mwlwifi.patch

@@ -1,4 +1,4 @@
-From 2230abf98a6f22cc91e50f33c619c18a8e0acacb Mon Sep 17 00:00:00 2001
+From 16181905a434e631631ec7a404036a6dd8103c30 Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Fri, 26 Jul 2019 04:47:02 +0200
 Subject: [PATCH 10/12] mwlwifi

+ 1 - 1
patches/5.2/0011-surface-lte.patch

@@ -1,4 +1,4 @@
-From d5f08272b93c572c64ae545bfb7d690a0221f882 Mon Sep 17 00:00:00 2001
+From 1efb611bb6afb999ed05fb48406772a7b1d0ce29 Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Fri, 26 Jul 2019 04:47:13 +0200
 Subject: [PATCH 11/12] surface-lte

+ 1 - 1
patches/5.2/0012-surfacebook2-dgpu.patch

@@ -1,4 +1,4 @@
-From 4ddea969d6d0ecb6d55e95159cdd7d302c0fc2bd Mon Sep 17 00:00:00 2001
+From 52ba324703a43f17f8f1bde749daa3d29a654b9d Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Fri, 26 Jul 2019 04:47:27 +0200
 Subject: [PATCH 12/12] surfacebook2-dgpu