Merge tag 'regulator-v5.1' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator
Pull regulator updates from Mark Brown: "The bulk of the standout changes in this release are cleanups, with the core work being a combination of factoring out common code into helpers and the completion of the conversion of the core to use GPIO descriptors. Summary: - Addition of helper functions for current limits and conversion of drivers to use them by Axel Lin. - Lots and lots of cleanups from Axel Lin. - Conversion of the core to use GPIO descriptors rather than numbers by Linus Walleij. - New drivers for Maxim MAX77650 and ROHM BD70528" * tag 'regulator-v5.1' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator: (131 commits) regulator: mc13xxx: Constify regulator_ops variables regulator: palmas: Constify palmas_smps_ramp_delay array regulator: wm831x-dcdc: Convert to use regulator_set/get_current_limit_regmap regulator: pv88090: Convert to use regulator_set/get_current_limit_regmap regulator: pv88080: Convert to use regulator_set/get_current_limit_regmap regulator: pv88060: Convert to use regulator_set/get_current_limit_regmap regulator: max77650: Convert to use regulator_set/get_current_limit_regmap regulator: lp873x: Convert to use regulator_set/get_current_limit_regmap regulator: lp872x: Convert to use regulator_set/get_current_limit_regmap regulator: da9210: Convert to use regulator_set/get_current_limit_regmap regulator: da9055: Convert to use regulator_set/get_current_limit_regmap regulator: core: Add set/get_current_limit helpers for regmap users regulator: Fix comment for csel_reg and csel_mask regulator: stm32-vrefbuf: add power management support regulator: 88pm8607: Remove unused fields from struct pm8607_regulator_info regulator: 88pm8607: Simplify pm8607_list_voltage implementation regulator: cpcap: Constify omap4_regulators and xoom_regulators regulator: cpcap: Remove unused vsel_shift from struct cpcap_regulator dt-bindings: regulator: tps65218: rectify units of LS3 dt-bindings: regulator: add LS2 load switch documentation ...
This commit is contained in:
@@ -208,6 +208,7 @@ enum tps65218_regulator_id {
|
||||
/* LDOs */
|
||||
TPS65218_LDO_1,
|
||||
/* LS's */
|
||||
TPS65218_LS_2,
|
||||
TPS65218_LS_3,
|
||||
};
|
||||
|
||||
@@ -218,7 +219,7 @@ enum tps65218_regulator_id {
|
||||
/* Number of LDO voltage regulators available */
|
||||
#define TPS65218_NUM_LDO 1
|
||||
/* Number of total LS current regulators available */
|
||||
#define TPS65218_NUM_LS 1
|
||||
#define TPS65218_NUM_LS 2
|
||||
/* Number of total regulators available */
|
||||
#define TPS65218_NUM_REGULATOR (TPS65218_NUM_DCDC + TPS65218_NUM_LDO \
|
||||
+ TPS65218_NUM_LS)
|
||||
|
@@ -264,6 +264,7 @@ enum regulator_type {
|
||||
* @continuous_voltage_range: Indicates if the regulator can set any
|
||||
* voltage within constrains range.
|
||||
* @n_voltages: Number of selectors available for ops.list_voltage().
|
||||
* @n_current_limits: Number of selectors available for current limits
|
||||
*
|
||||
* @min_uV: Voltage given by the lowest selector (if linear mapping)
|
||||
* @uV_step: Voltage increase with each selector (if linear mapping)
|
||||
@@ -278,14 +279,15 @@ enum regulator_type {
|
||||
* @n_linear_ranges: Number of entries in the @linear_ranges (and in
|
||||
* linear_range_selectors if used) table(s).
|
||||
* @volt_table: Voltage mapping table (if table based mapping)
|
||||
* @curr_table: Current limit mapping table (if table based mapping)
|
||||
*
|
||||
* @vsel_range_reg: Register for range selector when using pickable ranges
|
||||
* and regulator_regmap_X_voltage_X_pickable functions.
|
||||
* @vsel_range_mask: Mask for register bitfield used for range selector
|
||||
* @vsel_reg: Register for selector when using regulator_regmap_X_voltage_
|
||||
* @vsel_mask: Mask for register bitfield used for selector
|
||||
* @csel_reg: Register for TPS65218 LS3 current regulator
|
||||
* @csel_mask: Mask for TPS65218 LS3 current regulator
|
||||
* @csel_reg: Register for current limit selector using regmap set_current_limit
|
||||
* @csel_mask: Mask for register bitfield used for current limit selector
|
||||
* @apply_reg: Register for initiate voltage change on the output when
|
||||
* using regulator_set_voltage_sel_regmap
|
||||
* @apply_bit: Register bitfield used for initiate voltage change on the
|
||||
@@ -333,6 +335,7 @@ struct regulator_desc {
|
||||
int id;
|
||||
unsigned int continuous_voltage_range:1;
|
||||
unsigned n_voltages;
|
||||
unsigned int n_current_limits;
|
||||
const struct regulator_ops *ops;
|
||||
int irq;
|
||||
enum regulator_type type;
|
||||
@@ -351,6 +354,7 @@ struct regulator_desc {
|
||||
int n_linear_ranges;
|
||||
|
||||
const unsigned int *volt_table;
|
||||
const unsigned int *curr_table;
|
||||
|
||||
unsigned int vsel_range_reg;
|
||||
unsigned int vsel_range_mask;
|
||||
@@ -401,13 +405,7 @@ struct regulator_desc {
|
||||
* NULL).
|
||||
* @regmap: regmap to use for core regmap helpers if dev_get_regmap() is
|
||||
* insufficient.
|
||||
* @ena_gpio_initialized: GPIO controlling regulator enable was properly
|
||||
* initialized, meaning that >= 0 is a valid gpio
|
||||
* identifier and < 0 is a non existent gpio.
|
||||
* @ena_gpio: GPIO controlling regulator enable.
|
||||
* @ena_gpiod: GPIO descriptor controlling regulator enable.
|
||||
* @ena_gpio_invert: Sense for GPIO enable control.
|
||||
* @ena_gpio_flags: Flags to use when calling gpio_request_one()
|
||||
* @ena_gpiod: GPIO controlling regulator enable.
|
||||
*/
|
||||
struct regulator_config {
|
||||
struct device *dev;
|
||||
@@ -416,11 +414,7 @@ struct regulator_config {
|
||||
struct device_node *of_node;
|
||||
struct regmap *regmap;
|
||||
|
||||
bool ena_gpio_initialized;
|
||||
int ena_gpio;
|
||||
struct gpio_desc *ena_gpiod;
|
||||
unsigned int ena_gpio_invert:1;
|
||||
unsigned int ena_gpio_flags;
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -503,6 +497,7 @@ int regulator_notifier_call_chain(struct regulator_dev *rdev,
|
||||
|
||||
void *rdev_get_drvdata(struct regulator_dev *rdev);
|
||||
struct device *rdev_get_dev(struct regulator_dev *rdev);
|
||||
struct regmap *rdev_get_regmap(struct regulator_dev *rdev);
|
||||
int rdev_get_id(struct regulator_dev *rdev);
|
||||
|
||||
int regulator_mode_to_status(unsigned int);
|
||||
@@ -543,9 +538,18 @@ int regulator_set_pull_down_regmap(struct regulator_dev *rdev);
|
||||
|
||||
int regulator_set_active_discharge_regmap(struct regulator_dev *rdev,
|
||||
bool enable);
|
||||
int regulator_set_current_limit_regmap(struct regulator_dev *rdev,
|
||||
int min_uA, int max_uA);
|
||||
int regulator_get_current_limit_regmap(struct regulator_dev *rdev);
|
||||
void *regulator_get_init_drvdata(struct regulator_init_data *reg_init_data);
|
||||
|
||||
void regulator_lock(struct regulator_dev *rdev);
|
||||
void regulator_unlock(struct regulator_dev *rdev);
|
||||
|
||||
/*
|
||||
* Helper functions intended to be used by regulator drivers prior registering
|
||||
* their regulators.
|
||||
*/
|
||||
int regulator_desc_list_voltage_linear_range(const struct regulator_desc *desc,
|
||||
unsigned int selector);
|
||||
#endif
|
||||
|
@@ -25,14 +25,6 @@ struct regulator_init_data;
|
||||
* @input_supply: Name of the input regulator supply
|
||||
* @microvolts: Output voltage of regulator
|
||||
* @startup_delay: Start-up time in microseconds
|
||||
* @gpio_is_open_drain: Gpio pin is open drain or normal type.
|
||||
* If it is open drain type then HIGH will be set
|
||||
* through PULL-UP with setting gpio as input
|
||||
* and low will be set as gpio-output with driven
|
||||
* to low. For non-open-drain case, the gpio will
|
||||
* will be in output and drive to low/high accordingly.
|
||||
* @enable_high: Polarity of enable GPIO
|
||||
* 1 = Active high, 0 = Active low
|
||||
* @enabled_at_boot: Whether regulator has been enabled at
|
||||
* boot or not. 1 = Yes, 0 = No
|
||||
* This is used to keep the regulator at
|
||||
@@ -48,8 +40,6 @@ struct fixed_voltage_config {
|
||||
const char *input_supply;
|
||||
int microvolts;
|
||||
unsigned startup_delay;
|
||||
unsigned gpio_is_open_drain:1;
|
||||
unsigned enable_high:1;
|
||||
unsigned enabled_at_boot:1;
|
||||
struct regulator_init_data *init_data;
|
||||
};
|
||||
|
@@ -21,6 +21,8 @@
|
||||
#ifndef __REGULATOR_GPIO_H
|
||||
#define __REGULATOR_GPIO_H
|
||||
|
||||
#include <linux/gpio/consumer.h>
|
||||
|
||||
struct regulator_init_data;
|
||||
|
||||
enum regulator_type;
|
||||
@@ -44,18 +46,14 @@ struct gpio_regulator_state {
|
||||
/**
|
||||
* struct gpio_regulator_config - config structure
|
||||
* @supply_name: Name of the regulator supply
|
||||
* @enable_gpio: GPIO to use for enable control
|
||||
* set to -EINVAL if not used
|
||||
* @enable_high: Polarity of enable GPIO
|
||||
* 1 = Active high, 0 = Active low
|
||||
* @enabled_at_boot: Whether regulator has been enabled at
|
||||
* boot or not. 1 = Yes, 0 = No
|
||||
* This is used to keep the regulator at
|
||||
* the default state
|
||||
* @startup_delay: Start-up time in microseconds
|
||||
* @gpios: Array containing the gpios needed to control
|
||||
* the setting of the regulator
|
||||
* @nr_gpios: Number of gpios
|
||||
* @gflags: Array of GPIO configuration flags for initial
|
||||
* states
|
||||
* @ngpios: Number of GPIOs and configurations available
|
||||
* @states: Array of gpio_regulator_state entries describing
|
||||
* the gpio state for specific voltages
|
||||
* @nr_states: Number of states available
|
||||
@@ -69,13 +67,11 @@ struct gpio_regulator_state {
|
||||
struct gpio_regulator_config {
|
||||
const char *supply_name;
|
||||
|
||||
int enable_gpio;
|
||||
unsigned enable_high:1;
|
||||
unsigned enabled_at_boot:1;
|
||||
unsigned startup_delay;
|
||||
|
||||
struct gpio *gpios;
|
||||
int nr_gpios;
|
||||
enum gpiod_flags *gflags;
|
||||
int ngpios;
|
||||
|
||||
struct gpio_regulator_state *states;
|
||||
int nr_states;
|
||||
|
Reference in New Issue
Block a user