#include <linux/bits.h>
#include <linux/gpio/consumer.h>
#include <linux/interrupt.h>
#include <linux/kernel.h>
#include <linux/mod_devicetable.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/regmap.h>
#include <linux/regulator/driver.h>
#include <linux/regulator/machine.h>
enum { … };
#define MT6370_REG_LDO_CFG …
#define MT6370_REG_LDO_VOUT …
#define MT6370_REG_DB_CTRL1 …
#define MT6370_REG_DB_CTRL2 …
#define MT6370_REG_DB_VBST …
#define MT6370_REG_DB_VPOS …
#define MT6370_REG_DB_VNEG …
#define MT6370_REG_LDO_STAT …
#define MT6370_REG_DB_STAT …
#define MT6370_LDOOMS_MASK …
#define MT6370_LDOEN_MASK …
#define MT6370_LDOVOUT_MASK …
#define MT6370_DBPERD_MASK …
#define MT6370_DBEXTEN_MASK …
#define MT6370_DBVPOSEN_MASK …
#define MT6370_DBVPOSDISG_MASK …
#define MT6370_DBVNEGEN_MASK …
#define MT6370_DBVNEGDISG_MASK …
#define MT6370_DBALLON_MASK …
#define MT6370_DBSLEW_MASK …
#define MT6370_DBVOUT_MASK …
#define MT6370_LDOOC_EVT_MASK …
#define MT6370_POSSCP_EVT_MASK …
#define MT6370_NEGSCP_EVT_MASK …
#define MT6370_BSTOCP_EVT_MASK …
#define MT6370_POSOCP_EVT_MASK …
#define MT6370_NEGOCP_EVT_MASK …
#define MT6370_LDO_MINUV …
#define MT6370_LDO_STPUV …
#define MT6370_LDO_N_VOLT …
#define MT6370_DBVBOOST_MINUV …
#define MT6370_DBVBOOST_STPUV …
#define MT6370_DBVBOOST_N_VOLT …
#define MT6370_DBVOUT_MINUV …
#define MT6370_DBVOUT_STPUV …
#define MT6370_DBVOUT_N_VOLT …
struct mt6370_priv { … };
static const unsigned int mt6370_vpos_ramp_tbl[] = …;
static const unsigned int mt6370_vneg_ramp_tbl[] = …;
static int mt6370_get_error_flags(struct regulator_dev *rdev,
unsigned int *flags)
{ … }
static const struct regulator_ops mt6370_dbvboost_ops = …;
static const struct regulator_ops mt6370_dbvout_ops = …;
static const struct regulator_ops mt6370_ldo_ops = …;
static int mt6370_of_parse_cb(struct device_node *np,
const struct regulator_desc *desc,
struct regulator_config *config)
{ … }
static const struct regulator_desc mt6370_regulator_descs[] = …;
static irqreturn_t mt6370_scp_handler(int irq, void *data)
{ … }
static irqreturn_t mt6370_ocp_handler(int irq, void *data)
{ … }
static int mt6370_regulator_irq_register(struct mt6370_priv *priv)
{ … }
static int mt6370_regualtor_register(struct mt6370_priv *priv)
{ … }
static int mt6370_regulator_probe(struct platform_device *pdev)
{ … }
static const struct platform_device_id mt6370_devid_table[] = …;
MODULE_DEVICE_TABLE(platform, mt6370_devid_table);
static struct platform_driver mt6370_regulator_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;