Have you searched this board for "QSPI"? There are a lot of previous posts. Some of them might help you or provide links to sample code.
Have you used the higher level search - searching Freescale for QSPI? There are a lot of old App Notes available.
Cue Mark Butcher and uTasker:
http://www.utasker.com/
"The µTasker supports specific network enabled processors and is free to use in educational, hobby and other non-commercial projects.". It has code to run the QSPI parts.
Are you "Educational or Hobby"?
> and if interrupt service is used the service routine must clear QIR[SPIF] to abort the current request
No aborting necessary. The interrupt service routine has to SET (write one to) QIR[SPIF] to clear it. That's all it has to do. Then it can load the next command (or set of commands) into the queue.
I can't give you my code as it belongs to the company I work for, but the basic approach is to:
0 - Initialise the part, including setting QIR[SPIFE] AND setting up the interrupt controller properly,
1 - Load up the queue with commands and data
2 - Write to QDLYR[SPE] as the last thing, this starts the transfer.
3 - Wait until the interrupt happens, then
4 - Read the results out of the queue for the previous transaction
5 - Go back to step 1.
We use it through an address decoder to get to three CAN parts and an ADC on the SPI bus. We used to "launch" 11 ADC conversions in the one command (where each conversion needs 6us to complete), but the 70us that took added too much latency to the CAN service code.
> Does it have receive interrupt as well?
No. The QSPI only operates in Master Mode, so all SPI reception is driven by the transmission. Bits shift in and out at the same time. For ADC chips, a series of conversion commands are written, and you read back the results of conversion "N" while sending the command for conversion "N+1". So the data is available at the end of a transmission.
Tom