#include <linux/err.h>
#include <linux/i2c.h>
#include <linux/irq.h>
#include <linux/slab.h>
#include <linux/mutex.h>
#include <linux/module.h>
#include <linux/regmap.h>
#include <linux/mfd/core.h>
#include <linux/mfd/retu.h>
#include <linux/interrupt.h>
#include <linux/moduleparam.h>
#define RETU_REG_ASICR …
#define RETU_REG_ASICR_VILMA …
#define RETU_REG_IDR …
#define RETU_REG_IMR …
#define TAHVO_REG_IMR …
#define RETU_INT_PWR …
struct retu_dev { … };
static const struct resource retu_pwrbutton_res[] = …;
static const struct mfd_cell retu_devs[] = …;
static struct regmap_irq retu_irqs[] = …;
static struct regmap_irq_chip retu_irq_chip = …;
static struct retu_dev *retu_pm_power_off;
static const struct resource tahvo_usb_res[] = …;
static const struct mfd_cell tahvo_devs[] = …;
static struct regmap_irq tahvo_irqs[] = …;
static struct regmap_irq_chip tahvo_irq_chip = …;
static const struct retu_data { … } retu_data[] = …;
int retu_read(struct retu_dev *rdev, u8 reg)
{ … }
EXPORT_SYMBOL_GPL(…);
int retu_write(struct retu_dev *rdev, u8 reg, u16 data)
{ … }
EXPORT_SYMBOL_GPL(…);
static void retu_power_off(void)
{ … }
static int retu_regmap_read(void *context, const void *reg, size_t reg_size,
void *val, size_t val_size)
{ … }
static int retu_regmap_write(void *context, const void *data, size_t count)
{ … }
static struct regmap_bus retu_bus = …;
static const struct regmap_config retu_config = …;
static int retu_probe(struct i2c_client *i2c)
{ … }
static void retu_remove(struct i2c_client *i2c)
{ … }
static const struct i2c_device_id retu_id[] = …;
MODULE_DEVICE_TABLE(i2c, retu_id);
static const struct of_device_id retu_of_match[] = …;
MODULE_DEVICE_TABLE(of, retu_of_match);
static struct i2c_driver retu_driver = …;
module_i2c_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;