]> www.infradead.org Git - users/hch/misc.git/commitdiff
PCI: rcar-gen4: Add missing 1ms delay after PWR reset assertion
authorMarek Vasut <marek.vasut+renesas@mailbox.org>
Fri, 19 Sep 2025 13:45:58 +0000 (15:45 +0200)
committerBjorn Helgaas <bhelgaas@google.com>
Thu, 25 Sep 2025 22:48:00 +0000 (17:48 -0500)
R-Car V4H Reference Manual R19UH0186EJ0130 Rev.1.30 Apr. 21, 2025 page 585
Figure 9.3.2 Software Reset flow (B) indicates that for peripherals in HSC
domain, after reset has been asserted by writing a matching reset bit into
register SRCR, it is mandatory to wait 1ms.

Because it is the controller driver which can determine whether or not the
controller is in HSC domain based on its compatible string, add the missing
delay in the controller driver.

This 1ms delay is documented on R-Car V4H and V4M; it is currently unclear
whether S4 is affected as well. This patch does apply the extra delay on
R-Car S4 as well.

Fixes: 0d0c551011df ("PCI: rcar-gen4: Add R-Car Gen4 PCIe controller support for host mode")
Suggested-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
[mani: added the missing r-b tag from Krzysztof]
Signed-off-by: Manivannan Sadhasivam <mani@kernel.org>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Krzysztof WilczyƄski <kwilczynski@kernel.org>
Link: https://patch.msgid.link/20250919134644.208098-1-marek.vasut+renesas@mailbox.org
drivers/pci/controller/dwc/pcie-rcar-gen4.c

index 366e21bffcbea8069aa3ca4b66c22750733362ca..f996e96be1d704c9621e4ad494ade41793be3025 100644 (file)
@@ -182,8 +182,17 @@ static int rcar_gen4_pcie_common_init(struct rcar_gen4_pcie *rcar)
                return ret;
        }
 
-       if (!reset_control_status(dw->core_rsts[DW_PCIE_PWR_RST].rstc))
+       if (!reset_control_status(dw->core_rsts[DW_PCIE_PWR_RST].rstc)) {
                reset_control_assert(dw->core_rsts[DW_PCIE_PWR_RST].rstc);
+               /*
+                * R-Car V4H Reference Manual R19UH0186EJ0130 Rev.1.30 Apr.
+                * 21, 2025 page 585 Figure 9.3.2 Software Reset flow (B)
+                * indicates that for peripherals in HSC domain, after
+                * reset has been asserted by writing a matching reset bit
+                * into register SRCR, it is mandatory to wait 1ms.
+                */
+               fsleep(1000);
+       }
 
        val = readl(rcar->base + PCIEMSR0);
        if (rcar->drvdata->mode == DW_PCIE_RC_TYPE) {