]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Merge remote-tracking branch 'regulator/topic/fixed' into regulator-next
authorMark Brown <broonie@linaro.org>
Wed, 23 Oct 2013 11:18:51 +0000 (12:18 +0100)
committerMark Brown <broonie@linaro.org>
Wed, 23 Oct 2013 11:18:51 +0000 (12:18 +0100)
drivers/regulator/core.c
drivers/regulator/fixed.c
include/linux/regulator/driver.h

index 916cadf45279289e1fc6b6106b7ff3f7ee580308..960103a6100041e008ce6793304c82299ca59b16 100644 (file)
@@ -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;
index 7610920014d789925368fd4316d35c1104fbf9ac..5ea64b94341c5f7a926b07d83536c9d4fe0dba32 100644 (file)
@@ -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;
 
index 779b877e0fa12de1331e3584694d82951a9476fc..c8b492c6b6a8a2693abbc5ae37c0befe92e61af3 100644 (file)
@@ -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;