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
|