
Hello Nick,
On 21/06/2010, at 11:27, Nick Thompson wrote:
The following restructuring and optimisations increase the SPI read performance from 1.3MiB/s (on da850) to 2.87MiB/s (on da830):
Using this patch I get 2.21MiB/s on my L138 EVM (da850), quite an improvement! I would like to see how much my original patch can be improved using some of your changes without splitting the code to handle the three cases. I will try later this week.
[...]
- if (!dout)
return davinci_spi_read(slave, len, din, flags);
- else if (!din)
return davinci_spi_write(slave, len, dout, flags);
+#ifndef CONFIG_SPI_HALF_DUPLEX
- else
return davinci_spi_read_write(slave, len, din, dout, flags);
+#endif
I think there should always be an else branch at the end even if CONFIG_SPI_HALF_DUPLEX is not defined. Something like:
#else flags |= SPI_XFER_END; #endif
to terminate the transfer instead of failing silently. In fact it should signal the error condition somehow, but I do not know enough about u-boot to provide an advice on this.
Thanks -- Delio