#include <linux/bitops.h>
#include <linux/slab.h>
#include <linux/hwmon.h>
#include <linux/stat.h>
#include "net_driver.h"
#include "mcdi.h"
#include "mcdi_pcol.h"
#include "nic.h"
enum efx_hwmon_type { … };
static const char *const efx_hwmon_unit[EFX_HWMON_TYPES_COUNT] = …;
static const struct { … } efx_mcdi_sensor_type[] = …;
static const char *const sensor_status_names[] = …;
void efx_siena_mcdi_sensor_event(struct efx_nic *efx, efx_qword_t *ev)
{ … }
#ifdef CONFIG_SFC_SIENA_MCDI_MON
struct efx_mcdi_mon_attribute { … };
static int efx_mcdi_mon_update(struct efx_nic *efx)
{ … }
static int efx_mcdi_mon_get_entry(struct device *dev, unsigned int index,
efx_dword_t *entry)
{ … }
static ssize_t efx_mcdi_mon_show_value(struct device *dev,
struct device_attribute *attr,
char *buf)
{ … }
static ssize_t efx_mcdi_mon_show_limit(struct device *dev,
struct device_attribute *attr,
char *buf)
{ … }
static ssize_t efx_mcdi_mon_show_alarm(struct device *dev,
struct device_attribute *attr,
char *buf)
{ … }
static ssize_t efx_mcdi_mon_show_label(struct device *dev,
struct device_attribute *attr,
char *buf)
{ … }
static void
efx_mcdi_mon_add_attr(struct efx_nic *efx, const char *name,
ssize_t (*reader)(struct device *,
struct device_attribute *, char *),
unsigned int index, unsigned int type,
unsigned int limit_value)
{ … }
int efx_siena_mcdi_mon_probe(struct efx_nic *efx)
{ … }
void efx_siena_mcdi_mon_remove(struct efx_nic *efx)
{ … }
#endif