#include <linux/device.h>
#include <linux/err.h>
#include <linux/i2c.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/mfd/as3711.h>
#include <linux/mfd/core.h>
#include <linux/of.h>
#include <linux/regmap.h>
#include <linux/slab.h>
enum { … };
static struct mfd_cell as3711_subdevs[] = …;
static bool as3711_volatile_reg(struct device *dev, unsigned int reg)
{ … }
static bool as3711_precious_reg(struct device *dev, unsigned int reg)
{ … }
static bool as3711_readable_reg(struct device *dev, unsigned int reg)
{ … }
static const struct regmap_config as3711_regmap_config = …;
#ifdef CONFIG_OF
static const struct of_device_id as3711_of_match[] = …;
#endif
static int as3711_i2c_probe(struct i2c_client *client)
{ … }
static const struct i2c_device_id as3711_i2c_id[] = …;
static struct i2c_driver as3711_i2c_driver = …;
static int __init as3711_i2c_init(void)
{ … }
subsys_initcall(as3711_i2c_init);