diff --git a/drivers/media/i2c/imx219.c b/drivers/media/i2c/imx219.c
index b3cbe9b7160775bd5c763e5a302893842d2c66a7..c400830f7da7ac1e54ca40ec29c8e945a780b0fe 100644
--- a/drivers/media/i2c/imx219.c
+++ b/drivers/media/i2c/imx219.c
@@ -1434,13 +1434,15 @@ static int imx219_probe(struct i2c_client *client)
 	v4l2_i2c_subdev_init(&imx219->sd, client, &imx219_subdev_ops);
 
 	/* Check the hardware configuration in device tree */
-	if (imx219_check_hwcfg(dev))
+	if (imx219_check_hwcfg(dev)) {
+		dev_err(dev, "imx219_check_hwcfg failed\n");
 		return -EINVAL;
+	}
 
 	/* Get system clock (xclk) */
 	imx219->xclk = devm_clk_get(dev, NULL);
 	if (IS_ERR(imx219->xclk)) {
-		dev_err(dev, "failed to get xclk\n");
+		dev_err(dev, "failed to get xclk (%ld)\n", PTR_ERR(imx219->xclk));
 		return PTR_ERR(imx219->xclk);
 	}
 
@@ -1466,12 +1468,16 @@ static int imx219_probe(struct i2c_client *client)
 	 * to be able to read the CHIP_ID register
 	 */
 	ret = imx219_power_on(dev);
-	if (ret)
+	if (ret) {
+		dev_err(dev, "failed to power on\n");
 		return ret;
+	}
 
 	ret = imx219_identify_module(imx219);
-	if (ret)
+	if (ret) {
+		dev_err(dev, "failed to identify module\n");
 		goto error_power_off;
+	}
 
 	/* Set default mode to max resolution */
 	imx219->mode = &supported_modes[0];
@@ -1494,8 +1500,10 @@ static int imx219_probe(struct i2c_client *client)
 	usleep_range(100, 110);
 
 	ret = imx219_init_controls(imx219);
-	if (ret)
+	if (ret) {
+		dev_err(dev, "failed to init controls\n");
 		goto error_power_off;
+	}
 
 	/* Initialize subdev */
 	imx219->sd.internal_ops = &imx219_internal_ops;