mpc83xx: PCIe: Fix CONFIG_PCI_SCAN_SHOW reporting bogus values
authorAnton Vorontsov <avorontsov@ru.mvista.com>
Thu, 19 Feb 2009 15:20:44 +0000 (18:20 +0300)
committerKim Phillips <kim.phillips@freescale.com>
Mon, 23 Feb 2009 21:51:59 +0000 (15:51 -0600)
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>
cpu/mpc83xx/pcie.c

index 1a3b2be..77f8906 100644 (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) \
        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)                                    \
 static int pcie_##rw##_config_##size(struct pci_controller *hose,      \
                                     pci_dev_t dev, int offset,         \
@@ -68,8 +71,10 @@ static int pcie_##rw##_config_##size(struct pci_controller *hose,    \
        int ret;                                                        \
                                                                        \
        ret = mpc83xx_pcie_remap_cfg(hose, dev);                        \
-       if (ret)                                                        \
-               return ret;                                             \
+       if (ret) {                                                      \
+               cfg_##rw##_err(val);                                    \
+               return ret;                                             \
+       }                                                               \
        cfg_##rw(val, (void *)hose->cfg_addr + offset, type, op);       \
        return 0;                                                       \
 }