i tried out libmraa with iot - spi write works fine, lacks a little of perdormance.
I have problems reading from spi - because i always get a copy of the content of the write buffer in the read buffer. I have verified, that the data on receive line is different. I can track it down to libmraa. Libmraa uses the same call into iot for write, write_buf and transfer_buf - so all functions don't work for reading spi. I always get back a copy of the transmit buffer. Maybe for reading the content of the transfer-buffer register is read out instead of the receive-register.
Because low level registers of Intel Edison are documented so purely, i cannot track it further.