Wayne Gowcher wrote: > > Geert, Pete, > > Thanks for your input, it makes me question things I > should have questioned before. > 0xC000 0000 is the actual address I am trying to use. > I used it because another PCI card that I have a > driver for was using it and so I just carried on its > use. I didnt really question the value or its use. But > obviously it works for that card. And this driver works on mips? When you read the base mem register from this card that works, it says "0xC0000000"? > After your emails I revisited that code and now I > partially understand why it works. The chip has an > internal bus that translates address requests > internally. So when i write to 0xC000 0000 it would > never make to the actual address lines of the chip and > instead be routed to the PCI controller ( I think :) ) I'm not clear on how this works with the good driver. If you write to 0xC000 0000, that's a mips virtual address in the kseg2 region, which is a mapped region. So what physical address you put on the bus when you write to 0xC000 0000 depends on the tlb entry you've setup. If 0xC000 0000 is truly a PCI memory physical address, then you need to setup a tlb entry that maps some virtual address to the physical address 0xC000 0000. I doubt you want to muck with that and would suggest you redo your PCI bus memory map so that the PCI bus is at a lower address, like 0x1000 0000. You can then access physical 0x1000 0000 through virtual address 0xB000 0000 (kseg1). I think you already told me, but what board/CPU are you working with? Pete