The unified IDE patches provide support for many chipsets and offboard cards, and are available for 2.0.x, 2.2.x, and the 2.3.x development kernels. If your chipset isn't supported by a current stock kernel, you'll want to patch it with these.
The unified IDE code is maintained by Andre Hedrick, and patches are available at your local kernel archive mirror.
UDMA support is provided for at least the following chipsets, and probably many more I don't know about:
It is also designed to be easy to extend to support other chipsets.
Here are a few notes from Andre Balsa, the author of an earlier patch:
Performance with IBM UDMA drives on a good motherboard approches the maximum head transfer rates: about 10 Mb/s (measured with hdparm -t -T). The Intel TX chipset has a single FIFO for hard disk data shared by its two IDE interfaces, so using 2 UDMA drives will not yield such a great improvement over a single UDMA drive. However, the SiS5598 has two completely separate interfaces, each with its own FIFO. Theoretically, one could approach 66Mb/s burt transfer rates on motherboards with the SiS5598 chip, using the md driver and data striping over two drives. The SiS5571 has the same interface architecture, I think. I don't have the VIA chipsets datasheets, so I can't say anything about those. The Linux IDE (U)DMA kernel driver by Mark Lord has a particularly low setup time (i.e. latency for data transfers). It is ideal for frequent, small data transfers (such as those in Linux news servers), and might be in some cases superior to its SCSI counterparts.