#include <linux/err.h>
#include <linux/i2c.h>
#include <linux/mod_devicetable.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/regulator/driver.h>
#include <linux/regulator/machine.h>
#include <linux/regmap.h>
#include <linux/irq.h>
#include <linux/interrupt.h>
#include <linux/regulator/of_regulator.h>
#include "pv88080-regulator.h"
#define PV88080_MAX_REGULATORS …
enum { … };
struct pv88080_regulator { … };
struct pv88080 { … };
struct pv88080_buck_voltage { … };
struct pv88080_buck_regmap { … };
struct pv88080_compatible_regmap { … };
static const struct regmap_config pv88080_regmap_config = …;
static const unsigned int pv88080_buck1_limits[] = …;
static const unsigned int pv88080_buck23_limits[] = …;
static const struct pv88080_buck_voltage pv88080_buck_vol[2] = …;
static const struct pv88080_compatible_regmap pv88080_aa_regs = …;
static const struct pv88080_compatible_regmap pv88080_ba_regs = …;
static unsigned int pv88080_buck_get_mode(struct regulator_dev *rdev)
{ … }
static int pv88080_buck_set_mode(struct regulator_dev *rdev,
unsigned int mode)
{ … }
static const struct regulator_ops pv88080_buck_ops = …;
static const struct regulator_ops pv88080_hvbuck_ops = …;
#define PV88080_BUCK(chip, regl_name, min, step, max, limits_array) …
#define PV88080_HVBUCK(chip, regl_name, min, step, max) …
static struct pv88080_regulator pv88080_regulator_info[] = …;
static irqreturn_t pv88080_irq_handler(int irq, void *data)
{ … }
static int pv88080_i2c_probe(struct i2c_client *i2c)
{ … }
static const struct of_device_id pv88080_dt_ids[] = …;
MODULE_DEVICE_TABLE(of, pv88080_dt_ids);
static const struct i2c_device_id pv88080_i2c_id[] = …;
MODULE_DEVICE_TABLE(i2c, pv88080_i2c_id);
static struct i2c_driver pv88080_regulator_driver = …;
module_i2c_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;