]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
PCI: dw-rockchip: Add error messages in .probe() error paths
authorUwe Kleine-König <ukleinek@debian.org>
Tue, 27 Feb 2024 14:12:54 +0000 (15:12 +0100)
committerBjorn Helgaas <bhelgaas@google.com>
Tue, 9 Jul 2024 23:28:37 +0000 (18:28 -0500)
Drivers that silently fail to probe provide a bad user experience and
make it unnecessarily hard to debug such a failure.

Fix it by using dev_err_probe() instead of a plain return.

[kwilczynski: commit log]
Link: https://lore.kernel.org/linux-pci/20240227141256.413055-2-ukleinek@debian.org
Signed-off-by: Uwe Kleine-König <ukleinek@debian.org>
Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Heiko Stuebner <heiko@sntech.de>
Reviewed-by: Jesper Nilsson <jesper.nilsson@axis.com>
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
drivers/pci/controller/dwc/pcie-dw-rockchip.c

index d6842141d384d9c7f25d0743457ffeb73f8f963a..a13ca83ce2609482835b3c4f2c81015e23261c7a 100644 (file)
@@ -225,11 +225,15 @@ static int rockchip_pcie_clk_init(struct rockchip_pcie *rockchip)
 
        ret = devm_clk_bulk_get_all(dev, &rockchip->clks);
        if (ret < 0)
-               return ret;
+               return dev_err_probe(dev, ret, "failed to get clocks\n");
 
        rockchip->clk_cnt = ret;
 
-       return clk_bulk_prepare_enable(rockchip->clk_cnt, rockchip->clks);
+       ret = clk_bulk_prepare_enable(rockchip->clk_cnt, rockchip->clks);
+       if (ret)
+               return dev_err_probe(dev, ret, "failed to enable clocks\n");
+
+       return 0;
 }
 
 static int rockchip_pcie_resource_get(struct platform_device *pdev,
@@ -237,12 +241,14 @@ static int rockchip_pcie_resource_get(struct platform_device *pdev,
 {
        rockchip->apb_base = devm_platform_ioremap_resource_byname(pdev, "apb");
        if (IS_ERR(rockchip->apb_base))
-               return PTR_ERR(rockchip->apb_base);
+               return dev_err_probe(&pdev->dev, PTR_ERR(rockchip->apb_base),
+                                    "failed to map apb registers\n");
 
        rockchip->rst_gpio = devm_gpiod_get_optional(&pdev->dev, "reset",
                                                     GPIOD_OUT_HIGH);
        if (IS_ERR(rockchip->rst_gpio))
-               return PTR_ERR(rockchip->rst_gpio);
+               return dev_err_probe(&pdev->dev, PTR_ERR(rockchip->rst_gpio),
+                                    "failed to get reset gpio\n");
 
        rockchip->rst = devm_reset_control_array_get_exclusive(&pdev->dev);
        if (IS_ERR(rockchip->rst))
@@ -320,10 +326,9 @@ static int rockchip_pcie_probe(struct platform_device *pdev)
                rockchip->vpcie3v3 = NULL;
        } else {
                ret = regulator_enable(rockchip->vpcie3v3);
-               if (ret) {
-                       dev_err(dev, "failed to enable vpcie3v3 regulator\n");
-                       return ret;
-               }
+               if (ret)
+                       return dev_err_probe(dev, ret,
+                                            "failed to enable vpcie3v3 regulator\n");
        }
 
        ret = rockchip_pcie_phy_init(rockchip);