nvmem: rockchip-otp: Improve probe error handling
[linux-2.6-microblaze.git] / drivers / nvmem / rockchip-otp.c
index 439aea1..84bf956 100644 (file)
@@ -235,10 +235,8 @@ static int rockchip_otp_probe(struct platform_device *pdev)
        int ret, i;
 
        data = of_device_get_match_data(dev);
-       if (!data) {
-               dev_err(dev, "failed to get match data\n");
-               return -EINVAL;
-       }
+       if (!data)
+               return dev_err_probe(dev, -EINVAL, "failed to get match data\n");
 
        otp = devm_kzalloc(&pdev->dev, sizeof(struct rockchip_otp),
                           GFP_KERNEL);
@@ -249,7 +247,8 @@ static int rockchip_otp_probe(struct platform_device *pdev)
        otp->dev = dev;
        otp->base = devm_platform_ioremap_resource(pdev, 0);
        if (IS_ERR(otp->base))
-               return PTR_ERR(otp->base);
+               return dev_err_probe(dev, PTR_ERR(otp->base),
+                                    "failed to ioremap resource\n");
 
        otp->clks = devm_kcalloc(dev, data->num_clks, sizeof(*otp->clks),
                                 GFP_KERNEL);
@@ -261,18 +260,22 @@ static int rockchip_otp_probe(struct platform_device *pdev)
 
        ret = devm_clk_bulk_get(dev, data->num_clks, otp->clks);
        if (ret)
-               return ret;
+               return dev_err_probe(dev, ret, "failed to get clocks\n");
 
        otp->rst = devm_reset_control_array_get_exclusive(dev);
        if (IS_ERR(otp->rst))
-               return PTR_ERR(otp->rst);
+               return dev_err_probe(dev, PTR_ERR(otp->rst),
+                                    "failed to get resets\n");
 
        otp_config.size = data->size;
        otp_config.priv = otp;
        otp_config.dev = dev;
-       nvmem = devm_nvmem_register(dev, &otp_config);
 
-       return PTR_ERR_OR_ZERO(nvmem);
+       nvmem = devm_nvmem_register(dev, &otp_config);
+       if (IS_ERR(nvmem))
+               return dev_err_probe(dev, PTR_ERR(nvmem),
+                                    "failed to register nvmem device\n");
+       return 0;
 }
 
 static struct platform_driver rockchip_otp_driver = {