#include <linux/err.h>
#include <linux/slab.h>
#include <linux/i2c.h>
#include <linux/of.h>
#include <linux/of_irq.h>
#include <linux/interrupt.h>
#include <linux/pm_runtime.h>
#include <linux/init.h>
#include <linux/mutex.h>
#include <linux/mfd/core.h>
#include <linux/mfd/max8997.h>
#include <linux/mfd/max8997-private.h>
#define I2C_ADDR_PMIC …
#define I2C_ADDR_MUIC …
#define I2C_ADDR_BATTERY …
#define I2C_ADDR_RTC …
#define I2C_ADDR_HAPTIC …
static const struct mfd_cell max8997_devs[] = …;
#ifdef CONFIG_OF
static const struct of_device_id max8997_pmic_dt_match[] = …;
#endif
int max8997_read_reg(struct i2c_client *i2c, u8 reg, u8 *dest)
{ … }
EXPORT_SYMBOL_GPL(…);
int max8997_bulk_read(struct i2c_client *i2c, u8 reg, int count, u8 *buf)
{ … }
EXPORT_SYMBOL_GPL(…);
int max8997_write_reg(struct i2c_client *i2c, u8 reg, u8 value)
{ … }
EXPORT_SYMBOL_GPL(…);
int max8997_bulk_write(struct i2c_client *i2c, u8 reg, int count, u8 *buf)
{ … }
EXPORT_SYMBOL_GPL(…);
int max8997_update_reg(struct i2c_client *i2c, u8 reg, u8 val, u8 mask)
{ … }
EXPORT_SYMBOL_GPL(…);
static struct max8997_platform_data *max8997_i2c_parse_dt_pdata(
struct device *dev)
{ … }
static int max8997_i2c_probe(struct i2c_client *i2c)
{ … }
static const struct i2c_device_id max8997_i2c_id[] = …;
static u8 max8997_dumpaddr_pmic[] = …;
static u8 max8997_dumpaddr_muic[] = …;
static u8 max8997_dumpaddr_haptic[] = …;
static int max8997_freeze(struct device *dev)
{ … }
static int max8997_restore(struct device *dev)
{ … }
static int max8997_suspend(struct device *dev)
{ … }
static int max8997_resume(struct device *dev)
{ … }
static const struct dev_pm_ops max8997_pm = …;
static struct i2c_driver max8997_i2c_driver = …;
static int __init max8997_i2c_init(void)
{ … }
subsys_initcall(max8997_i2c_init);