pci: Fix configuring io/memory base and limit registers of PCI bridges
authorPali Rohár <pali@kernel.org>
Fri, 10 Sep 2021 11:33:35 +0000 (13:33 +0200)
committerTom Rini <trini@konsulko.com>
Thu, 23 Sep 2021 18:15:32 +0000 (14:15 -0400)
commit8e85f36a8fabb4bd5216f6bfcc9a8224adb63496
tree88d807a4872e12a0df8eefc8463da8af9b286bd5
parentdf3ab898f644db6d8b7337f0a7f0995ecf41b730
pci: Fix configuring io/memory base and limit registers of PCI bridges

Lower 4 bits of PCI_MEMORY_BASE and PCI_MEMORY_LIMIT registers are reserved
and should be zero. So do not set them to non-zero value.

Lower 4 bits of PCI_PREF_MEMORY_BASE and PCI_PREF_MEMORY_LIMIT registers
contain information if 64-bit memory addressing is supported. So preserve
this information when overwriting these registers.

Lower 4 bits of PCI_IO_BASE and PCI_IO_LIMIT register contain information
if 32-bit io addressing is supported. So preserve this information and do
not try to configure 32-bit io addressing (via PCI_IO_BASE_UPPER16 and
PCI_IO_LIMIT_UPPER16 registers) when it is unsupported.

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Stefan Roese <sr@denx.de>
drivers/pci/pci_auto.c