i2c-pxa: only define 'blue_murder'-function if DEBUG is #defined
[safe/jmp/linux-2.6] / drivers / regulator / fixed.c
index ee3e7eb..2fe9d99 100644 (file)
@@ -25,6 +25,7 @@
 #include <linux/regulator/fixed.h>
 #include <linux/gpio.h>
 #include <linux/delay.h>
+#include <linux/slab.h>
 
 struct fixed_voltage_data {
        struct regulator_desc desc;
@@ -32,8 +33,8 @@ struct fixed_voltage_data {
        int microvolts;
        int gpio;
        unsigned startup_delay;
-       unsigned enable_high:1;
-       unsigned is_enabled:1;
+       bool enable_high;
+       bool is_enabled;
 };
 
 static int fixed_voltage_is_enabled(struct regulator_dev *dev)
@@ -49,9 +50,7 @@ static int fixed_voltage_enable(struct regulator_dev *dev)
 
        if (gpio_is_valid(data->gpio)) {
                gpio_set_value_cansleep(data->gpio, data->enable_high);
-               data->is_enabled = 1;
-               if (data->startup_delay)
-                       udelay(data->startup_delay);
+               data->is_enabled = true;
        }
 
        return 0;
@@ -63,12 +62,19 @@ static int fixed_voltage_disable(struct regulator_dev *dev)
 
        if (gpio_is_valid(data->gpio)) {
                gpio_set_value_cansleep(data->gpio, !data->enable_high);
-               data->is_enabled = 0;
+               data->is_enabled = false;
        }
 
        return 0;
 }
 
+static int fixed_voltage_enable_time(struct regulator_dev *dev)
+{
+       struct fixed_voltage_data *data = rdev_get_drvdata(dev);
+
+       return data->startup_delay;
+}
+
 static int fixed_voltage_get_voltage(struct regulator_dev *dev)
 {
        struct fixed_voltage_data *data = rdev_get_drvdata(dev);
@@ -91,11 +97,12 @@ static struct regulator_ops fixed_voltage_ops = {
        .is_enabled = fixed_voltage_is_enabled,
        .enable = fixed_voltage_enable,
        .disable = fixed_voltage_disable,
+       .enable_time = fixed_voltage_enable_time,
        .get_voltage = fixed_voltage_get_voltage,
        .list_voltage = fixed_voltage_list_voltage,
 };
 
-static int regulator_fixed_voltage_probe(struct platform_device *pdev)
+static int __devinit reg_fixed_voltage_probe(struct platform_device *pdev)
 {
        struct fixed_voltage_config *config = pdev->dev.platform_data;
        struct fixed_voltage_data *drvdata;
@@ -168,7 +175,7 @@ static int regulator_fixed_voltage_probe(struct platform_device *pdev)
                /* Regulator without GPIO control is considered
                 * always enabled
                 */
-               drvdata->is_enabled = 1;
+               drvdata->is_enabled = true;
        }
 
        drvdata->dev = regulator_register(&drvdata->desc, &pdev->dev,
@@ -196,7 +203,7 @@ err:
        return ret;
 }
 
-static int regulator_fixed_voltage_remove(struct platform_device *pdev)
+static int __devexit reg_fixed_voltage_remove(struct platform_device *pdev)
 {
        struct fixed_voltage_data *drvdata = platform_get_drvdata(pdev);
 
@@ -210,10 +217,11 @@ static int regulator_fixed_voltage_remove(struct platform_device *pdev)
 }
 
 static struct platform_driver regulator_fixed_voltage_driver = {
-       .probe          = regulator_fixed_voltage_probe,
-       .remove         = regulator_fixed_voltage_remove,
+       .probe          = reg_fixed_voltage_probe,
+       .remove         = __devexit_p(reg_fixed_voltage_remove),
        .driver         = {
                .name           = "reg-fixed-voltage",
+               .owner          = THIS_MODULE,
        },
 };