]> git.ipfire.org Git - thirdparty/u-boot.git/commit
pci: pcie-rcar-gen4: Fix inverted break condition in PHY initialization
authorMarek Vasut <marek.vasut+renesas@mailbox.org>
Wed, 24 Sep 2025 01:47:12 +0000 (03:47 +0200)
committerMarek Vasut <marek.vasut+renesas@mailbox.org>
Thu, 25 Sep 2025 21:19:17 +0000 (23:19 +0200)
commiteb69747cd231767098d4ad7957fbedad6a42af99
treeca403f35439b2b7f5d69e10c5fc61552578cc661
parent9c7e61fccc65974fc970c587bddcd5857b334852
pci: pcie-rcar-gen4: Fix inverted break condition in PHY initialization

R-Car V4H Reference Manual R19UH0186EJ0130 Rev.1.30 Apr. 21, 2025 page 4581
Figure 104.3b Initial Setting of PCIEC(example), third quarter of the figure
indicates that register 0xf8 should be polled until bit 18 becomes set to 1.

Register 0xf8 bit 18 is 0 immediately after write to PCIERSTCTRL1 and is set
to 1 in less than 1 ms afterward. The current readl_poll_timeout() break
condition is inverted and returns when register 0xf8 bit 18 is set to 0,
which in most cases means immediately. In case CONFIG_DEBUG_LOCK_ALLOC=y ,
the timing changes just enough for the first readl_poll_timeout() poll to
already read register 0xf8 bit 18 as 1 and afterward never read register
0xf8 bit 18 as 0, which leads to timeout and failure to start the PCIe
controller.

Fix this by inverting the poll condition to match the reference manual
initialization sequence.

Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
drivers/pci/pci-rcar-gen4.c