#include <linux/err.h>
#include <linux/gpio/consumer.h>
#include <linux/i2c.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/regmap.h>
#include <linux/regulator/driver.h>
#include <linux/regulator/machine.h>
#include <linux/regulator/of_regulator.h>
#include "slg51000-regulator.h"
#define SLG51000_SCTL_EVT …
#define SLG51000_MAX_EVT_REGISTER …
#define SLG51000_LDOHP_LV_MIN …
#define SLG51000_LDOHP_HV_MIN …
enum slg51000_regulators { … };
struct slg51000 { … };
struct slg51000_evt_sta { … };
static const struct slg51000_evt_sta es_reg[SLG51000_MAX_EVT_REGISTER] = …;
static const struct regmap_range slg51000_writeable_ranges[] = …;
static const struct regmap_range slg51000_readable_ranges[] = …;
static const struct regmap_range slg51000_volatile_ranges[] = …;
static const struct regmap_access_table slg51000_writeable_table = …;
static const struct regmap_access_table slg51000_readable_table = …;
static const struct regmap_access_table slg51000_volatile_table = …;
static const struct regmap_config slg51000_regmap_config = …;
static const struct regulator_ops slg51000_regl_ops = …;
static const struct regulator_ops slg51000_switch_ops = …;
static int slg51000_of_parse_cb(struct device_node *np,
const struct regulator_desc *desc,
struct regulator_config *config)
{ … }
#define SLG51000_REGL_DESC(_id, _name, _s_name, _min, _step) …
static struct regulator_desc regls_desc[SLG51000_MAX_REGULATORS] = …;
static int slg51000_regulator_init(struct slg51000 *chip)
{ … }
static irqreturn_t slg51000_irq_handler(int irq, void *data)
{ … }
static void slg51000_clear_fault_log(struct slg51000 *chip)
{ … }
static int slg51000_i2c_probe(struct i2c_client *client)
{ … }
static const struct i2c_device_id slg51000_i2c_id[] = …;
MODULE_DEVICE_TABLE(i2c, slg51000_i2c_id);
static struct i2c_driver slg51000_regulator_driver = …;
module_i2c_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;