#include <linux/delay.h>
#include <linux/err.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/regulator/coupler.h>
#include <linux/regulator/driver.h>
#include <linux/regulator/of_regulator.h>
#include <linux/sort.h>
#include "internal.h"
struct vctrl_voltage_range { … };
struct vctrl_voltage_ranges { … };
struct vctrl_voltage_table { … };
struct vctrl_data { … };
static int vctrl_calc_ctrl_voltage(struct vctrl_data *vctrl, int out_uV)
{ … }
static int vctrl_calc_output_voltage(struct vctrl_data *vctrl, int ctrl_uV)
{ … }
static int vctrl_get_voltage(struct regulator_dev *rdev)
{ … }
static int vctrl_set_voltage(struct regulator_dev *rdev,
int req_min_uV, int req_max_uV,
unsigned int *selector)
{ … }
static int vctrl_get_voltage_sel(struct regulator_dev *rdev)
{ … }
static int vctrl_set_voltage_sel(struct regulator_dev *rdev,
unsigned int selector)
{ … }
static int vctrl_list_voltage(struct regulator_dev *rdev,
unsigned int selector)
{ … }
static int vctrl_parse_dt(struct platform_device *pdev,
struct vctrl_data *vctrl)
{ … }
static int vctrl_cmp_ctrl_uV(const void *a, const void *b)
{ … }
static int vctrl_init_vtable(struct platform_device *pdev,
struct regulator *ctrl_reg)
{ … }
static int vctrl_enable(struct regulator_dev *rdev)
{ … }
static int vctrl_disable(struct regulator_dev *rdev)
{ … }
static int vctrl_is_enabled(struct regulator_dev *rdev)
{ … }
static const struct regulator_ops vctrl_ops_cont = …;
static const struct regulator_ops vctrl_ops_non_cont = …;
static int vctrl_probe(struct platform_device *pdev)
{ … }
static const struct of_device_id vctrl_of_match[] = …;
MODULE_DEVICE_TABLE(of, vctrl_of_match);
static struct platform_driver vctrl_driver = …;
module_platform_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;