Re: [PATCH 4/5] PCI: dwc: rcar-gen4: Handle PERST via reset subsystem

From: Marek Vasut

Date: Sun Jul 19 2026 - 23:03:31 EST


On 7/14/26 5:07 PM, Geert Uytterhoeven wrote:

Hello Geert,

+++ b/drivers/pci/controller/dwc/pcie-rcar-gen4.c

@@ -299,10 +300,27 @@ static void rcar_gen4_pcie_unprepare(struct rcar_gen4_pcie *rcar)

static int rcar_gen4_pcie_get_resources(struct rcar_gen4_pcie *rcar)
{
+ struct device *dev = rcar->dw.dev;
+ struct reset_control *perst;
+
rcar->phy_base = devm_platform_ioremap_resource_byname(rcar->pdev, "phy");
if (IS_ERR(rcar->phy_base))
return PTR_ERR(rcar->phy_base);

+ rcar->perst = NULL;
+ for_each_available_child_of_node_scoped(dev->of_node, of_port) {
+ perst = of_reset_control_get(of_port, "perst");
+ if (IS_ERR(perst)) {
+ if (PTR_ERR(perst) != -EPROBE_DEFER)
+ dev_err(dev, "Failed to get PERST#\n");
+ return PTR_ERR(perst);

return dev_err_probe(...)?

This error condition is triggered on Sparrow Hawk and White Hawk,
as their DTS does not have perst:

pcie-rcar-gen4 e65d0000.pcie: Failed to get PERST#
pcie-rcar-gen4 e65d0000.pcie: probe with driver pcie-rcar-gen4
failed with error -2
I switched to of_reset_control_get_optional_exclusive() and cleaned the reset handling further in V2.