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