return -EPROBE_DEFER;
 
        vc5->regmap = devm_regmap_init_i2c(client, &vc5_regmap_config);
-       if (IS_ERR(vc5->regmap)) {
-               dev_err(&client->dev, "failed to allocate register map\n");
-               return PTR_ERR(vc5->regmap);
-       }
+       if (IS_ERR(vc5->regmap))
+               return dev_err_probe(&client->dev, PTR_ERR(vc5->regmap),
+                                    "failed to allocate register map\n");
 
        /* Register clock input mux */
        memset(&init, 0, sizeof(init));
                    __clk_get_name(vc5->pin_clkin);
        }
 
-       if (!init.num_parents) {
-               dev_err(&client->dev, "no input clock specified!\n");
-               return -EINVAL;
-       }
+       if (!init.num_parents)
+               return dev_err_probe(&client->dev, -EINVAL,
+                                    "no input clock specified!\n");
 
        /* Configure Optional Loading Capacitance for external XTAL */
        if (!(vc5->chip_info->flags & VC5_HAS_INTERNAL_XTAL)) {
 
        ret = of_clk_add_hw_provider(client->dev.of_node, vc5_of_clk_get, vc5);
        if (ret) {
-               dev_err(&client->dev, "unable to add clk provider\n");
+               dev_err_probe(&client->dev, ret,
+                             "unable to add clk provider\n");
                goto err_clk;
        }
 
        return 0;
 
 err_clk_register:
-       dev_err(&client->dev, "unable to register %s\n", init.name);
+       dev_err_probe(&client->dev, ret,
+                     "unable to register %s\n", init.name);
        kfree(init.name); /* clock framework made a copy of the name */
 err_clk:
        if (vc5->chip_info->flags & VC5_HAS_INTERNAL_XTAL)