linux/drivers/regulator/wm831x-dcdc.c

// SPDX-License-Identifier: GPL-2.0+
//
// wm831x-dcdc.c  --  DC-DC buck converter driver for the WM831x series
//
// Copyright 2009 Wolfson Microelectronics PLC.
//
// Author: Mark Brown <[email protected]>

#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/init.h>
#include <linux/bitops.h>
#include <linux/err.h>
#include <linux/i2c.h>
#include <linux/platform_device.h>
#include <linux/regulator/driver.h>
#include <linux/regulator/machine.h>
#include <linux/gpio/consumer.h>
#include <linux/slab.h>

#include <linux/mfd/wm831x/core.h>
#include <linux/mfd/wm831x/regulator.h>
#include <linux/mfd/wm831x/pdata.h>

#define WM831X_BUCKV_MAX_SELECTOR
#define WM831X_BUCKP_MAX_SELECTOR

#define WM831X_DCDC_MODE_FAST
#define WM831X_DCDC_MODE_NORMAL
#define WM831X_DCDC_MODE_IDLE
#define WM831X_DCDC_MODE_STANDBY

#define WM831X_DCDC_MAX_NAME

/* Register offsets in control block */
#define WM831X_DCDC_CONTROL_1
#define WM831X_DCDC_CONTROL_2
#define WM831X_DCDC_ON_CONFIG
#define WM831X_DCDC_SLEEP_CONTROL
#define WM831X_DCDC_DVS_CONTROL

/*
 * Shared
 */

struct wm831x_dcdc {};

static unsigned int wm831x_dcdc_get_mode(struct regulator_dev *rdev)

{}

static int wm831x_dcdc_set_mode_int(struct wm831x *wm831x, int reg,
				    unsigned int mode)
{}

static int wm831x_dcdc_set_mode(struct regulator_dev *rdev, unsigned int mode)
{}

static int wm831x_dcdc_set_suspend_mode(struct regulator_dev *rdev,
					unsigned int mode)
{}

static int wm831x_dcdc_get_status(struct regulator_dev *rdev)
{}

static irqreturn_t wm831x_dcdc_uv_irq(int irq, void *data)
{}

static irqreturn_t wm831x_dcdc_oc_irq(int irq, void *data)
{}

/*
 * BUCKV specifics
 */

static const struct linear_range wm831x_buckv_ranges[] =;

static int wm831x_buckv_set_dvs(struct regulator_dev *rdev, int state)
{}

static int wm831x_buckv_set_voltage_sel(struct regulator_dev *rdev,
					unsigned vsel)
{}

static int wm831x_buckv_set_suspend_voltage(struct regulator_dev *rdev,
					    int uV)
{}

static int wm831x_buckv_get_voltage_sel(struct regulator_dev *rdev)
{}

/* Current limit options */
static const unsigned int wm831x_dcdc_ilim[] =;

static const struct regulator_ops wm831x_buckv_ops =;

/*
 * Set up DVS control.  We just log errors since we can still run
 * (with reduced performance) if we fail.
 */
static void wm831x_buckv_dvs_init(struct platform_device *pdev,
				  struct wm831x_dcdc *dcdc,
				  struct wm831x_buckv_pdata *pdata)
{}

static int wm831x_buckv_probe(struct platform_device *pdev)
{}

static struct platform_driver wm831x_buckv_driver =;

/*
 * BUCKP specifics
 */

static int wm831x_buckp_set_suspend_voltage(struct regulator_dev *rdev, int uV)
{}

static const struct regulator_ops wm831x_buckp_ops =;

static int wm831x_buckp_probe(struct platform_device *pdev)
{}

static struct platform_driver wm831x_buckp_driver =;

/*
 * DCDC boost convertors
 */

static int wm831x_boostp_get_status(struct regulator_dev *rdev)
{}

static const struct regulator_ops wm831x_boostp_ops =;

static int wm831x_boostp_probe(struct platform_device *pdev)
{}

static struct platform_driver wm831x_boostp_driver =;

/*
 * External Power Enable
 *
 * These aren't actually DCDCs but look like them in hardware so share
 * code.
 */

#define WM831X_EPE_BASE

static const struct regulator_ops wm831x_epe_ops =;

static int wm831x_epe_probe(struct platform_device *pdev)
{}

static struct platform_driver wm831x_epe_driver =;

static struct platform_driver * const drivers[] =;

static int __init wm831x_dcdc_init(void)
{}
subsys_initcall(wm831x_dcdc_init);

static void __exit wm831x_dcdc_exit(void)
{}
module_exit(wm831x_dcdc_exit);

/* Module information */
MODULE_AUTHOR();
MODULE_DESCRIPTION();
MODULE_LICENSE();
MODULE_ALIAS();
MODULE_ALIAS();
MODULE_ALIAS();
MODULE_ALIAS();