summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2023-04-21 12:14:02 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2023-05-23 09:11:27 +0200
commit299e18703d7c75ab57e5067530f50da2fc39cc0a (patch)
tree4bd1a39c6e814b65ae44f133af7a85596420fd63 /drivers
parent60c6ea8d80bbdbf3b92e789c96d46c781766eec2 (diff)
downloadbarebox-299e18703d7c75ab57e5067530f50da2fc39cc0a.tar.gz
barebox-299e18703d7c75ab57e5067530f50da2fc39cc0a.tar.xz
pci: set upper word for 64bit base addresses
Set the upper word correctly when the PCI address space is outside the 32bit range. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/pci/pci.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 57a7a75f84..3fb3e6165b 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -221,9 +221,11 @@ static void setup_device(struct pci_dev *dev, int max_bar)
}
*last_addr = ALIGN(*last_addr, size);
- pci_write_config_dword(dev, pci_base_address_0, *last_addr);
+ pci_write_config_dword(dev, pci_base_address_0,
+ lower_32_bits(*last_addr));
if (mask & PCI_BASE_ADDRESS_MEM_TYPE_64)
- pci_write_config_dword(dev, pci_base_address_1, 0);
+ pci_write_config_dword(dev, pci_base_address_1,
+ upper_32_bits(*last_addr));
start = *last_addr;
*last_addr += size;
} else {