Re: PATA_ARTOP reads byte from PCI IO port without mapping it tothe right address.

From: Daniel Palmer
Date: Wed Mar 30 2011 - 16:24:47 EST



Is this an ARM machine? The platform specific mach/io.h header

Sorry, I should have mentioned it more explicitly.
The machine is an SH4 based (The processor model is SH7751R, board is landisk.. in /arch/sh/include/mach-landisk/).

You have to ioremap() the physical address 0xfe240000 to a virtual
address, and then add the base address to the number inside of the
__io macro, e.g.


-- snip --

Ok, that makes a lot of sense. This is the first time I've ever touched PCI.
I've looked around and I can't right now see where that matches up with the SH/board specific code but I'll have a better look later.

We've been trying to work this out for a few days.. we were fudging the io port base address in arch/sh/kernel/ioport.c to the start of the PCI space. But we didn't think that was the right thing to be doing.
We have another board with the same processor and e100 NIC that uses the same mapping to 0x1400 and uses io ports but worked fine. So we guessed it was pata_artops use of inb() .. the person that did a lot of changes to this board's code recently also wrote that he thought it was pata_artops fault when I asked on the linux-sh list.


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/