mpc83xx: PCIe: Fix CONFIG_PCI_SCAN_SHOW reporting bogus values

This patch fixes an issue in config space read accessors: we should
fill-in the value even if we fail (e.g. skipping devices), otherwise
CONFIG_PCI_SCAN_SHOW reports bogus values during boot up.

Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com>
Signed-off-by: Kim Phillips <kim.phillips@freescale.com>
This commit is contained in:
Anton Vorontsov 2009-02-19 18:20:44 +03:00 committed by Kim Phillips
parent e2d72ba543
commit b24a99f666

View File

@ -60,6 +60,9 @@ static int mpc83xx_pcie_remap_cfg(struct pci_controller *hose, pci_dev_t dev)
#define cfg_write(val, addr, type, op) \ #define cfg_write(val, addr, type, op) \
do { op((type *)(addr), (val)); } while (0) do { op((type *)(addr), (val)); } while (0)
#define cfg_read_err(val) do { *val = -1; } while (0)
#define cfg_write_err(val) do { } while (0)
#define PCIE_OP(rw, size, type, op) \ #define PCIE_OP(rw, size, type, op) \
static int pcie_##rw##_config_##size(struct pci_controller *hose, \ static int pcie_##rw##_config_##size(struct pci_controller *hose, \
pci_dev_t dev, int offset, \ pci_dev_t dev, int offset, \
@ -68,8 +71,10 @@ static int pcie_##rw##_config_##size(struct pci_controller *hose, \
int ret; \ int ret; \
\ \
ret = mpc83xx_pcie_remap_cfg(hose, dev); \ ret = mpc83xx_pcie_remap_cfg(hose, dev); \
if (ret) \ if (ret) { \
return ret; \ cfg_##rw##_err(val); \
return ret; \
} \
cfg_##rw(val, (void *)hose->cfg_addr + offset, type, op); \ cfg_##rw(val, (void *)hose->cfg_addr + offset, type, op); \
return 0; \ return 0; \
} }