mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-06-13 15:03:58 +03:00
pci: fsl: Do not access PCI BAR0 register of PCIe Root Port
Freescale PCIe Root Port has PEXCSRBAR register at position of PCI BAR0. PCIe Root Port does not have any PCIe memory, so returns zero when trying to read from PCIe Root Port BAR0 and ignore any writes. Signed-off-by: Pali Rohár <pali@kernel.org>
This commit is contained in:
@@ -58,6 +58,14 @@ static int fsl_pcie_read_config(const struct udevice *bus, pci_dev_t bdf,
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Skip Freescale PCIe controller's PEXCSRBAR register */
|
||||
if (PCI_BUS(bdf) - dev_seq(bus) == 0 &&
|
||||
PCI_DEV(bdf) == 0 && PCI_FUNC(bdf) == 0 &&
|
||||
(offset & ~3) == PCI_BASE_ADDRESS_0) {
|
||||
*valuep = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
val = PCI_CONF1_EXT_ADDRESS(PCI_BUS(bdf) - dev_seq(bus),
|
||||
PCI_DEV(bdf), PCI_FUNC(bdf),
|
||||
offset);
|
||||
@@ -95,6 +103,12 @@ static int fsl_pcie_write_config(struct udevice *bus, pci_dev_t bdf,
|
||||
if (fsl_pcie_addr_valid(pcie, bdf))
|
||||
return 0;
|
||||
|
||||
/* Skip Freescale PCIe controller's PEXCSRBAR register */
|
||||
if (PCI_BUS(bdf) - dev_seq(bus) == 0 &&
|
||||
PCI_DEV(bdf) == 0 && PCI_FUNC(bdf) == 0 &&
|
||||
(offset & ~3) == PCI_BASE_ADDRESS_0)
|
||||
return 0;
|
||||
|
||||
val = PCI_CONF1_EXT_ADDRESS(PCI_BUS(bdf) - dev_seq(bus),
|
||||
PCI_DEV(bdf), PCI_FUNC(bdf),
|
||||
offset);
|
||||
|
||||
Reference in New Issue
Block a user