dev_err_probe() can reduce code size, uniform error handling and record the
defer probe reason etc., use it to simplify the code.

Signed-off-by: Anson Huang <anson.hu...@nxp.com>
---
 drivers/iio/accel/mma8452.c | 20 ++++++--------------
 1 file changed, 6 insertions(+), 14 deletions(-)

diff --git a/drivers/iio/accel/mma8452.c b/drivers/iio/accel/mma8452.c
index ba27f86..9b5f23b 100644
--- a/drivers/iio/accel/mma8452.c
+++ b/drivers/iio/accel/mma8452.c
@@ -1538,22 +1538,14 @@ static int mma8452_probe(struct i2c_client *client,
        data->chip_info = match->data;
 
        data->vdd_reg = devm_regulator_get(&client->dev, "vdd");
-       if (IS_ERR(data->vdd_reg)) {
-               if (PTR_ERR(data->vdd_reg) == -EPROBE_DEFER)
-                       return -EPROBE_DEFER;
-
-               dev_err(&client->dev, "failed to get VDD regulator!\n");
-               return PTR_ERR(data->vdd_reg);
-       }
+       if (IS_ERR(data->vdd_reg))
+               return dev_err_probe(&client->dev, PTR_ERR(data->vdd_reg),
+                                    "failed to get VDD regulator!\n");
 
        data->vddio_reg = devm_regulator_get(&client->dev, "vddio");
-       if (IS_ERR(data->vddio_reg)) {
-               if (PTR_ERR(data->vddio_reg) == -EPROBE_DEFER)
-                       return -EPROBE_DEFER;
-
-               dev_err(&client->dev, "failed to get VDDIO regulator!\n");
-               return PTR_ERR(data->vddio_reg);
-       }
+       if (IS_ERR(data->vddio_reg))
+               return dev_err_probe(&client->dev, PTR_ERR(data->vddio_reg),
+                                    "failed to get VDDIO regulator!\n");
 
        ret = regulator_enable(data->vdd_reg);
        if (ret) {
-- 
2.7.4

Reply via email to