Loading drivers/regulator/core.c +4 −1 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading @@ -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; Loading drivers/regulator/fixed.c +6 −32 Original line number Diff line number Diff line Loading @@ -34,7 +34,6 @@ struct fixed_voltage_data { struct regulator_desc desc; struct regulator_dev *dev; int microvolts; }; Loading Loading @@ -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) Loading Loading @@ -186,24 +162,22 @@ 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; Loading @@ -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; Loading include/linux/regulator/driver.h +2 −0 Original line number Diff line number Diff line Loading @@ -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) * Loading Loading @@ -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 Loading
drivers/regulator/core.c +4 −1 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading @@ -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; Loading
drivers/regulator/fixed.c +6 −32 Original line number Diff line number Diff line Loading @@ -34,7 +34,6 @@ struct fixed_voltage_data { struct regulator_desc desc; struct regulator_dev *dev; int microvolts; }; Loading Loading @@ -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) Loading Loading @@ -186,24 +162,22 @@ 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; Loading @@ -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; Loading
include/linux/regulator/driver.h +2 −0 Original line number Diff line number Diff line Loading @@ -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) * Loading Loading @@ -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