On 21/06/10 19:38, Delio Brignoli wrote: > 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.
Not testing the txp and rxp pointers in the loop was a significant gain for me and pipe-lining the TX and RX operations is going to be a little trickier, but give it a go by all means. > > [...] >> + 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 Hmmm, yes, you are correct. That must be added, else in the unexpected case, the transaction will be opened and left open. I'll fix that. > > 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. I think maybe a printk(KERN_ERR ...) will do it. I'll add that too. > > Thanks > -- > Delio Thanks for the review. Nick. _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot