#include <linux/module.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/pci.h>
#include <linux/hwmon.h>
#include <linux/err.h>
#include <linux/mutex.h>
#include <asm/processor.h>
#define TEMP_FROM_REG(val) …
#define REG_TEMP …
#define SEL_PLACE …
#define SEL_CORE …
struct k8temp_data { … };
static const struct pci_device_id k8temp_ids[] = …;
MODULE_DEVICE_TABLE(pci, k8temp_ids);
static int is_rev_g_desktop(u8 model)
{ … }
static umode_t
k8temp_is_visible(const void *drvdata, enum hwmon_sensor_types type,
u32 attr, int channel)
{ … }
static int
k8temp_read(struct device *dev, enum hwmon_sensor_types type,
u32 attr, int channel, long *val)
{ … }
static const struct hwmon_ops k8temp_ops = …;
static const struct hwmon_channel_info * const k8temp_info[] = …;
static const struct hwmon_chip_info k8temp_chip_info = …;
static int k8temp_probe(struct pci_dev *pdev,
const struct pci_device_id *id)
{ … }
static struct pci_driver k8temp_driver = …;
module_pci_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;