#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>
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);
}
#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);
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);
return -ENODEV;
}
+ tpacpi_debugfs_init();
+
dmi_id = dmi_first_match(fwbug_list);
if (dmi_id)
tp_features.quirks = dmi_id->driver_data;