One of the limitation of the Nios2 with uClinux is the data storage. Indeed, if you need a large data storage you can instance the alcf component in you design. However you will see (under uClinux) that the data rate will be limited to PIO mode 0 : ~ 2MByte/s. That's the reason why I decided to implement the opencore IDE controler on Nios2 and to write uClinux driver for this interface.
I have translated the OCIDEC3.0 core from Wishbone to Avalon. You can downloaded below. The core has been updated in order to support burst on Avalon bus. The driver for Linux has been done (libata subsytem) and tested on Linux 2.6.30. It is easly portable to newer version (almost no work at all)
To integrate the driver in your kernel tree just copy the pata_ocidec.c file into linux-2.6/drivers/ata folder Modify the Makefile in the ata folder by adding this line $(CONFIG_PATA_OCIDEC) += pata_ocidec.o
Modify the Kconfig file in the ata folder by adding this: