Merge remote-tracking branch 'regulator/topic/fixed' into regulator-next
This commit is contained in:
commit
706664c290
|
@ -2582,6 +2582,8 @@ static int _regulator_get_voltage(struct regulator_dev *rdev)
|
|||
ret = rdev->desc->ops->get_voltage(rdev);
|
||||
} else if (rdev->desc->ops->list_voltage) {
|
||||
ret = rdev->desc->ops->list_voltage(rdev, 0);
|
||||
} else if (rdev->desc->fixed_uV && (rdev->desc->n_voltages == 1)) {
|
||||
ret = rdev->desc->fixed_uV;
|
||||
} else {
|
||||
return -EINVAL;
|
||||
}
|
||||
|
@ -3217,7 +3219,8 @@ static int add_regulator_attributes(struct regulator_dev *rdev)
|
|||
/* some attributes need specific methods to be displayed */
|
||||
if ((ops->get_voltage && ops->get_voltage(rdev) >= 0) ||
|
||||
(ops->get_voltage_sel && ops->get_voltage_sel(rdev) >= 0) ||
|
||||
(ops->list_voltage && ops->list_voltage(rdev, 0) >= 0)) {
|
||||
(ops->list_voltage && ops->list_voltage(rdev, 0) >= 0) ||
|
||||
(rdev->desc->fixed_uV && (rdev->desc->n_voltages == 1))) {
|
||||
status = device_create_file(dev, &dev_attr_microvolts);
|
||||
if (status < 0)
|
||||
return status;
|
||||
|
|
|
@ -34,7 +34,6 @@
|
|||
struct fixed_voltage_data {
|
||||
struct regulator_desc desc;
|
||||
struct regulator_dev *dev;
|
||||
int microvolts;
|
||||
};
|
||||
|
||||
|
||||
|
@ -108,30 +107,7 @@ of_get_fixed_voltage_config(struct device *dev)
|
|||
return config;
|
||||
}
|
||||
|
||||
static int fixed_voltage_get_voltage(struct regulator_dev *dev)
|
||||
{
|
||||
struct fixed_voltage_data *data = rdev_get_drvdata(dev);
|
||||
|
||||
if (data->microvolts)
|
||||
return data->microvolts;
|
||||
else
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static int fixed_voltage_list_voltage(struct regulator_dev *dev,
|
||||
unsigned selector)
|
||||
{
|
||||
struct fixed_voltage_data *data = rdev_get_drvdata(dev);
|
||||
|
||||
if (selector != 0)
|
||||
return -EINVAL;
|
||||
|
||||
return data->microvolts;
|
||||
}
|
||||
|
||||
static struct regulator_ops fixed_voltage_ops = {
|
||||
.get_voltage = fixed_voltage_get_voltage,
|
||||
.list_voltage = fixed_voltage_list_voltage,
|
||||
};
|
||||
|
||||
static int reg_fixed_voltage_probe(struct platform_device *pdev)
|
||||
|
@ -186,23 +162,21 @@ static int reg_fixed_voltage_probe(struct platform_device *pdev)
|
|||
if (config->microvolts)
|
||||
drvdata->desc.n_voltages = 1;
|
||||
|
||||
drvdata->microvolts = config->microvolts;
|
||||
drvdata->desc.fixed_uV = config->microvolts;
|
||||
|
||||
if (config->gpio >= 0)
|
||||
cfg.ena_gpio = config->gpio;
|
||||
cfg.ena_gpio_invert = !config->enable_high;
|
||||
if (config->enabled_at_boot) {
|
||||
if (config->enable_high) {
|
||||
if (config->enable_high)
|
||||
cfg.ena_gpio_flags |= GPIOF_OUT_INIT_HIGH;
|
||||
} else {
|
||||
else
|
||||
cfg.ena_gpio_flags |= GPIOF_OUT_INIT_LOW;
|
||||
}
|
||||
} else {
|
||||
if (config->enable_high) {
|
||||
if (config->enable_high)
|
||||
cfg.ena_gpio_flags |= GPIOF_OUT_INIT_LOW;
|
||||
} else {
|
||||
else
|
||||
cfg.ena_gpio_flags |= GPIOF_OUT_INIT_HIGH;
|
||||
}
|
||||
}
|
||||
if (config->gpio_is_open_drain)
|
||||
cfg.ena_gpio_flags |= GPIOF_OPEN_DRAIN;
|
||||
|
@ -222,7 +196,7 @@ static int reg_fixed_voltage_probe(struct platform_device *pdev)
|
|||
platform_set_drvdata(pdev, drvdata);
|
||||
|
||||
dev_dbg(&pdev->dev, "%s supplying %duV\n", drvdata->desc.name,
|
||||
drvdata->microvolts);
|
||||
drvdata->desc.fixed_uV);
|
||||
|
||||
return 0;
|
||||
|
||||
|
|
|
@ -209,6 +209,7 @@ enum regulator_type {
|
|||
* @min_uV: Voltage given by the lowest selector (if linear mapping)
|
||||
* @uV_step: Voltage increase with each selector (if linear mapping)
|
||||
* @linear_min_sel: Minimal selector for starting linear mapping
|
||||
* @fixed_uV: Fixed voltage of rails.
|
||||
* @ramp_delay: Time to settle down after voltage change (unit: uV/us)
|
||||
* @volt_table: Voltage mapping table (if table based mapping)
|
||||
*
|
||||
|
@ -241,6 +242,7 @@ struct regulator_desc {
|
|||
unsigned int min_uV;
|
||||
unsigned int uV_step;
|
||||
unsigned int linear_min_sel;
|
||||
int fixed_uV;
|
||||
unsigned int ramp_delay;
|
||||
|
||||
const struct regulator_linear_range *linear_ranges;
|
||||
|
|
Loading…
Reference in New Issue