#include <linux/bitops.h>
#include <linux/completion.h>
#include <linux/interrupt.h>
#include <linux/mfd/intel_soc_pmic.h>
#include <linux/mfd/intel_soc_pmic_mrfld.h>
#include <linux/mod_devicetable.h>
#include <linux/module.h>
#include <linux/mutex.h>
#include <linux/platform_device.h>
#include <linux/regmap.h>
#include <linux/iio/driver.h>
#include <linux/iio/iio.h>
#include <linux/iio/machine.h>
#include <asm/unaligned.h>
#define BCOVE_GPADCREQ …
#define BCOVE_GPADCREQ_BUSY …
#define BCOVE_GPADCREQ_IRQEN …
#define BCOVE_ADCIRQ_ALL …
#define BCOVE_ADC_TIMEOUT …
static const u8 mrfld_adc_requests[] = …;
struct mrfld_adc { … };
static irqreturn_t mrfld_adc_thread_isr(int irq, void *data)
{ … }
static int mrfld_adc_single_conv(struct iio_dev *indio_dev,
struct iio_chan_spec const *chan,
int *result)
{ … }
static int mrfld_adc_read_raw(struct iio_dev *indio_dev,
struct iio_chan_spec const *chan,
int *val, int *val2, long mask)
{ … }
static const struct iio_info mrfld_adc_iio_info = …;
#define BCOVE_ADC_CHANNEL(_type, _channel, _datasheet_name, _address) …
static const struct iio_chan_spec mrfld_adc_channels[] = …;
static struct iio_map iio_maps[] = …;
static int mrfld_adc_probe(struct platform_device *pdev)
{ … }
static const struct platform_device_id mrfld_adc_id_table[] = …;
MODULE_DEVICE_TABLE(platform, mrfld_adc_id_table);
static struct platform_driver mrfld_adc_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;