Looks to me like you forgot to enable the level translator.
Try setting gpio4 to output with a value of 1 to enable it.
How did you measure the speed of the controller ?
I put a read (poll) in a loop recording start ms and end ms. Ran 1000x and took difference end-start /1000
Thanks, I did that and now can read from IO2 and IO3. via SoC.
Running 10000 reads, I get average read time of 1.4 ms vs 3.7 ms.
Still pretty slow considering the underlying hardware.
Must be the file operations for gpio.