82xx PCI setup ioremapping twice

Kalle Pokki kalle.pokki at iki.fi
Wed Aug 2 17:10:46 EST 2006


Hi,

In pq2_find_bridges(), there is a call to setup_m8260_indirect_pci(),
which ioremaps the configuration address and data registers. The call
uses the cpm2_immr pointer, which however is already ioremapped by
cpm2_reset(). ioremapping these addresses twice seems to always crash
my board, and I need to e.g.

Index: linux-2.6.15.4/arch/ppc/syslib/m82xx_pci.c
===================================================================
--- linux-2.6.15.4.orig/arch/ppc/syslib/m82xx_pci.c     2006-08-02
09:45:54.000000000 +0300
+++ linux-2.6.15.4/arch/ppc/syslib/m82xx_pci.c  2006-08-02
09:46:32.000000000 +0300
@@ -324,7 +324,7 @@
        hose->set_cfg_type = 1;
 #endif

-       setup_m8260_indirect_pci(hose,
+       setup_indirect_pci_nomap(hose,
                                 (unsigned long)&cpm2_immr->im_pci.pci_cfg_addr,
                                 (unsigned
long)&cpm2_immr->im_pci.pci_cfg_data);

or use the physical addresses in the original function call.

Should ioremap() code check for these double mappings? There seems to
be some attempts to do that. I remember the PCI initialisation wasn't
a problem some time before with an earlier kernel version, a different
8248 board, and internal memory at 0xf0000000.

My internal memory is at physical address 0xff000000.
Linux kernel version is 2.6.15.4.
The board is a custom 8247.



More information about the Linuxppc-embedded mailing list