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);
|
ret = rdev->desc->ops->get_voltage(rdev);
|
||||||
} else if (rdev->desc->ops->list_voltage) {
|
} else if (rdev->desc->ops->list_voltage) {
|
||||||
ret = rdev->desc->ops->list_voltage(rdev, 0);
|
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 {
|
} else {
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
@ -3217,7 +3219,8 @@ static int add_regulator_attributes(struct regulator_dev *rdev)
|
||||||
/* some attributes need specific methods to be displayed */
|
/* some attributes need specific methods to be displayed */
|
||||||
if ((ops->get_voltage && ops->get_voltage(rdev) >= 0) ||
|
if ((ops->get_voltage && ops->get_voltage(rdev) >= 0) ||
|
||||||
(ops->get_voltage_sel && ops->get_voltage_sel(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);
|
status = device_create_file(dev, &dev_attr_microvolts);
|
||||||
if (status < 0)
|
if (status < 0)
|
||||||
return status;
|
return status;
|
||||||
|
|
|
@ -34,7 +34,6 @@
|
||||||
struct fixed_voltage_data {
|
struct fixed_voltage_data {
|
||||||
struct regulator_desc desc;
|
struct regulator_desc desc;
|
||||||
struct regulator_dev *dev;
|
struct regulator_dev *dev;
|
||||||
int microvolts;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -108,30 +107,7 @@ of_get_fixed_voltage_config(struct device *dev)
|
||||||
return config;
|
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 = {
|
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)
|
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)
|
if (config->microvolts)
|
||||||
drvdata->desc.n_voltages = 1;
|
drvdata->desc.n_voltages = 1;
|
||||||
|
|
||||||
drvdata->microvolts = config->microvolts;
|
drvdata->desc.fixed_uV = config->microvolts;
|
||||||
|
|
||||||
if (config->gpio >= 0)
|
if (config->gpio >= 0)
|
||||||
cfg.ena_gpio = config->gpio;
|
cfg.ena_gpio = config->gpio;
|
||||||
cfg.ena_gpio_invert = !config->enable_high;
|
cfg.ena_gpio_invert = !config->enable_high;
|
||||||
if (config->enabled_at_boot) {
|
if (config->enabled_at_boot) {
|
||||||
if (config->enable_high) {
|
if (config->enable_high)
|
||||||
cfg.ena_gpio_flags |= GPIOF_OUT_INIT_HIGH;
|
cfg.ena_gpio_flags |= GPIOF_OUT_INIT_HIGH;
|
||||||
} else {
|
else
|
||||||
cfg.ena_gpio_flags |= GPIOF_OUT_INIT_LOW;
|
cfg.ena_gpio_flags |= GPIOF_OUT_INIT_LOW;
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
if (config->enable_high) {
|
if (config->enable_high)
|
||||||
cfg.ena_gpio_flags |= GPIOF_OUT_INIT_LOW;
|
cfg.ena_gpio_flags |= GPIOF_OUT_INIT_LOW;
|
||||||
} else {
|
else
|
||||||
cfg.ena_gpio_flags |= GPIOF_OUT_INIT_HIGH;
|
cfg.ena_gpio_flags |= GPIOF_OUT_INIT_HIGH;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (config->gpio_is_open_drain)
|
if (config->gpio_is_open_drain)
|
||||||
cfg.ena_gpio_flags |= GPIOF_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);
|
platform_set_drvdata(pdev, drvdata);
|
||||||
|
|
||||||
dev_dbg(&pdev->dev, "%s supplying %duV\n", drvdata->desc.name,
|
dev_dbg(&pdev->dev, "%s supplying %duV\n", drvdata->desc.name,
|
||||||
drvdata->microvolts);
|
drvdata->desc.fixed_uV);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
|
|
@ -209,6 +209,7 @@ enum regulator_type {
|
||||||
* @min_uV: Voltage given by the lowest selector (if linear mapping)
|
* @min_uV: Voltage given by the lowest selector (if linear mapping)
|
||||||
* @uV_step: Voltage increase with each selector (if linear mapping)
|
* @uV_step: Voltage increase with each selector (if linear mapping)
|
||||||
* @linear_min_sel: Minimal selector for starting 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)
|
* @ramp_delay: Time to settle down after voltage change (unit: uV/us)
|
||||||
* @volt_table: Voltage mapping table (if table based mapping)
|
* @volt_table: Voltage mapping table (if table based mapping)
|
||||||
*
|
*
|
||||||
|
@ -241,6 +242,7 @@ struct regulator_desc {
|
||||||
unsigned int min_uV;
|
unsigned int min_uV;
|
||||||
unsigned int uV_step;
|
unsigned int uV_step;
|
||||||
unsigned int linear_min_sel;
|
unsigned int linear_min_sel;
|
||||||
|
int fixed_uV;
|
||||||
unsigned int ramp_delay;
|
unsigned int ramp_delay;
|
||||||
|
|
||||||
const struct regulator_linear_range *linear_ranges;
|
const struct regulator_linear_range *linear_ranges;
|
||||||
|
|
Loading…
Reference in New Issue