platform/x86: alienware-wmi-wmax: Add a DebugFS interface
Add a debugfs interface which exposes thermal private data. Reviewed-by: Armin Wolf <W_Armin@gmx.de> Signed-off-by: Kurt Borja <kuurtb@gmail.com> Link: https://lore.kernel.org/r/20250329-hwm-v7-9-a14ea39d8a94@gmail.com Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>pull/982/merge
parent
07ac275981
commit
b028fb497c
|
|
@ -12,6 +12,7 @@
|
|||
#include <linux/bitfield.h>
|
||||
#include <linux/bitmap.h>
|
||||
#include <linux/bits.h>
|
||||
#include <linux/debugfs.h>
|
||||
#include <linux/dmi.h>
|
||||
#include <linux/hwmon.h>
|
||||
#include <linux/hwmon-sysfs.h>
|
||||
|
|
@ -20,6 +21,7 @@
|
|||
#include <linux/moduleparam.h>
|
||||
#include <linux/platform_profile.h>
|
||||
#include <linux/pm.h>
|
||||
#include <linux/seq_file.h>
|
||||
#include <linux/units.h>
|
||||
#include <linux/wmi.h>
|
||||
#include "alienware-wmi.h"
|
||||
|
|
@ -1259,6 +1261,92 @@ static int awcc_platform_profile_init(struct wmi_device *wdev)
|
|||
return PTR_ERR_OR_ZERO(priv->ppdev);
|
||||
}
|
||||
|
||||
/*
|
||||
* DebugFS
|
||||
*/
|
||||
static int awcc_debugfs_system_description_read(struct seq_file *seq, void *data)
|
||||
{
|
||||
struct device *dev = seq->private;
|
||||
struct awcc_priv *priv = dev_get_drvdata(dev);
|
||||
|
||||
seq_printf(seq, "0x%08x\n", priv->system_description);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int awcc_debugfs_hwmon_data_read(struct seq_file *seq, void *data)
|
||||
{
|
||||
struct device *dev = seq->private;
|
||||
struct awcc_priv *priv = dev_get_drvdata(dev);
|
||||
const struct awcc_fan_data *fan;
|
||||
unsigned int bit;
|
||||
|
||||
seq_printf(seq, "Number of fans: %u\n", priv->fan_count);
|
||||
seq_printf(seq, "Number of temperature sensors: %u\n\n", priv->temp_count);
|
||||
|
||||
for (u32 i = 0; i < priv->fan_count; i++) {
|
||||
fan = priv->fan_data[i];
|
||||
|
||||
seq_printf(seq, "Fan %u:\n", i);
|
||||
seq_printf(seq, " ID: 0x%02x\n", fan->id);
|
||||
seq_printf(seq, " Related temperature sensors bitmap: %lu\n",
|
||||
fan->auto_channels_temp);
|
||||
}
|
||||
|
||||
seq_puts(seq, "\nTemperature sensor IDs:\n");
|
||||
for_each_set_bit(bit, priv->temp_sensors, AWCC_ID_BITMAP_SIZE)
|
||||
seq_printf(seq, " 0x%02x\n", bit);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int awcc_debugfs_pprof_data_read(struct seq_file *seq, void *data)
|
||||
{
|
||||
struct device *dev = seq->private;
|
||||
struct awcc_priv *priv = dev_get_drvdata(dev);
|
||||
|
||||
seq_printf(seq, "Number of thermal profiles: %u\n\n", priv->profile_count);
|
||||
|
||||
for (u32 i = 0; i < PLATFORM_PROFILE_LAST; i++) {
|
||||
if (!priv->supported_profiles[i])
|
||||
continue;
|
||||
|
||||
seq_printf(seq, "Platform profile %u:\n", i);
|
||||
seq_printf(seq, " ID: 0x%02x\n", priv->supported_profiles[i]);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void awcc_debugfs_remove(void *data)
|
||||
{
|
||||
struct dentry *root = data;
|
||||
|
||||
debugfs_remove(root);
|
||||
}
|
||||
|
||||
static void awcc_debugfs_init(struct wmi_device *wdev)
|
||||
{
|
||||
struct dentry *root;
|
||||
char name[64];
|
||||
|
||||
scnprintf(name, sizeof(name), "%s-%s", "alienware-wmi", dev_name(&wdev->dev));
|
||||
root = debugfs_create_dir(name, NULL);
|
||||
|
||||
debugfs_create_devm_seqfile(&wdev->dev, "system_description", root,
|
||||
awcc_debugfs_system_description_read);
|
||||
|
||||
if (awcc->hwmon)
|
||||
debugfs_create_devm_seqfile(&wdev->dev, "hwmon_data", root,
|
||||
awcc_debugfs_hwmon_data_read);
|
||||
|
||||
if (awcc->pprof)
|
||||
debugfs_create_devm_seqfile(&wdev->dev, "pprof_data", root,
|
||||
awcc_debugfs_pprof_data_read);
|
||||
|
||||
devm_add_action_or_reset(&wdev->dev, awcc_debugfs_remove, root);
|
||||
}
|
||||
|
||||
static int alienware_awcc_setup(struct wmi_device *wdev)
|
||||
{
|
||||
struct awcc_priv *priv;
|
||||
|
|
@ -1297,6 +1385,8 @@ static int alienware_awcc_setup(struct wmi_device *wdev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
awcc_debugfs_init(wdev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue