#include <linux/err.h>
#include <linux/of_gpio.h>
#include <linux/gpio/consumer.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/regulator/driver.h>
#include <linux/regulator/machine.h>
#include <linux/mfd/samsung/core.h>
#include <linux/mfd/samsung/s5m8767.h>
#include <linux/regulator/of_regulator.h>
#include <linux/regmap.h>
#define S5M8767_OPMODE_NORMAL_MODE …
struct s5m8767_info { … };
struct sec_voltage_desc { … };
static const struct sec_voltage_desc buck_voltage_val1 = …;
static const struct sec_voltage_desc buck_voltage_val2 = …;
static const struct sec_voltage_desc buck_voltage_val3 = …;
static const struct sec_voltage_desc ldo_voltage_val1 = …;
static const struct sec_voltage_desc ldo_voltage_val2 = …;
static const struct sec_voltage_desc *reg_voltage_map[] = …;
static const unsigned int s5m8767_opmode_reg[][4] = …;
static int s5m8767_get_register(struct s5m8767_info *s5m8767, int reg_id,
int *reg, int *enable_ctrl)
{ … }
static int s5m8767_get_vsel_reg(int reg_id, struct s5m8767_info *s5m8767)
{ … }
static int s5m8767_convert_voltage_to_sel(const struct sec_voltage_desc *desc,
int min_vol)
{ … }
static inline int s5m8767_set_high(struct s5m8767_info *s5m8767)
{ … }
static inline int s5m8767_set_low(struct s5m8767_info *s5m8767)
{ … }
static int s5m8767_set_voltage_sel(struct regulator_dev *rdev,
unsigned selector)
{ … }
static int s5m8767_set_voltage_time_sel(struct regulator_dev *rdev,
unsigned int old_sel,
unsigned int new_sel)
{ … }
static const struct regulator_ops s5m8767_ops = …;
static const struct regulator_ops s5m8767_buck78_ops = …;
#define s5m8767_regulator_desc(_name) …
#define s5m8767_regulator_buck78_desc(_name) …
static struct regulator_desc regulators[] = …;
static void s5m8767_regulator_config_ext_control(struct s5m8767_info *s5m8767,
struct sec_regulator_data *rdata,
struct regulator_config *config)
{ … }
static int s5m8767_enable_ext_control(struct s5m8767_info *s5m8767,
struct regulator_dev *rdev)
{ … }
#ifdef CONFIG_OF
static int s5m8767_pmic_dt_parse_dvs_gpio(struct sec_pmic_dev *iodev,
struct sec_platform_data *pdata,
struct device_node *pmic_np)
{ … }
static int s5m8767_pmic_dt_parse_ds_gpio(struct sec_pmic_dev *iodev,
struct sec_platform_data *pdata,
struct device_node *pmic_np)
{ … }
static int s5m8767_pmic_dt_parse_pdata(struct platform_device *pdev,
struct sec_platform_data *pdata)
{ … }
#else
static int s5m8767_pmic_dt_parse_pdata(struct platform_device *pdev,
struct sec_platform_data *pdata)
{
return 0;
}
#endif
static int s5m8767_pmic_probe(struct platform_device *pdev)
{ … }
static const struct platform_device_id s5m8767_pmic_id[] = …;
MODULE_DEVICE_TABLE(platform, s5m8767_pmic_id);
static struct platform_driver s5m8767_pmic_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;