#include <linux/debugfs.h>
#include <linux/device.h>
#include <linux/io.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/seq_file.h>
#include <linux/soc/qcom/smem.h>
#include <clocksource/arm_arch_timer.h>
#define RPM_DYNAMIC_ADDR …
#define RPM_DYNAMIC_ADDR_MASK …
#define STAT_TYPE_OFFSET …
#define COUNT_OFFSET …
#define LAST_ENTERED_AT_OFFSET …
#define LAST_EXITED_AT_OFFSET …
#define ACCUMULATED_OFFSET …
#define CLIENT_VOTES_OFFSET …
struct subsystem_data { … };
static const struct subsystem_data subsystems[] = …;
struct stats_config { … };
struct stats_data { … };
struct sleep_stats { … };
struct appended_stats { … };
static void qcom_print_stats(struct seq_file *s, const struct sleep_stats *stat)
{ … }
static int qcom_subsystem_sleep_stats_show(struct seq_file *s, void *unused)
{ … }
static int qcom_soc_sleep_stats_show(struct seq_file *s, void *unused)
{ … }
DEFINE_SHOW_ATTRIBUTE(…);
DEFINE_SHOW_ATTRIBUTE(…);
static void qcom_create_soc_sleep_stat_files(struct dentry *root, void __iomem *reg,
struct stats_data *d,
const struct stats_config *config)
{ … }
static void qcom_create_subsystem_stat_files(struct dentry *root,
const struct stats_config *config)
{ … }
static int qcom_stats_probe(struct platform_device *pdev)
{ … }
static void qcom_stats_remove(struct platform_device *pdev)
{ … }
static const struct stats_config rpm_data = …;
static const struct stats_config rpm_data_dba0 = …;
static const struct stats_config rpmh_data_sdm845 = …;
static const struct stats_config rpmh_data = …;
static const struct of_device_id qcom_stats_table[] = …;
MODULE_DEVICE_TABLE(of, qcom_stats_table);
static struct platform_driver qcom_stats = …;
static int __init qcom_stats_init(void)
{ … }
late_initcall(qcom_stats_init);
static void __exit qcom_stats_exit(void)
{ … }
module_exit(…)
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;