mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 01:55:51 +02:00
platform/x86: thinkpad_acpi: Add debugfs entry to display HWDD raw
The Lenovo diagnostics and support team have requested a mechanism to get the raw data from the HWDD commands to support customer debug situations. Add a debugfs entry to display the HWDD raw data. Signed-off-by: Mark Pearson <mpearson-lenovo@squebb.ca> Link: https://patch.msgid.link/20260429015210.1863316-1-mpearson-lenovo@squebb.ca Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
This commit is contained in:
parent
8ef6b01cee
commit
165e81354e
|
|
@ -38,6 +38,7 @@
|
|||
#include <linux/backlight.h>
|
||||
#include <linux/bitfield.h>
|
||||
#include <linux/bitops.h>
|
||||
#include <linux/debugfs.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/dmi.h>
|
||||
#include <linux/freezer.h>
|
||||
|
|
@ -11216,6 +11217,26 @@ static ssize_t hwdd_status_show(struct device *dev,
|
|||
|
||||
return sysfs_emit(buf, "0\n");
|
||||
}
|
||||
|
||||
/* sysfs type-c damage detection raw data - accessed via debugfs*/
|
||||
static int hwdd_raw_show(struct seq_file *m, void *v)
|
||||
{
|
||||
unsigned int damage_status;
|
||||
int err;
|
||||
|
||||
if (!ucdd_supported)
|
||||
return -ENODEV;
|
||||
|
||||
/* Get USB TYPE-C damage status */
|
||||
err = hwdd_command(HWDD_GET_DMG_USBC, &damage_status);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
seq_printf(m, "HWDD: 0x%x\n", damage_status);
|
||||
return 0;
|
||||
}
|
||||
DEFINE_SHOW_ATTRIBUTE(hwdd_raw);
|
||||
|
||||
static DEVICE_ATTR_RO(hwdd_status);
|
||||
static DEVICE_ATTR_RO(hwdd_detail);
|
||||
|
||||
|
|
@ -11503,6 +11524,20 @@ static const char * __init str_supported(int is_supported)
|
|||
}
|
||||
#endif /* CONFIG_THINKPAD_ACPI_DEBUG */
|
||||
|
||||
static struct dentry *tpacpi_dbg;
|
||||
static void tpacpi_debugfs_init(void)
|
||||
{
|
||||
tpacpi_dbg = debugfs_create_dir("tpacpi", NULL);
|
||||
|
||||
/* HWDD raw data */
|
||||
debugfs_create_file("hwdd-raw", 0444, tpacpi_dbg, NULL, &hwdd_raw_fops);
|
||||
}
|
||||
|
||||
static void tpacpi_debugfs_remove(void)
|
||||
{
|
||||
debugfs_remove_recursive(tpacpi_dbg);
|
||||
}
|
||||
|
||||
static void ibm_exit(struct ibm_struct *ibm)
|
||||
{
|
||||
dbg_printk(TPACPI_DBG_EXIT, "removing %s\n", ibm->name);
|
||||
|
|
@ -12067,6 +12102,8 @@ static void thinkpad_acpi_module_exit(void)
|
|||
remove_proc_entry(TPACPI_PROC_DIR, acpi_root_dir);
|
||||
if (tpacpi_wq)
|
||||
destroy_workqueue(tpacpi_wq);
|
||||
if (tpacpi_dbg)
|
||||
tpacpi_debugfs_remove();
|
||||
|
||||
kfree(thinkpad_id.bios_version_str);
|
||||
kfree(thinkpad_id.ec_version_str);
|
||||
|
|
@ -12197,6 +12234,8 @@ static int __init thinkpad_acpi_module_init(void)
|
|||
return -ENODEV;
|
||||
}
|
||||
|
||||
tpacpi_debugfs_init();
|
||||
|
||||
dmi_id = dmi_first_match(fwbug_list);
|
||||
if (dmi_id)
|
||||
tp_features.quirks = dmi_id->driver_data;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user