I am trying to write a char device driver for Linux kernel 2.4 in which the application passes a pointer to an unsigned int array and a PCI device is supposed to transfer 4MB of image data to such array. I was trying to follow the book "Linux Device Drivers for Kernel 2.4" but I got lost between 'kiobufs', 'ioremap', 'get_free_page', etc... and I want to avoid the "bigphysarea" patch at all cost.

What are the steps that I must follow in my driver's code to accomplish this?