#include <linux/interrupt.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/completion.h>
#include <linux/mfd/core.h>
const struct mfd_cell *cell;
struct platform_device *pdev;
struct completion read_completion;
static irqreturn_t jz4740_hwmon_irq(int irq, void *data)
struct jz4740_hwmon *hwmon = data;
complete(&hwmon->read_completion);
static ssize_t in0_input_show(struct device *dev,
struct device_attribute *dev_attr, char *buf)
struct jz4740_hwmon *hwmon = dev_get_drvdata(dev);
struct platform_device *pdev = hwmon->pdev;
struct completion *completion = &hwmon->read_completion;
mutex_lock(&hwmon->lock);
reinit_completion(completion);
hwmon->cell->enable(pdev);