#include <linux/device.h>
#include <linux/err.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/mod_devicetable.h>
#include <linux/regmap.h>
#include <linux/sysfs.h>
#include <linux/mfd/core.h>
#include <linux/mfd/motorola-cpcap.h>
#include <linux/spi/spi.h>
#define CPCAP_NR_IRQ_REG_BANKS …
#define CPCAP_NR_IRQ_CHIPS …
#define CPCAP_REGISTER_SIZE …
#define CPCAP_REGISTER_BITS …
struct cpcap_ddata { … };
static int cpcap_sense_irq(struct regmap *regmap, int irq)
{ … }
int cpcap_sense_virq(struct regmap *regmap, int virq)
{ … }
EXPORT_SYMBOL_GPL(…);
static int cpcap_check_revision(struct cpcap_ddata *cpcap)
{ … }
static struct regmap_irq_chip cpcap_irq_chip[CPCAP_NR_IRQ_CHIPS] = …;
static void cpcap_init_one_regmap_irq(struct cpcap_ddata *cpcap,
struct regmap_irq *rirq,
int irq_base, int irq)
{ … }
static int cpcap_init_irq_chip(struct cpcap_ddata *cpcap, int irq_chip,
int irq_start, int nr_irqs)
{ … }
static int cpcap_init_irq(struct cpcap_ddata *cpcap)
{ … }
static const struct of_device_id cpcap_of_match[] = …;
MODULE_DEVICE_TABLE(of, cpcap_of_match);
static const struct spi_device_id cpcap_spi_ids[] = …;
MODULE_DEVICE_TABLE(spi, cpcap_spi_ids);
static const struct regmap_config cpcap_regmap_config = …;
static int cpcap_suspend(struct device *dev)
{ … }
static int cpcap_resume(struct device *dev)
{ … }
static DEFINE_SIMPLE_DEV_PM_OPS(cpcap_pm, cpcap_suspend, cpcap_resume);
static const struct mfd_cell cpcap_mfd_devices[] = …;
static int cpcap_probe(struct spi_device *spi)
{ … }
static struct spi_driver cpcap_driver = …;
module_spi_driver(…) …;
MODULE_ALIAS(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;