[media] media: i2c: Convert to devm_regulator_bulk_get()
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Thu, 2 May 2013 11:29:43 +0000 (08:29 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 21 May 2013 10:54:43 +0000 (07:54 -0300)
Using the managed function the regulator_bulk_put() calls can be removed
from the probe error path and the remove handler.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/i2c/m5mols/m5mols_core.c
drivers/media/i2c/noon010pc30.c

index f870d5057e3d87dc28865180082a8e29eca86293..11f6f871c372355a9a34f0d84b9f6758eb299dbc 100644 (file)
@@ -966,7 +966,8 @@ static int m5mols_probe(struct i2c_client *client,
                return ret;
        }
 
-       ret = regulator_bulk_get(&client->dev, ARRAY_SIZE(supplies), supplies);
+       ret = devm_regulator_bulk_get(&client->dev, ARRAY_SIZE(supplies),
+                                     supplies);
        if (ret) {
                dev_err(&client->dev, "Failed to get regulators: %d\n", ret);
                return ret;
@@ -981,7 +982,7 @@ static int m5mols_probe(struct i2c_client *client,
        info->pad.flags = MEDIA_PAD_FL_SOURCE;
        ret = media_entity_init(&sd->entity, 1, &info->pad, 0);
        if (ret < 0)
-               goto out_reg;
+               return ret;
        sd->entity.type = MEDIA_ENT_T_V4L2_SUBDEV_SENSOR;
 
        init_waitqueue_head(&info->irq_waitq);
@@ -1012,8 +1013,6 @@ out_irq:
        free_irq(client->irq, sd);
 out_me:
        media_entity_cleanup(&sd->entity);
-out_reg:
-       regulator_bulk_free(ARRAY_SIZE(supplies), supplies);
        return ret;
 }
 
@@ -1025,7 +1024,6 @@ static int m5mols_remove(struct i2c_client *client)
        v4l2_ctrl_handler_free(sd->ctrl_handler);
        free_irq(client->irq, sd);
 
-       regulator_bulk_free(ARRAY_SIZE(supplies), supplies);
        media_entity_cleanup(&sd->entity);
 
        return 0;
index 6f81b99ddd1ca04a7995bf6d50a2644a98cd088e..2284b02102dbf271b1d8d8e8a5c1e6548ce62e10 100644 (file)
@@ -772,7 +772,7 @@ static int noon010_probe(struct i2c_client *client,
        for (i = 0; i < NOON010_NUM_SUPPLIES; i++)
                info->supply[i].supply = noon010_supply_name[i];
 
-       ret = regulator_bulk_get(&client->dev, NOON010_NUM_SUPPLIES,
+       ret = devm_regulator_bulk_get(&client->dev, NOON010_NUM_SUPPLIES,
                                 info->supply);
        if (ret)
                goto np_err;
@@ -781,14 +781,12 @@ static int noon010_probe(struct i2c_client *client,
        sd->entity.type = MEDIA_ENT_T_V4L2_SUBDEV_SENSOR;
        ret = media_entity_init(&sd->entity, 1, &info->pad, 0);
        if (ret < 0)
-               goto np_me_err;
+               goto np_err;
 
        ret = noon010_detect(client, info);
        if (!ret)
                return 0;
 
-np_me_err:
-       regulator_bulk_free(NOON010_NUM_SUPPLIES, info->supply);
 np_err:
        v4l2_ctrl_handler_free(&info->hdl);
        v4l2_device_unregister_subdev(sd);
@@ -802,8 +800,6 @@ static int noon010_remove(struct i2c_client *client)
 
        v4l2_device_unregister_subdev(sd);
        v4l2_ctrl_handler_free(&info->hdl);
-
-       regulator_bulk_free(NOON010_NUM_SUPPLIES, info->supply);
        media_entity_cleanup(&sd->entity);
 
        return 0;