mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-01-17 20:10:49 +00:00
Many chips require 64-bit variables to display the accumulated energy, even more so since the energy units are micro-Joule. Add new sensor type "energy64" to support reporting the chip energy as 64-bit values. Changing the entire hardware monitoring API is not feasible, and it is only really necessary to support reading 64-bit values for the "energyX_input" attribute. For this reason, keep the API as-is and use type casts on both ends to pass 64-bit pointers when reading the accumulated energy. On the write side (which is only useful for the energyX_enable attribute), keep passing the written value as long. Reviewed-by: Chris Packham <chris.packham@alliedtelesis.co.nz> Tested-by: Chris Packham <chris.packham@alliedtelesis.co.nz> # INA780 Signed-off-by: Guenter Roeck <linux@roeck-us.net>
72 lines
1.5 KiB
C
72 lines
1.5 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#undef TRACE_SYSTEM
|
|
#define TRACE_SYSTEM hwmon
|
|
|
|
#if !defined(_TRACE_HWMON_H) || defined(TRACE_HEADER_MULTI_READ)
|
|
#define _TRACE_HWMON_H
|
|
|
|
#include <linux/tracepoint.h>
|
|
|
|
DECLARE_EVENT_CLASS(hwmon_attr_class,
|
|
|
|
TP_PROTO(int index, const char *attr_name, long long val),
|
|
|
|
TP_ARGS(index, attr_name, val),
|
|
|
|
TP_STRUCT__entry(
|
|
__field(int, index)
|
|
__string(attr_name, attr_name)
|
|
__field(long long, val)
|
|
),
|
|
|
|
TP_fast_assign(
|
|
__entry->index = index;
|
|
__assign_str(attr_name);
|
|
__entry->val = val;
|
|
),
|
|
|
|
TP_printk("index=%d, attr_name=%s, val=%lld",
|
|
__entry->index, __get_str(attr_name), __entry->val)
|
|
);
|
|
|
|
DEFINE_EVENT(hwmon_attr_class, hwmon_attr_show,
|
|
|
|
TP_PROTO(int index, const char *attr_name, long long val),
|
|
|
|
TP_ARGS(index, attr_name, val)
|
|
);
|
|
|
|
DEFINE_EVENT(hwmon_attr_class, hwmon_attr_store,
|
|
|
|
TP_PROTO(int index, const char *attr_name, long long val),
|
|
|
|
TP_ARGS(index, attr_name, val)
|
|
);
|
|
|
|
TRACE_EVENT(hwmon_attr_show_string,
|
|
|
|
TP_PROTO(int index, const char *attr_name, const char *s),
|
|
|
|
TP_ARGS(index, attr_name, s),
|
|
|
|
TP_STRUCT__entry(
|
|
__field(int, index)
|
|
__string(attr_name, attr_name)
|
|
__string(label, s)
|
|
),
|
|
|
|
TP_fast_assign(
|
|
__entry->index = index;
|
|
__assign_str(attr_name);
|
|
__assign_str(label);
|
|
),
|
|
|
|
TP_printk("index=%d, attr_name=%s, val=%s",
|
|
__entry->index, __get_str(attr_name), __get_str(label))
|
|
);
|
|
|
|
#endif /* _TRACE_HWMON_H */
|
|
|
|
/* This part must be outside protection */
|
|
#include <trace/define_trace.h>
|