]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
lis3lv02d: make regulator API usage unconditional
authorMark Brown <broonie@opensource.wolfsonmicro.com>
Wed, 5 Oct 2011 00:43:23 +0000 (11:43 +1100)
committerStephen Rothwell <sfr@canb.auug.org.au>
Tue, 11 Oct 2011 08:43:59 +0000 (19:43 +1100)
The regulator API contains a range of features for stubbing itself out
when not in use and for transparently restricting the actual effect of
regulator API calls where they can't be supported on a particular system
so that drivers don't need to individually implement this.  Simplify the
driver slightly by making use of this idiom.

The only in tree user is ecovec24 which does not use the regulator API.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: Éric Piel <eric.piel@tremplin-utc.net>
Cc: Ilkka Koskinen <ilkka.koskinen@nokia.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
drivers/misc/lis3lv02d/lis3lv02d_i2c.c
include/linux/lis3lv02d.h

index 6cdc38f6a9a83f671d6030f23aef59911a84568d..c02fea029dcf1bcd971199eea32c9c79cb9fa0fc 100644 (file)
@@ -79,8 +79,7 @@ static int lis3_i2c_init(struct lis3lv02d *lis3)
        u8 reg;
        int ret;
 
-       if (lis3->reg_ctrl)
-               lis3_reg_ctrl(lis3, LIS3_REG_ON);
+       lis3_reg_ctrl(lis3, LIS3_REG_ON);
 
        lis3->read(lis3, WHO_AM_I, &reg);
        if (reg != lis3->whoami)
@@ -106,10 +105,6 @@ static int __devinit lis3lv02d_i2c_probe(struct i2c_client *client,
        struct lis3lv02d_platform_data *pdata = client->dev.platform_data;
 
        if (pdata) {
-               /* Regulator control is optional */
-               if (pdata->driver_features & LIS3_USE_REGULATOR_CTRL)
-                       lis3_dev.reg_ctrl = lis3_reg_ctrl;
-
                if ((pdata->driver_features & LIS3_USE_BLOCK_READ) &&
                        (i2c_check_functionality(client->adapter,
                                                I2C_FUNC_SMBUS_I2C_BLOCK)))
@@ -131,15 +126,13 @@ static int __devinit lis3lv02d_i2c_probe(struct i2c_client *client,
                        goto fail;
        }
 
-       if (lis3_dev.reg_ctrl) {
-               lis3_dev.regulators[0].supply = reg_vdd;
-               lis3_dev.regulators[1].supply = reg_vdd_io;
-               ret = regulator_bulk_get(&client->dev,
-                                       ARRAY_SIZE(lis3_dev.regulators),
-                                       lis3_dev.regulators);
-               if (ret < 0)
-                       goto fail;
-       }
+       lis3_dev.regulators[0].supply = reg_vdd;
+       lis3_dev.regulators[1].supply = reg_vdd_io;
+       ret = regulator_bulk_get(&client->dev,
+                                ARRAY_SIZE(lis3_dev.regulators),
+                                lis3_dev.regulators);
+       if (ret < 0)
+               goto fail;
 
        lis3_dev.pdata    = pdata;
        lis3_dev.bus_priv = client;
@@ -153,13 +146,11 @@ static int __devinit lis3lv02d_i2c_probe(struct i2c_client *client,
        i2c_set_clientdata(client, &lis3_dev);
 
        /* Provide power over the init call */
-       if (lis3_dev.reg_ctrl)
-               lis3_reg_ctrl(&lis3_dev, LIS3_REG_ON);
+       lis3_reg_ctrl(&lis3_dev, LIS3_REG_ON);
 
        ret = lis3lv02d_init_device(&lis3_dev);
 
-       if (lis3_dev.reg_ctrl)
-               lis3_reg_ctrl(&lis3_dev, LIS3_REG_OFF);
+       lis3_reg_ctrl(&lis3_dev, LIS3_REG_OFF);
 
        if (ret)
                goto fail2;
@@ -185,9 +176,8 @@ static int __devexit lis3lv02d_i2c_remove(struct i2c_client *client)
        lis3lv02d_joystick_disable(lis3);
        lis3lv02d_remove_fs(&lis3_dev);
 
-       if (lis3_dev.reg_ctrl)
-               regulator_bulk_free(ARRAY_SIZE(lis3->regulators),
-                               lis3_dev.regulators);
+       regulator_bulk_free(ARRAY_SIZE(lis3->regulators),
+                           lis3_dev.regulators);
        return 0;
 }
 
index d4292c8431e069a52e62431bfb47ecb8b39f84f1..f1664c636af096ef487f545a91ab8127bd625d71 100644 (file)
@@ -113,7 +113,6 @@ struct lis3lv02d_platform_data {
        s8 axis_x;
        s8 axis_y;
        s8 axis_z;
-#define LIS3_USE_REGULATOR_CTRL 0x01
 #define LIS3_USE_BLOCK_READ    0x02
        u16 driver_features;
        int default_rate;