Now I understand the problem much better. I plan to redraw the info
structure in full big endian and to perform the correct translation
(both 16 bit word byte swap and 32 bit word full swap) one for
all in read_pio.
I'll have a patched version in the next few days.
Cheers,
-db
-Original Me
Unfortunately the EATA PIO protocol just works for 16 bits transfers,
so inw is the only option.
le16_to_cpu(inw()) should give the expected result for both BE and LE.
Since the detection routine checks for both "EATA" and "ATAE" signatures,
all should be fine if immediately after the test
if (inf
Inside the driver I consistently use the address
from pci_resource_start(dev, 0) + PCI_BASE_ADDRESS_0.
That's the origin of the 0x10 offset in the io_port compared to
the resource start value.
Apart from this I see your point and it is basically correct.
I'm thinking about using inb() in read_p
I only agree on the fact that if the io_port is specified as a parameter or
boot option pci_enable_device in not called.
This is easily fixed by adding this fragment of code at the
beginning of port_detect:
return FALSE;
}
+ pdev = get_pci_dev(port_base);
+
+ if (pdev && !pci_e
The eata driver really does not care whether it is using an ISA, EISA or PCI
board
as long as it has identified the I/O address where the EATA registers are
available.
The PCI detection routine find out an I/O address, nothing else. If you do
not
specify the io_port=0x1400 parameter at module load,
5 matches
Mail list logo