pci: Adjust dm_pci_read_bar32() to return errors correctly
At present if reading a BAR returns 0xffffffff then the value is masked and a different value is returned. This makes it harder to detect the problem when debugging. Update the function to avoid masking in this case. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Wolfgang Wallner <wolfgang.wallner@br-automation.com> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
This commit is contained in:
parent
1630853085
commit
9ece4b090f
@ -1213,7 +1213,14 @@ u32 dm_pci_read_bar32(const struct udevice *dev, int barnum)
|
||||
|
||||
bar = PCI_BASE_ADDRESS_0 + barnum * 4;
|
||||
dm_pci_read_config32(dev, bar, &addr);
|
||||
if (addr & PCI_BASE_ADDRESS_SPACE_IO)
|
||||
|
||||
/*
|
||||
* If we get an invalid address, return this so that comparisons with
|
||||
* FDT_ADDR_T_NONE work correctly
|
||||
*/
|
||||
if (addr == 0xffffffff)
|
||||
return addr;
|
||||
else if (addr & PCI_BASE_ADDRESS_SPACE_IO)
|
||||
return addr & PCI_BASE_ADDRESS_IO_MASK;
|
||||
else
|
||||
return addr & PCI_BASE_ADDRESS_MEM_MASK;
|
||||
|
Loading…
Reference in New Issue
Block a user