> > + iowrite16(*(uint16_t *)buffer, data_addr); > > Not seeing the reason to use iowrite16() and not writew() as registers are > always memory mapped... iomap uses iowrite/ioread, writew is for the older ioremap stuff. Mixing them up is not guaranteed to work for all ports. > > + * Get the status of the DMA engine. The results of this function > > + * must emulate the BMDMA engine expected by libata. > > Ugh... At least the IDE core is not so retarded. Nor is libata, but he is piggybacking on the SFF code hence this. Alan