Hello.
Steven Scholz wrote:
Hmm. Don't think so. Since the use of ioremap() I think the MMU treats the
area as none-cacheable, right?
Thats only the first half of the story. If you don't decode byte level
fetches in the FPGA or the code is doing something like
read 16 bit value
shift 8
return half
for 8 bit reads you'll get wrong answers.
I have connected HDD's A[2..0] to CPU's A[3..1] and do something like
for (i = IDE_DATA_OFFSET; i <= IDE_STATUS_OFFSET; i++) {
hw.io_ports[i] = ide_virt_base + (i << 1);
}
thus all HDD registers are accessed on a 16bit aligned address. Thus
ide_inb() should return the correct value.
And btw are things like identify driver use 8bit transfers?
No, 8-bit transfers are used only for taskfile access. The data register
is accessed as 16-bit.
How could one then explain
current capacity is 78140160 sectors would be 0x000004A85300
native capacity is 185074430006016 sectors would be 0xA852FFA85300
? First three bytes ok, then the other three bytes rubbish?
Note that they're not complete garbage but equal the value of the lower 3
bytes minus 1. What is clear is that Read Native Max Address Ext command must
be mistreating the HOB bit... :-)
Steven
MBR, Sergei
-
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html